{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/api-stock-com/json-schema/api-stock-com-catalog-model-dto-schema.json",
  "title": "CatalogModelDto",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/api-stock-com-openapi.json#/components/schemas/CatalogModelDto",
  "type": "object",
  "properties": {
    "pageUpdatedAt": {
      "type": "string",
      "description": "Observed significant public content change, ISO 8601; omitted until a change is recorded"
    },
    "id": {
      "type": "string",
      "description": "Public model id, also used as the URL slug"
    },
    "group": {
      "type": "string",
      "description": "Routing group shared by related models"
    },
    "name": {
      "type": "string",
      "description": "Display name"
    },
    "description": {
      "type": "string",
      "description": "Marketing description"
    },
    "descriptionLocales": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Marketing descriptions keyed by locale, for example { en: \"…\", ru: \"…\" }"
    },
    "type": {
      "type": "string",
      "description": "Generation type",
      "enum": [
        "TEXT",
        "MUSIC",
        "IMAGE",
        "VIDEO"
      ]
    },
    "kind": {
      "type": "string",
      "description": "Media generation model or LLM chat model",
      "enum": [
        "media",
        "llm"
      ]
    },
    "vendor": {
      "type": "string",
      "description": "Upstream vendor, e.g. Google"
    },
    "releasedAt": {
      "type": "string",
      "description": "Date the vendor released the model, `YYYY-MM-DD`; absent when never announced"
    },
    "tags": {
      "description": "Catalog tags",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "capabilities": {
      "description": "Capability tags derived from the model's parameters",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pricing": {
      "description": "Price table; empty when the model has no published price",
      "type": "array",
      "items": {
        "$ref": "#/$defs/CatalogPriceDto"
      }
    },
    "priceFrom": {
      "type": "string",
      "description": "Headline price in USD, in the same unit as `pricing` (see `priceUnit`): the base-tier price for media models (or the cheapest complete tariff variant when no base tier resolves), the input-token rate for chat models"
    },
    "priceUnit": {
      "type": "string",
      "description": "What one price in `pricing` and `priceFrom` buys: a whole generation, one second of output (per-second video tariffs) or 1M tokens (chat models)",
      "enum": [
        "generation",
        "second",
        "megatoken"
      ]
    },
    "params": {
      "description": "Input parameters, in the order the form should render them",
      "type": "array",
      "items": {
        "$ref": "#/$defs/CatalogParamFieldDto"
      }
    },
    "protocols": {
      "type": "array",
      "description": "Wire protocols available for an LLM model",
      "items": {
        "type": "string",
        "enum": [
          "openai",
          "anthropic"
        ]
      }
    }
  },
  "required": [
    "id",
    "group",
    "name",
    "type",
    "kind",
    "tags",
    "capabilities",
    "pricing",
    "priceUnit",
    "params"
  ],
  "$defs": {
    "CatalogParamFieldDto": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Field name as sent in `input`"
        },
        "label": {
          "type": "string",
          "description": "Label for the form control"
        },
        "description": {
          "type": "string",
          "description": "Field description"
        },
        "kind": {
          "type": "string",
          "description": "Scalar kind of the field (of its items when `isArray`)",
          "enum": [
            "string",
            "number",
            "boolean",
            "object"
          ]
        },
        "isArray": {
          "type": "boolean",
          "description": "Whether the field accepts a list of values"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the field is mandatory"
        },
        "default": {
          "description": "Default value, if any",
          "nullable": true,
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "array",
              "items": {}
            }
          ]
        },
        "options": {
          "description": "Allowed values — render as a select",
          "type": "array",
          "items": {
            "$ref": "#/$defs/CatalogParamOptionDto"
          }
        },
        "minimum": {
          "type": "number"
        },
        "maximum": {
          "type": "number"
        },
        "maxLength": {
          "type": "number"
        },
        "isMedia": {
          "type": "boolean",
          "description": "Field holds a URL of user-supplied media"
        },
        "isPrompt": {
          "type": "boolean",
          "description": "Field is the model's main prompt"
        },
        "multiline": {
          "type": "boolean",
          "description": "Render as a textarea rather than an input"
        },
        "deprecated": {
          "type": "boolean",
          "description": "Field is kept for compatibility only"
        }
      },
      "required": [
        "name",
        "label",
        "kind",
        "isArray",
        "required",
        "isMedia",
        "isPrompt",
        "multiline",
        "deprecated"
      ]
    },
    "CatalogParamOptionDto": {
      "type": "object",
      "properties": {
        "value": {
          "description": "Value sent to the API",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        },
        "label": {
          "type": "string",
          "description": "Human-readable label"
        }
      },
      "required": [
        "value",
        "label"
      ]
    },
    "CatalogPriceDto": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "Cost key from the model catalog (\"default\", a resolution, a size…)"
        },
        "price": {
          "type": "string",
          "description": "Price in USD, as a string, for one unit of `CatalogModelDto.priceUnit` — a whole generation, one second of output or 1M tokens"
        },
        "isDefault": {
          "type": "boolean",
          "description": "Whether this is the model's base tier: what a request that sets no parameters is billed"
        },
        "dimensions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resolved tariff dimensions for this price; present for matrix tariffs"
        }
      },
      "required": [
        "key",
        "price",
        "isDefault"
      ]
    }
  }
}