{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/ellkay/main/json-schema/ellkay-lkcloud-connect-contracts-appointments-appointment-schema.json",
  "title": "LKCloudConnect.Contracts.Appointments.Appointment",
  "description": "Appointment object",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ellkay-lkcloud-api-openapi.yml#/components/schemas/LKCloudConnect.Contracts.Appointments.Appointment",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Appointment id"
    },
    "start": {
      "type": "string",
      "description": "Appointment start date. (DateTimeOffset) e.g. 2019-01-01T00:00:00+00:00",
      "format": "date-time"
    },
    "duration": {
      "type": "string",
      "description": "Appointment duration e.g. 00:30:00"
    },
    "patientId": {
      "type": "string",
      "description": "Appointment patient id"
    },
    "patientAlternateId": {
      "type": "string",
      "description": "Appointment patient alternate id"
    },
    "physicianId": {
      "type": "string",
      "description": "Appointment physician id"
    },
    "facilityId": {
      "type": "string",
      "description": "Appointment facility id"
    },
    "facilityName": {
      "type": "string",
      "description": "Appointment facility name"
    },
    "notes": {
      "type": "string",
      "description": "Appointment notes"
    },
    "status": {
      "enum": [
        "InvalidStatus",
        "Other",
        "Pending",
        "Waitlist",
        "Booked",
        "Started",
        "Complete",
        "Cancelled",
        "Discontinued",
        "Deleted",
        "Blocked",
        "Overbook",
        "NoShow",
        "Rescheduled",
        "Confirmed"
      ],
      "type": "string",
      "description": "Appointment status"
    },
    "modified": {
      "type": "string",
      "description": "Appointment last modified date. (DateTimeOffset) e.g. 2019-01-01T00:00:00+00:00",
      "format": "date-time"
    },
    "type": {
      "type": "string",
      "description": "Appointment type display"
    },
    "billable": {
      "enum": [
        "Unspecified",
        "True",
        "False"
      ],
      "type": "string",
      "description": "Appointment billable status"
    },
    "department": {
      "allOf": [
        {
          "$ref": "#/$defs/LKCloudConnect.Contracts.Appointments.Department"
        }
      ],
      "description": "Appointment department"
    },
    "resources": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/LKCloudConnect.Contracts.Appointments.AppointmentResource"
      },
      "description": "Appointment resources"
    },
    "statusCode": {
      "allOf": [
        {
          "$ref": "#/$defs/LKCloudConnect.Contracts.Bridge.MappedCode"
        }
      ],
      "description": "Appointment status code\r\n'InvalidStatus 'Other' 'Pending' 'Waitlist' 'Booked' 'Started' 'Complete' 'Cancelled' 'Discontinued' 'Deleted' 'Blocked' 'Overbook' 'NoShow' 'Rescheduled' 'Confirmed'"
    },
    "appointmentTypeId": {
      "type": "string",
      "description": "Appointment type id"
    },
    "reason": {
      "allOf": [
        {
          "$ref": "#/$defs/LKCloudConnect.Contracts.Bridge.MappedCode"
        }
      ],
      "description": "Appointment reason\r\nAppointment reason is not standardized, and only source code is provided."
    },
    "created": {
      "type": "string",
      "description": "Appointment created date. (DateTimeOffset) e.g. 2019-01-01T00:00:00+00:00",
      "format": "date-time"
    },
    "custom": {
      "type": "object",
      "additionalProperties": {
        "type": [
          "string",
          "null"
        ]
      },
      "description": "System-specific data for special cases"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "LKCloudConnect.Contracts.Appointments.AppointmentResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the appointment resource"
        }
      },
      "additionalProperties": false,
      "description": "A resource related to an appointment"
    },
    "LKCloudConnect.Contracts.Appointments.Department": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the department"
        }
      },
      "additionalProperties": false
    },
    "LKCloudConnect.Contracts.Bridge.MappedCode": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "Our mapped code (If one is available)"
        },
        "source": {
          "type": "string",
          "description": "System-specific code"
        },
        "sourceText": {
          "type": "string",
          "description": "System-specific free text when additional free text is allowed, usually found with “other” fields"
        }
      },
      "additionalProperties": false
    }
  }
}