{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/lastmileai/json-schema/lastmileai-lmai-proto-webserver-v2-list-fine-tune-jobs-response-schema.json",
  "title": "ListFineTuneJobsResponse",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/lastmileai-fine-tune-job-api-openapi.yml#/components/schemas/lmai.proto.webserver.v2.ListFineTuneJobsResponse",
  "type": "object",
  "properties": {
    "jobs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/lmai.proto.model_fine_tuning.v1.FineTuneJob"
      }
    },
    "totalCount": {
      "type": "integer",
      "description": "Total count of fine tune jobs which can be listed with applicable\n filters, regardless of page size"
    }
  },
  "required": [
    "jobs",
    "totalCount"
  ],
  "$defs": {
    "lmai.proto.model_fine_tuning.v1.FineTuneJob": {
      "title": "FineTuneJob",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the fine tune job."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "A summary is retrieved for a time range from start_time to end_time\n If no end_time is provided, current time is used"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "A summary is retrieved for a time range from start_time to end_time\n If no end_time is provided, current time is used"
        },
        "name": {
          "type": "string",
          "description": "Name corresponding to the fine tuned model derived from this job"
        },
        "description": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "JOB_STATUS_UNSPECIFIED",
            "JOB_STATUS_QUEUED",
            "JOB_STATUS_RUNNING",
            "JOB_STATUS_COMPLETED",
            "JOB_STATUS_CANCELLED",
            "JOB_STATUS_FAILED"
          ],
          "title": "JobStatus"
        },
        "config": {
          "$ref": "#/$defs/lmai.proto.model_fine_tuning.v1.FineTuneJobConfig"
        },
        "result": {
          "$ref": "#/$defs/lmai.proto.model_fine_tuning.v1.FineTuneJobResult"
        }
      },
      "required": [
        "id",
        "createdAt",
        "updatedAt",
        "status",
        "config",
        "result"
      ]
    },
    "lmai.proto.model_fine_tuning.v1.FineTuneJobConfig": {
      "title": "FineTuneJobConfig",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional name for the job."
        },
        "description": {
          "type": "string",
          "description": "Optional description for the job."
        },
        "baselineModelId": {
          "type": "string",
          "description": "The ID for the model used as the starting point for training."
        },
        "trainDatasetId": {
          "type": "string",
          "description": "The dataset to use for training, with splits baked in or to be\n derived dynamically"
        },
        "testDatasetId": {
          "type": "string",
          "description": "The dataset to use for an unbiased evaluation of the model"
        },
        "selectedColumns": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Set of columns to be used in fine-tuning.\n Supported columns: input, output, ground_truth\n For example, a task similar to summarization might need output and\n ground_truth."
          }
        }
      },
      "required": [
        "baselineModelId",
        "trainDatasetId",
        "testDatasetId",
        "selectedColumns"
      ]
    },
    "lmai.proto.model_fine_tuning.v1.FineTuneJobResult": {
      "title": "FineTuneJobResult",
      "type": "object",
      "properties": {
        "progress": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/lmai.proto.model_fine_tuning.v1.TrainingProgress",
            "description": "Sequential snapshots of training metrics."
          }
        },
        "trainedModelFile": {
          "$ref": "#/$defs/lmai.proto.model_fine_tuning.v1.ModelFile",
          "description": "The trained model, if it was created successfully."
        },
        "resultUrl": {
          "type": "string",
          "description": "Url to view the full results and progress (e.g. external W&B url)"
        }
      },
      "required": [
        "progress"
      ],
      "description": "Result of a Fine-Tuning Job."
    },
    "lmai.proto.model_fine_tuning.v1.ModelFile": {
      "title": "ModelFile",
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "A summary is retrieved for a time range from start_time to end_time\n If no end_time is provided, current time is used"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "A summary is retrieved for a time range from start_time to end_time\n If no end_time is provided, current time is used"
        },
        "modelId": {
          "type": "string"
        },
        "contentMd5Hash": {
          "type": "string"
        },
        "fileSizeBytes": {
          "type": "integer"
        }
      },
      "required": [
        "id",
        "createdAt",
        "updatedAt",
        "modelId",
        "contentMd5Hash",
        "fileSizeBytes"
      ],
      "description": "Actual file asset corresponding to a model"
    },
    "lmai.proto.model_fine_tuning.v1.TrainingProgress": {
      "title": "TrainingProgress",
      "type": "object",
      "properties": {
        "jobId": {
          "type": "string"
        },
        "epoch": {
          "type": "integer"
        },
        "loss": {
          "type": "number"
        },
        "accuracy": {
          "type": "number"
        },
        "progress": {
          "type": "number"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "A summary is retrieved for a time range from start_time to end_time\n If no end_time is provided, current time is used"
        }
      },
      "required": [
        "jobId",
        "epoch",
        "loss",
        "accuracy",
        "progress",
        "timestamp"
      ],
      "description": "Progress metrics from model training."
    }
  }
}