{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/argyle/refs/heads/main/json-schema/shift.json",
  "title": "Shift",
  "type": "object",
  "example": {
    "id": "0183d245-b5c1-2a6d-5e37-1b831d765c5d",
    "account": "0187c66e-e7e5-811c-b006-2232f00f426a",
    "employer": "Whole Goods",
    "created_at": "2023-04-27T07:02:01.279Z",
    "updated_at": "2023-04-27T07:02:01.279Z",
    "status": "completed",
    "type": "hourly",
    "start_datetime": "2023-04-26T00:00:00Z",
    "end_datetime": "2023-04-26T08:00:00Z",
    "all_datetimes": {
      "shift_start": "2023-04-26T00:00:00Z",
      "shift_end": "2023-04-26T08:00:00Z",
      "breaks": [
        {
          "break_start": "2023-04-26T03:36:00Z",
          "break_end": "2023-04-26T04:24:00Z"
        }
      ]
    },
    "hours": "7.2",
    "timezone": "America/New_York",
    "location": "302 East N St, New York, NY 10014, US",
    "metadata": null
  },
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique ID of the shift."
    },
    "account": {
      "type": "string",
      "format": "uuid",
      "description": "Unique ID of the account associated with the shift."
    },
    "employer": {
      "type": "string",
      "description": "Employer name."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the shift object was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when a property value of the shift object most recently changed."
    },
    "status": {
      "type": "string",
      "enum": [
        "scheduled",
        "in_progress",
        "completed",
        "cancelled"
      ],
      "description": "Current state of the shift."
    },
    "type": {
      "type": "string",
      "enum": [
        "hourly",
        "services"
      ],
      "description": "The type of shift."
    },
    "start_datetime": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the shift started."
    },
    "end_datetime": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the shift ended."
    },
    "all_datetimes": {
      "type": "object",
      "description": "Contains information on when the shift started and ended, and any breaks taken in between.",
      "properties": {
        "shift_start": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the shift started."
        },
        "shift_end": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the shift ended."
        },
        "breaks": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "break_start": {
                "type": "string",
                "format": "date-time",
                "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the break started."
              },
              "break_end": {
                "type": "string",
                "format": "date-time",
                "description": "Timestamp ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)) when the break ended."
              }
            }
          }
        }
      }
    },
    "hours": {
      "type": "string",
      "description": "Time duration of the shift, subtracting breaks. Up to four decimal places."
    },
    "timezone": {
      "type": "string",
      "description": "Timezone ([IANA](https://www.iana.org/time-zones)) where the shift took place."
    },
    "location": {
      "type": "string",
      "description": "Full address of where the shift took place."
    },
    "metadata": {
      "type": "object",
      "description": "Additional, non-categorized information."
    }
  }
}