{"openapi":"3.1.0","info":{"title":"Harness Artifact Registry (BYOK) API","version":"0.1.0","description":"Harness Artifact Registry (BYOK) lets an AI assistant read your own Harness Artifact Registry data through the Harness Artifact Registry API with a key you supply (Harness personal access token or service account token). Read-only: 8 tools (list_registries, list_packages, list_package_versions, list_lifecycle_rules, get_lifecycle_stats, list_lifecycle_executions, list_artifact_scans,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-harness-artifacts.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-harness-artifacts/docs"},"termsOfService":"https://connectorbay.com/byok-harness-artifacts/terms"},"servers":[{"url":"https://byok-harness-artifacts.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-harness-artifacts/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_registries":{"post":{"operationId":"list_registries","summary":"List Artifact Registry registries (virtual and upstream) of an account, organization or project with package type, visib","description":"List Artifact Registry registries (virtual and upstream) of an account, organization or project with package type, visibility and last change. Creator and modifier names are left out. Use for \"Which artifact registries do I have in Harness\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"type":{"anyOf":[{"enum":["VIRTUAL","UPSTREAM"],"type":"string"},{"type":"null"}],"default":null,"description":"Only registries of this type.","title":"Type"},"scope":{"anyOf":[{"enum":["none","ancestors","descendants"],"type":"string"},{"type":"null"}],"default":null,"description":"none for only this scope (default), ancestors to include parent scopes, descendants to include child scopes.","title":"Scope"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_registriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_packages":{"post":{"operationId":"list_packages","summary":"List packages (container images, Helm charts, npm and Maven packages ...) across registries with type, latest version, r","description":"List packages (container images, Helm charts, npm and Maven packages ...) across registries with type, latest version, registry and quarantine status. Use for \"Which packages are stored in my Harness artifact registries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"package_kind":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this package kind (used for Hugging Face model, dataset and space packages).","title":"Package Kind"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_packagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_package_versions":{"post":{"operationId":"list_package_versions","summary":"List versions of packages with registry, package type, pull command, quarantine flag and times. Uploader names are left ","description":"List versions of packages with registry, package type, pull command, quarantine flag and times. Uploader names are left out. Use for \"What versions of my packages are in Harness Artifact Registry\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"registry_type":{"anyOf":[{"enum":["VIRTUAL","UPSTREAM"],"type":"string"},{"type":"null"}],"default":null,"description":"Only versions in registries of this type.","title":"Registry Type"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_package_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_lifecycle_rules":{"post":{"operationId":"list_lifecycle_rules","summary":"List artifact retention (lifecycle) rules with action (DELETE or PROTECT), schedule, criteria, scope and last and next r","description":"List artifact retention (lifecycle) rules with action (DELETE or PROTECT), schedule, criteria, scope and last and next run times. Use for \"Which cleanup rules does my Harness artifact registry have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"action":{"anyOf":[{"enum":["DELETE","PROTECT"],"type":"string"},{"type":"null"}],"default":null,"description":"Only rules with this action.","title":"Action"},"scope":{"anyOf":[{"enum":["none","ancestors","descendants"],"type":"string"},{"type":"null"}],"default":null,"description":"none for only this scope (default), ancestors to include parent scopes, descendants to include child scopes.","title":"Scope"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_lifecycle_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_lifecycle_stats":{"post":{"operationId":"get_lifecycle_stats","summary":"Get the totals for artifact lifecycle rules: artifacts cleaned, storage reclaimed and runs in the last 30 days. Use for ","description":"Get the totals for artifact lifecycle rules: artifacts cleaned, storage reclaimed and runs in the last 30 days. Use for \"How much storage have my Harness artifact cleanup rules reclaimed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"action":{"anyOf":[{"enum":["DELETE","PROTECT"],"type":"string"},{"type":"null"}],"default":null,"description":"Only rules with this action.","title":"Action"},"scope":{"anyOf":[{"enum":["none","ancestors","descendants"],"type":"string"},{"type":"null"}],"default":null,"description":"none for only this scope (default), ancestors to include parent scopes, descendants to include child scopes.","title":"Scope"}},"required":["account_identifier"],"title":"get_lifecycle_statsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_lifecycle_executions":{"post":{"operationId":"list_lifecycle_executions","summary":"List runs of artifact lifecycle rules with status (PENDING, INPROGRESS, SUCCESS, FAILED), trigger type, versions deleted","description":"List runs of artifact lifecycle rules with status (PENDING, INPROGRESS, SUCCESS, FAILED), trigger type, versions deleted and storage reclaimed. Use for \"Did the last Harness artifact cleanup run succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"status":{"anyOf":[{"enum":["PENDING","INPROGRESS","SUCCESS","FAILED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only runs with this status.","title":"Status"},"scope":{"anyOf":[{"enum":["none","ancestors","descendants"],"type":"string"},{"type":"null"}],"default":null,"description":"none for only this scope (default), ancestors to include parent scopes, descendants to include child scopes.","title":"Scope"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_lifecycle_executionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_artifact_scans":{"post":{"operationId":"list_artifact_scans","summary":"List artifact firewall scan results with scan status (BLOCKED or WARN), violation categories (Security, License, Malicio","description":"List artifact firewall scan results with scan status (BLOCKED or WARN), violation categories (Security, License, MaliciousPackage ...), package and registry. Use for \"Which packages did the Harness artifact firewall block\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"},"org_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Organization identifier, for example 'default'. Leave out for account-level registries.","title":"Org Identifier"},"project_identifier":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Project identifier (needs org_identifier). Leave out for organization-level registries.","title":"Project Identifier"},"scan_status":{"anyOf":[{"enum":["ALLOWED","BLOCKED","WARN","UNKNOWN"],"type":"string"},{"type":"null"}],"default":null,"description":"Only scans with this status.","title":"Scan Status"},"scope":{"anyOf":[{"enum":["none","ancestors","descendants"],"type":"string"},{"type":"null"}],"default":null,"description":"none for only this scope (default), ancestors to include parent scopes, descendants to include child scopes.","title":"Scope"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in names.","title":"Search Term"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100, default 20).","title":"Size"}},"required":["account_identifier"],"title":"list_artifact_scansArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_package_type_configs":{"post":{"operationId":"list_package_type_configs","summary":"List which package types (Docker, Helm, npm, Maven ...) the account supports and their capabilities. Use for \"Which pack","description":"List which package types (Docker, Helm, npm, Maven ...) the account supports and their capabilities. Use for \"Which package types does Harness Artifact Registry support for my account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_identifier":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Identifier","type":"string"}},"required":["account_identifier"],"title":"list_package_type_configsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}