{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api.wealthglider.com/schemas/credential-v1.json",
  "title": "WealthGlider Credential API v1",
  "$defs": {
    "Scope": {
      "type": "string",
      "enum": ["daily_recommendations:read", "historical_recommendations:read", "account:read"]
    },
    "Credential": {
      "type": "object",
      "additionalProperties": false,
      "required": ["credential_id", "name", "prefix", "scopes", "created_at", "expires_at", "last_used_at", "revoked_at"],
      "properties": {
        "credential_id": { "type": "string", "pattern": "^cred_[A-Za-z0-9_-]{16,128}$" },
        "name": { "type": "string", "minLength": 1, "maxLength": 100 },
        "prefix": { "type": "string", "minLength": 4, "maxLength": 24 },
        "scopes": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/Scope" }
        },
        "created_at": { "type": "string", "format": "date-time" },
        "expires_at": { "type": ["string", "null"], "format": "date-time" },
        "last_used_at": { "type": ["string", "null"], "format": "date-time" },
        "revoked_at": { "type": ["string", "null"], "format": "date-time" }
      }
    },
    "CreateRequest": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name", "scopes", "expires_at"],
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 100 },
        "scopes": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/Scope" }
        },
        "expires_at": { "type": ["string", "null"], "format": "date-time" }
      }
    },
    "CreatedResponse": {
      "type": "object",
      "additionalProperties": false,
      "required": ["schema_version", "credential", "secret", "request_id"],
      "properties": {
        "schema_version": { "const": "credential-v1" },
        "credential": { "$ref": "#/$defs/Credential" },
        "secret": { "type": "string", "pattern": "^wg_(test|live)_[A-Za-z0-9_-]{24,256}$" },
        "request_id": { "$ref": "./common-v1.json#/$defs/RequestId" }
      }
    },
    "ListResponse": {
      "type": "object",
      "additionalProperties": false,
      "required": ["schema_version", "credentials", "request_id"],
      "properties": {
        "schema_version": { "const": "credential-list-v1" },
        "credentials": {
          "type": "array",
          "items": { "$ref": "#/$defs/Credential" }
        },
        "request_id": { "$ref": "./common-v1.json#/$defs/RequestId" }
      }
    }
  }
}
