---
components:
  schemas:
    ListModelsResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
        data:
          type: array
          items:
            $ref: "#/components/schemas/Model"
      required:
        - object
        - data
    Model:
      type: object
      properties:
        source_url:
          type: string
          format: uri
          description: URL to the source of the model.
          example: https://huggingface.co/janhq/trinity-v1.2-GGUF/resolve/main/trinity-v1.2.Q4_K_M.gguf
        id:
          type: string
          description:
            Unique identifier used in chat-completions model_name, matches
            folder name.
          example: trinity-v1.2-7b
        object:
          type: string
          example: model
        name:
          type: string
          description: Name of the model.
          example: Trinity-v1.2 7B Q4
        version:
          type: string
          default: "1.0"
          description: The version number of the model.
        description:
          type: string
          description: Description of the model.
          example:
            Trinity is an experimental model merge using the Slerp method.
            Recommended for daily assistance purposes.
        format:
          type: string
          description: State format of the model, distinct from the engine.
          example: gguf
        settings:
          type: object
          properties:
            ctx_len:
              type: integer
              description: Context length.
              example: 4096
            prompt_template:
              type: string
              example: "<|im_start|>system\n{system_message}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant"
          additionalProperties: false
        parameters:
          type: object
          properties:
            temperature:
              example: 0.7
            top_p:
              example: 0.95
            stream:
              example: true
            max_tokens:
              example: 4096
            stop:
              example: []
            frequency_penalty:
              example: 0
            presence_penalty:
              example: 0
          additionalProperties: false
        metadata:
          author:
            type: string
            example: Jan
          tags:
            example:
              - 7B
              - Merged
              - Featured
          size:
            example: 4370000000,
          cover:
            example: https://raw.githubusercontent.com/janhq/jan/main/models/trinity-v1.2-7b/cover.png
        engine:
          example: nitro
    ModelObject:
      type: object
      properties:
        id:
          type: string
          description: |
            The identifier of the model.
          example: trinity-v1.2-7b
        object:
          type: string
          description: |
            The type of the object, indicating it's a model.
          default: model
        created:
          type: integer
          format: int64
          description: |
            Unix timestamp representing the creation time of the model.
          example: 1253935178
        owned_by:
          type: string
          description: |
            The entity that owns the model.
          example: _
    GetModelResponse:
      type: object
      properties:
        source_url:
          type: string
          format: uri
          description: URL to the source of the model.
          example: https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf
        id:
          type: string
          description:
            Unique identifier used in chat-completions model_name, matches
            folder name.
          example: mistral-ins-7b-q4
        object:
          type: string
          example: model
        name:
          type: string
          description: Name of the model.
          example: Mistral Instruct 7B Q4
        version:
          type: string
          default: "1.0"
          description: The version number of the model.
        description:
          type: string
          description: Description of the model.
          example:
            Trinity is an experimental model merge using the Slerp method.
            Recommended for daily assistance purposes.
        format:
          type: string
          description: State format of the model, distinct from the engine.
          example: gguf
        settings:
          type: object
          properties:
            ctx_len:
              type: integer
              description: Context length.
              example: 4096
            prompt_template:
              type: string
              example: "[INST] {prompt} [/INST]"
          additionalProperties: false
        parameters:
          type: object
          properties:
            temperature:
              example: 0.7
            top_p:
              example: 0.95
            stream:
              example: true
            max_tokens:
              example: 4096
            stop:
              example: []
            frequency_penalty:
              example: 0
            presence_penalty:
              example: 0
          additionalProperties: false
        metadata:
          author:
            type: string
            example: MistralAI
          tags:
            example:
              - 7B
              - Featured
              - Foundation Model
          size:
            example: 4370000000,
          cover:
            example: https://raw.githubusercontent.com/janhq/jan/main/models/mistral-ins-7b-q4/cover.png
        engine:
          example: nitro
    DeleteModelResponse:
      type: object
      properties:
        id:
          type: string
          description: The identifier of the model that was deleted.
          example: mistral-ins-7b-q4
        object:
          type: string
          description: Type of the object, indicating it's a model.
          default: model
        deleted:
          type: boolean
          description: Indicates whether the model was successfully deleted.
          example: true
    StartModelResponse:
      type: object
      properties:
        id:
          type: string
          description: The identifier of the model that was started.
          example: model-zephyr-7B
        object:
          type: string
          description: Type of the object, indicating it's a model.
          default: model
        state:
          type: string
          description: The current state of the model after the start operation.
          example: running
      required:
        - id
        - object
        - state
    StopModelResponse:
      type: object
      properties:
        id:
          type: string
          description: The identifier of the model that was started.
          example: model-zephyr-7B
        object:
          type: string
          description: Type of the object, indicating it's a model.
          default: model
        state:
          type: string
          description: The current state of the model after the start operation.
          example: stopped
      required:
        - id
        - object
        - state
    DownloadModelResponse:
      type: object
      properties:
        message:
          type: string
          description: Message indicates Jan starting download corresponding model.
          example: Starting download mistral-ins-7b-q4
