{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/asoskill-com/json-schema/asoskill-com-api-discovery-response-schema.json",
  "title": "ApiDiscoveryResponse",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/asoskill-com-openapi.yaml#/components/schemas/ApiDiscoveryResponse",
  "type": "object",
  "required": [
    "name",
    "service",
    "version",
    "description",
    "documentation",
    "openapi",
    "llms",
    "health",
    "mcp",
    "versioning",
    "authentication",
    "endpoints"
  ],
  "properties": {
    "name": {
      "type": "string",
      "const": "ASO Skill Developer API"
    },
    "service": {
      "type": "string",
      "const": "aso-skill"
    },
    "version": {
      "type": "string",
      "const": "v1"
    },
    "description": {
      "type": "string"
    },
    "documentation": {
      "type": "string",
      "format": "uri"
    },
    "openapi": {
      "type": "string",
      "format": "uri"
    },
    "llms": {
      "type": "string",
      "format": "uri"
    },
    "health": {
      "type": "string",
      "format": "uri"
    },
    "mcp": {
      "type": "object",
      "required": [
        "transport",
        "url",
        "documentation",
        "authentication"
      ],
      "properties": {
        "transport": {
          "type": "string",
          "const": "streamable-http"
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "documentation": {
          "type": "string",
          "format": "uri"
        },
        "authentication": {
          "type": "string",
          "const": "oauth"
        }
      }
    },
    "versioning": {
      "type": "object",
      "required": [
        "current",
        "strategy",
        "policy"
      ],
      "additionalProperties": false,
      "properties": {
        "current": {
          "type": "string",
          "const": "v1"
        },
        "strategy": {
          "type": "string"
        },
        "policy": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "authentication": {
      "type": "object",
      "required": [
        "type",
        "createApiKeyAt",
        "guidance"
      ],
      "properties": {
        "type": {
          "type": "string",
          "const": "http-bearer"
        },
        "createApiKeyAt": {
          "type": "string",
          "format": "uri"
        },
        "guidance": {
          "type": "string"
        },
        "agentLogin": {
          "type": "object",
          "required": [
            "method",
            "path",
            "verificationUrl"
          ],
          "properties": {
            "method": {
              "type": "string",
              "const": "POST"
            },
            "path": {
              "type": "string",
              "const": "/v1/auth/device"
            },
            "verificationUrl": {
              "type": "string",
              "format": "uri"
            }
          }
        }
      }
    },
    "endpoints": {
      "type": "object",
      "required": [
        "search",
        "autocomplete",
        "popularity",
        "appLookup",
        "credits",
        "billingPacks"
      ],
      "properties": {
        "search": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "autocomplete": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "popularity": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "appLookup": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "credits": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "billingPacks": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        },
        "agentLogin": {
          "$ref": "#/$defs/ApiDiscoveryEndpoint"
        }
      }
    }
  },
  "$defs": {
    "ApiDiscoveryEndpoint": {
      "type": "object",
      "required": [
        "method",
        "path",
        "creditsOnSuccess"
      ],
      "properties": {
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "POST"
          ]
        },
        "path": {
          "type": "string"
        },
        "creditsOnSuccess": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1
        },
        "authenticationRequired": {
          "type": "boolean",
          "default": true
        }
      }
    }
  }
}