{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/chainflip-broker-io/json-schema/chainflip-broker-io-chainflip-baas-infrastructure-http-onboarding-document-schema.json",
  "title": "ChainflipBaas.Infrastructure.Http.OnboardingDocument",
  "description": "The onboarding facts, for agents deciding whether and how to start: what works without a key, how to get\none, the sandbox and a first call. Every claim carries URLs you can fetch anonymously to verify it.",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/chainflip-broker-io-openapi.json#/components/schemas/ChainflipBaas.Infrastructure.Http.OnboardingDocument",
  "type": "object",
  "properties": {
    "service": {
      "type": "string",
      "description": "The service name."
    },
    "noKeyNeeded": {
      "$ref": "#/$defs/ChainflipBaas.Infrastructure.Http.NoKeyAccess"
    },
    "apiKeys": {
      "$ref": "#/$defs/ChainflipBaas.Infrastructure.Http.ApiKeyOnboarding"
    },
    "sandbox": {
      "$ref": "#/$defs/ChainflipBaas.Infrastructure.Http.SandboxEnvironment"
    },
    "firstCall": {
      "$ref": "#/$defs/ChainflipBaas.Infrastructure.Http.FirstCall"
    },
    "openApi": {
      "type": "string",
      "description": "The OpenAPI document of this API."
    },
    "llmsTxt": {
      "type": "string",
      "description": "The llms.txt index for agents."
    },
    "documentation": {
      "type": [
        "string",
        "null"
      ],
      "description": "The getting-started guide, when a docs site is configured."
    },
    "pricing": {
      "$ref": "#/$defs/ChainflipBaas.Infrastructure.Http.PricingSummary"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "ChainflipBaas.Infrastructure.Http.ApiKeyOnboarding": {
      "type": "object",
      "properties": {
        "selfServe": {
          "type": "boolean",
          "description": "True: keys are issued by a self-serve signup, no sales contact."
        },
        "requiredFor": {
          "type": "string",
          "description": "Which calls need a key."
        },
        "signupUrl": {
          "type": "string",
          "description": "The signup page."
        },
        "signup": {
          "type": "string",
          "description": "What the signup asks for."
        },
        "secret": {
          "type": "boolean",
          "description": "False: the API key identifies an account and may be shared."
        },
        "description": {
          "type": "string",
          "description": "What the key is."
        },
        "verify": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs that show the signup is live."
        }
      },
      "additionalProperties": false,
      "description": "How to get an API key."
    },
    "ChainflipBaas.Infrastructure.Http.FirstCall": {
      "type": "object",
      "properties": {
        "method": {
          "type": "string",
          "description": "The HTTP method."
        },
        "url": {
          "type": "string",
          "description": "The URL to call."
        },
        "authentication": {
          "type": "string",
          "description": "Always \"none\"."
        },
        "curl": {
          "type": "string",
          "description": "The same request as a curl command."
        }
      },
      "additionalProperties": false,
      "description": "A first request that needs no key."
    },
    "ChainflipBaas.Infrastructure.Http.NoKeyAccess": {
      "type": "object",
      "properties": {
        "available": {
          "type": "boolean",
          "description": "Always true: keyless access exists."
        },
        "description": {
          "type": "string",
          "description": "What works without a key."
        },
        "mcpServer": {
          "type": "string",
          "description": "The MCP server, keyless for every tool."
        },
        "verify": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Keyless URLs that answer 200 anonymously."
        }
      },
      "additionalProperties": false,
      "description": "What works with no API key or account at all."
    },
    "ChainflipBaas.Infrastructure.Http.PricingSummary": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "The pricing in one sentence."
        },
        "documentation": {
          "type": "string",
          "description": "The pricing page."
        }
      },
      "additionalProperties": false,
      "description": "How pricing works."
    },
    "ChainflipBaas.Infrastructure.Http.SandboxEnvironment": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Which environment."
        },
        "description": {
          "type": "string",
          "description": "How it differs from production."
        },
        "apiBaseUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Its API base URL (clearnet only)."
        },
        "verify": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs that show the sandbox is live."
        },
        "documentation": {
          "type": [
            "string",
            "null"
          ],
          "description": "Its documentation page, when a docs site is configured."
        }
      },
      "additionalProperties": false,
      "description": "The test environment."
    }
  }
}