{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/clarifai/refs/heads/main/json-schema/apiModel.json",
  "title": "apiModel",
  "description": "This is the Model object which represents a created model in the platform.\nEach model has a particular type denoted by the model_type_id.\nWhen creating a Model with PostModels the following happens:\n - if the ModelType is trainable, then a new ModelVersion is created that is\n   - UNTRAINED status by default\n   - TRAINED status if a ModelVersion was included with PretrainedModelConfig in PostModels\n - if the ModelType is not trainable, then a new ModelVersion is created with TRAINED status.\nTo modify config settings like OutputInfo for the Model you an use PatchModels. This will\nalso create a new ModelVersion, potentially UNTRAINED following the same rules as above.\nThe fields that are patchable include Model.name, Model.display_name and Model.output_info\n(except the Model.output_info.type and Model.output_info.type_ext).",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The model's ID. Must be unique within a particular app and URL-friendly."
    },
    "name": {
      "type": "string",
      "description": "DEPRECATED: Please use the model id to name the model."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "title": "When the model was created. We follow the XXXX timestamp\nformat. We use https://www.ietf.org/rfc/rfc3339.txt format:\n\"2006-01-02T15:04:05.999999Z\" so you can expect results like\n the following from the API:\n \"2017-04-11T21:50:50.223962Z\""
    },
    "modified_at": {
      "type": "string",
      "format": "date-time",
      "title": "When was the most recent model version created at"
    },
    "app_id": {
      "type": "string",
      "description": "The app the model belongs to."
    },
    "output_info": {
      "$ref": "#/definitions/apiOutputInfo",
      "title": "Info about the model's output and configuration.\nDEPRECATED: Will be moved to model version"
    },
    "model_version": {
      "$ref": "#/definitions/apiModelVersion",
      "description": "A particular version of the model, e.g., to specify the version when creating a workflow or\nwhen listing Models to include the latest ModelVersion of the model in the response."
    },
    "display_name": {
      "type": "string",
      "description": "DEPRECATED: Please use the model id to name the model."
    },
    "user_id": {
      "type": "string",
      "description": "The user id that the model belongs to."
    },
    "default_eval_info": {
      "$ref": "#/definitions/apiEvalInfo",
      "description": "The default evaluation info. Can be overwritten by eval request."
    },
    "model_type_id": {
      "type": "string",
      "description": "The ModelType.Id that is used for this model. This is used for all versions and you cannot\nchange model_type_id between versions of the same model."
    },
    "task": {
      "type": "string",
      "title": "The task the model was trained to do"
    },
    "visibility": {
      "$ref": "#/definitions/clarifaiapiVisibility",
      "description": "The visibility field represents whether this message is privately/publicly visible.\nTo be visible to the public the App that contains it AND the User that contains the App must\nalso be publicly visible."
    },
    "description": {
      "type": "string",
      "title": "Short description about this model"
    },
    "metadata": {
      "type": "object",
      "title": "To handle arbitrary json metadata you can use a struct field:\nhttps://github.com/google/protobuf/blob/master/src/google/protobuf/struct.proto"
    },
    "presets": {
      "type": "object"
    },
    "notes": {
      "type": "string",
      "description": "Notes for the model\nThis field should be used for in-depth notes and supports up to 64Kbs."
    },
    "toolkits": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Tags from toolkits category"
    },
    "use_cases": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Tags from use_cases category"
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags from languages category."
    },
    "languages_full": {
      "type": "array",
      "items": {
        "type": "object",
        "$ref": "#/definitions/apiFullTag"
      },
      "description": "Tags from languages category with names, only used in responses."
    },
    "check_consents": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "is_starred": {
      "type": "boolean",
      "title": "Is starred by the requesting user (only showed on get/list requests)\nPlease use PostModelStars/DeleteModelStars endpoints to star/unstar a model"
    },
    "star_count": {
      "type": "integer",
      "format": "int32",
      "title": "How many users have starred the model (only showed on get/list requests)\nComputed value, not editable"
    },
    "workflow_recommended": {
      "type": "boolean",
      "title": "Whether it's recommended that this model is used within a workflow"
    },
    "bookmark_origin": {
      "$ref": "#/definitions/apiBookmarkOrigin",
      "description": "bookmark info. When set, this model is a bookmarked model of this app.\nInfo in this field will allow you to find/access original model."
    },
    "image": {
      "$ref": "#/definitions/apiImage",
      "title": "Representative image for this model"
    },
    "license_type": {
      "$ref": "#/definitions/apiLicenseType",
      "title": "License Type"
    },
    "source": {
      "$ref": "#/definitions/ModelSource"
    },
    "creator": {
      "type": "string",
      "title": "Creator of Model"
    },
    "version_count": {
      "type": "integer",
      "format": "int32"
    },
    "billing_type": {
      "$ref": "#/definitions/ModelBillingType"
    },
    "featured_order": {
      "type": "integer",
      "format": "int32",
      "description": "Whether the model should be featured, and if so, the order in which it should be featured.\nThe order is relative to other models that are also featured.\nModels with a higher order will be featured first."
    },
    "deploy_restriction": {
      "$ref": "#/definitions/apiDeployRestriction",
      "description": "Deploy restriction for the model."
    },
    "replica_count": {
      "type": "integer",
      "format": "int64",
      "description": "replica_count indicates the number of deployed model replicas.\nThis field is populated when `show_replicas` is true in ListModelsRequest."
    },
    "open_router_info": {
      "$ref": "#/definitions/apiOpenRouterInfo",
      "title": "OpenRouter Info for the model"
    }
  }
}