{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/CallbackSchedule",
  "title": "CallbackSchedule",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier for the scheduled callback.",
      "example": "123e4567-e89b-12d3-a456-426614174000"
    },
    "customerName": {
      "type": "string",
      "description": "Name of the customer requesting the callback.",
      "example": "John Doe"
    },
    "callbackNumber": {
      "type": "string",
      "description": "Phone number provided for the callback.",
      "example": "+1234567890"
    },
    "timezone": {
      "type": "string",
      "description": "Timezone in which the callback is scheduled.",
      "example": "America/New_York"
    },
    "scheduleDate": {
      "type": "string",
      "format": "date",
      "description": "Date for the callback in ISO format (YYYY-MM-DD).",
      "example": "2025-04-08"
    },
    "startTime": {
      "type": "string",
      "format": "time",
      "description": "Scheduled start time in ISO 8601 format (HH:mm:ss), local to the specified timezone.",
      "example": "14:30:00"
    },
    "endTime": {
      "type": "string",
      "format": "time",
      "description": "Scheduled end time in ISO 8601 format (HH:mm:ss), local to the specified timezone.",
      "example": "15:30:00"
    },
    "queueId": {
      "type": "string",
      "description": "Identifier for the queue to route the callback request.",
      "example": "123e4567-e89b-12d3-a456-426614174000"
    },
    "callbackReason": {
      "type": "string",
      "description": "Reason provided for the callback request.",
      "example": "Customer requested a follow-up."
    },
    "sourceInteraction": {
      "type": "string",
      "format": "uuid",
      "description": "UUID of the source interaction.",
      "example": "123e4567-e89b-12d3-a456-426614174000"
    },
    "callbackOrigin": {
      "type": "string",
      "description": "Origin of the callback request, such as 'livecall' or 'api'.",
      "example": "api"
    },
    "createdTimestamp": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp in milliseconds when the callback was created.",
      "example": 1672531199000
    },
    "lastUpdatedTimestamp": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp in milliseconds when the callback was last updated.",
      "example": 1672531199000
    },
    "assigneeAgent": {
      "type": "string",
      "format": "uuid",
      "description": "The unique identifier of the agent assigned to handle the callback.",
      "example": "123e4567-e89b-12d3-a456-426614174000"
    },
    "assignedTime": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp in milliseconds when the assigneeAgent was last updated.",
      "example": 1672531199000
    },
    "orgId": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier for the organization.",
      "example": "123e4567-e89b-12d3-a456-426614174000"
    }
  },
  "required": [
    "id",
    "customerName",
    "callbackNumber",
    "timezone",
    "scheduleDate",
    "startTime",
    "endTime",
    "queueId",
    "callbackOrigin",
    "createdTimestamp",
    "lastUpdatedTimestamp",
    "orgId"
  ]
}