Facets · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Facets Control Plane API

5 actions 5 updates update extends openapi/facets-control-plane-openapi.yml
Derived by API Evangelist Built from the contracts Facets publishes. Facets did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-providerx-apievangelist-harvestedx-apievangelist-sourcex-apievangelist-productx-apievangelist-base-url-templatex-apievangelist-base-url-notex-apievangelist-surface-countx-apievangelist-surface-note

Targets 3

$.info
$.components.securitySchemes.basicAuth
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Facets Control Plane API
  version: 1.0.0
extends: openapi/facets-control-plane-openapi.yml
x-provenance:
  generated: '2026-09-07'
  method: generated
  source: >-
    API Evangelist enrichment pass. Captures our findings ABOUT the harvested spec without
    mutating openapi/_original/facets-control-plane-openapi.json, which stays byte-identical
    to what https://facetsdemo.console.facets.cloud/v3/api-docs served on 2026-09-07.
actions:
  - target: $.info
    description: Record provenance, the real product name, and the templated base URL the docs state.
    update:
      x-apievangelist-provider: facets
      x-apievangelist-harvested: '2026-09-07'
      x-apievangelist-source: https://facetsdemo.console.facets.cloud/v3/api-docs
      x-apievangelist-product: Facets Control Plane
      x-apievangelist-base-url-template: https://{account-id}.console.facets.cloud
      x-apievangelist-base-url-note: >-
        servers[] names the Facets demo tenant because springdoc generates it from the host
        that served the document. Facets documents the real base as your own control plane
        host - "https://myorg.console.facets.cloud" - at
        https://www.facets.cloud/docs/api. The demo host is a live first-party Facets
        deployment, not a third-party one, so the spec's self-description and its fetch URL
        agree; only the tenant is a placeholder.
      x-apievangelist-surface-count: 2
      x-apievangelist-surface-note: >-
        Facets publishes two OpenAPI surfaces. This one (/v3/api-docs, Deployment
        Controller) is served anonymously. The second (/cc/v3/api-docs, Artifact
        Management, documented at
        https://www.facets.cloud/docs/api/artifact-management) returns HTTP 401 to an
        unauthenticated fetch and is therefore NOT in this repository.
  - target: $.info
    description: Point at the human documentation, which the generated spec omits entirely.
    update:
      x-apievangelist-documentation: https://www.facets.cloud/docs
      x-apievangelist-api-reference: https://www.facets.cloud/docs/api
      x-apievangelist-authentication-docs: https://www.facets.cloud/docs/api/recipes/authentication-setup
      x-apievangelist-changelog: https://www.facets.cloud/docs/changelog
  - target: $.components.securitySchemes.basicAuth
    description: Say what the Basic credentials actually are - the spec only says "Basic Authentication".
    update:
      x-apievangelist-username: The email address you sign in to the Facets Control Plane with.
      x-apievangelist-password: >-
        A personal access token generated in the Control Plane under Account Settings ->
        Personal Token. Shown once at creation and not retrievable afterwards.
      x-apievangelist-token-page: <control-plane-url>/v2/home#personal-access-tokens
      x-apievangelist-ci-env-vars: [FACETS_USERNAME, FACETS_TOKEN, CONTROL_PLANE_URL]
  - target: $
    description: Record the cross-cutting conventions we measured across all 629 operations.
    update:
      x-apievangelist-conventions:
        error_envelope: '{code, message} - components.schemas.ErrorDetails. NOT RFC 9457; no application/problem+json anywhere in the document.'
        error_statuses: [400, 403, 404, 405, 409, 500]
        error_uniformity: All 627 tagged operations declare the identical six error responses.
        idempotency: none - no Idempotency-Key header, parameter or extension appears in the document.
        pagination: inconsistent - offset/limit/sort on /cc-ui/v1/artifactHub/search-packages, size on /cc-ui/v1/audit-logs, page on /cc-ui/v1/stacks/clusters, nothing elsewhere.
        rate_limit_headers: none declared.
        deprecation_headers: none - no Sunset or Deprecation response header is declared, though 14 operations carry deprecated:true.
  - target: $
    description: Flag the unauthenticated public surface, which is useful to an agent deciding what it can call before login.
    update:
      x-apievangelist-public-operations:
        - healthCheck
        - getLoginOptions
        - getSamlLoginOptions
        - getAllFeatureProperties
        - getModuleSchema
        - getModuleSchemaByType
        - getLogo
        - retrieveThemeFile
      x-apievangelist-public-note: >-
        These sit under /public/v1 and describe the control plane before authentication. Every
        other operation in the document requires HTTP Basic credentials.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/facets-control-plane-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.