{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/choreo/refs/heads/main/json-schema/choreo-component.json",
  "title": "Choreo Component",
  "description": "A deployable component within a Choreo project. Components represent services, API proxies, web applications, scheduled jobs, manual triggers, event handlers, or webhooks.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the component."
    },
    "name": {
      "type": "string",
      "description": "Name of the component."
    },
    "type": {
      "type": "string",
      "enum": [
        "Service",
        "REST API Proxy",
        "GraphQL API Proxy",
        "Web Application",
        "Scheduled Job",
        "Manual Trigger",
        "Event Handler",
        "Webhook"
      ],
      "description": "Type of the component."
    },
    "description": {
      "type": "string",
      "description": "Description of the component."
    },
    "repoUrl": {
      "type": "string",
      "format": "uri",
      "description": "Git repository URL for the component source code."
    },
    "branch": {
      "type": "string",
      "description": "Git branch used for builds."
    },
    "buildpackId": {
      "type": "string",
      "description": "Buildpack used for the component."
    },
    "projectId": {
      "type": "string",
      "description": "Project identifier the component belongs to."
    },
    "orgId": {
      "type": "string",
      "description": "Organization identifier."
    },
    "status": {
      "type": "string",
      "enum": ["Active", "Inactive"],
      "description": "Current status of the component."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when the component was created."
    }
  },
  "required": ["id", "name", "type"]
}
