{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/astraeyelabs-io/json-schema/astraeyelabs-io-get-api-v1-research-projects-response-schema.json",
  "title": "GetApiV1ResearchProjectsResponse",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/astraeyelabs-io-openapi-generated.yml#/components/schemas/GetApiV1ResearchProjectsResponse",
  "type": "object",
  "properties": {
    "hasMore": {
      "type": "boolean",
      "description": "True when more projects exist beyond this page."
    },
    "nextCursor": {
      "type": "string",
      "description": "Pass as cursor to retrieve the next page. Null on the last page."
    },
    "projects[].id": {
      "type": "string",
      "description": "Project identifier."
    },
    "projects[].title": {
      "type": "string",
      "description": "Project title as shown in the Lab."
    },
    "projects[].status": {
      "type": "string",
      "description": "Current lifecycle state."
    },
    "projects[].createdAt": {
      "type": "string",
      "description": "When the project was created (ISO 8601)."
    },
    "projects[].updatedAt": {
      "type": "string",
      "description": "When the project last changed (ISO 8601)."
    },
    "projects[].runCount": {
      "type": "integer",
      "description": "Number of runs the project has performed."
    },
    "projects[].lastRunAt": {
      "type": "string",
      "description": "When the project's most recent run started. Null if never run."
    },
    "projects[].scheduled": {
      "type": "boolean",
      "description": "Whether the project has a schedule attached."
    }
  }
}