{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "EventType": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "title": {
          "type": "string",
          "description": "@zod.nonempty()"
        },
        "slug": {
          "type": "string",
          "description": "@zod.custom(imports.eventTypeSlug)"
        },
        "description": {
          "type": ["string", "null"]
        },
        "position": {
          "type": "integer",
          "default": 0
        },
        "locations": {
          "type": ["number", "string", "boolean", "object", "array", "null"],
          "description": "@zod.custom(imports.eventTypeLocations)"
        },
        "length": {
          "type": "integer"
        },
        "hidden": {
          "type": "boolean",
          "default": false
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/User"
          }
        },
        "userId": {
          "type": ["integer", "null"]
        },
        "team": {
          "anyOf": [
            {
              "$ref": "#/definitions/Team"
            },
            {
              "type": "null"
            }
          ]
        },
        "bookings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Booking"
          }
        },
        "availability": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Availability"
          }
        },
        "webhooks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Webhook"
          }
        },
        "destinationCalendar": {
          "anyOf": [
            {
              "$ref": "#/definitions/DestinationCalendar"
            },
            {
              "type": "null"
            }
          ]
        },
        "eventName": {
          "type": ["string", "null"]
        },
        "customInputs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EventTypeCustomInput"
          }
        },
        "timeZone": {
          "type": ["string", "null"]
        },
        "periodType": {
          "type": "string",
          "default": "UNLIMITED",
          "enum": ["UNLIMITED", "ROLLING", "RANGE"]
        },
        "periodStartDate": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "periodEndDate": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "periodDays": {
          "type": ["integer", "null"]
        },
        "periodCountCalendarDays": {
          "type": ["boolean", "null"]
        },
        "requiresConfirmation": {
          "type": "boolean",
          "default": false
        },
        "disableGuests": {
          "type": "boolean",
          "default": false
        },
        "minimumBookingNotice": {
          "type": "integer",
          "default": 120
        },
        "beforeEventBuffer": {
          "type": "integer",
          "default": 0
        },
        "afterEventBuffer": {
          "type": "integer",
          "default": 0
        },
        "schedulingType": {
          "type": ["string", "null"],
          "enum": ["ROUND_ROBIN", "COLLECTIVE"]
        },
        "schedule": {
          "anyOf": [
            {
              "$ref": "#/definitions/Schedule"
            },
            {
              "type": "null"
            }
          ]
        },
        "price": {
          "type": "integer",
          "default": 0
        },
        "currency": {
          "type": "string",
          "default": "usd"
        },
        "slotInterval": {
          "type": ["integer", "null"]
        },
        "metadata": {
          "type": ["number", "string", "boolean", "object", "array", "null"]
        }
      }
    },
    "Credential": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        },
        "key": {
          "type": ["number", "string", "boolean", "object", "array", "null"]
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "DestinationCalendar": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "integration": {
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        },
        "booking": {
          "anyOf": [
            {
              "$ref": "#/definitions/Booking"
            },
            {
              "type": "null"
            }
          ]
        },
        "eventType": {
          "anyOf": [
            {
              "$ref": "#/definitions/EventType"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "User": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "username": {
          "type": ["string", "null"]
        },
        "name": {
          "type": ["string", "null"]
        },
        "email": {
          "type": "string",
          "description": "@zod.email()"
        },
        "emailVerified": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "password": {
          "type": ["string", "null"]
        },
        "bio": {
          "type": ["string", "null"]
        },
        "avatar": {
          "type": ["string", "null"]
        },
        "timeZone": {
          "type": "string",
          "default": "Europe/London"
        },
        "weekStart": {
          "type": "string",
          "default": "Sunday"
        },
        "startTime": {
          "type": "integer",
          "default": 0
        },
        "endTime": {
          "type": "integer",
          "default": 1440
        },
        "bufferTime": {
          "type": "integer",
          "default": 0
        },
        "hideBranding": {
          "type": "boolean",
          "default": false
        },
        "theme": {
          "type": ["string", "null"]
        },
        "createdDate": {
          "type": "string",
          "format": "date-time"
        },
        "trialEndsAt": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EventType"
          }
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Credential"
          }
        },
        "teams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Membership"
          }
        },
        "bookings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Booking"
          }
        },
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Schedule"
          }
        },
        "defaultScheduleId": {
          "type": ["integer", "null"]
        },
        "selectedCalendars": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SelectedCalendar"
          }
        },
        "completedOnboarding": {
          "type": "boolean",
          "default": false
        },
        "locale": {
          "type": ["string", "null"]
        },
        "timeFormat": {
          "type": ["integer", "null"],
          "default": 12
        },
        "twoFactorSecret": {
          "type": ["string", "null"]
        },
        "twoFactorEnabled": {
          "type": "boolean",
          "default": false
        },
        "identityProvider": {
          "type": "string",
          "default": "CAL",
          "enum": ["CAL", "GOOGLE", "SAML"]
        },
        "identityProviderId": {
          "type": ["string", "null"]
        },
        "availability": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Availability"
          }
        },
        "invitedTo": {
          "type": ["integer", "null"]
        },
        "plan": {
          "type": "string",
          "default": "TRIAL",
          "enum": ["FREE", "TRIAL", "PRO"]
        },
        "webhooks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Webhook"
          }
        },
        "brandColor": {
          "type": "string",
          "default": "#292929"
        },
        "darkBrandColor": {
          "type": "string",
          "default": "#fafafa"
        },
        "destinationCalendar": {
          "anyOf": [
            {
              "$ref": "#/definitions/DestinationCalendar"
            },
            {
              "type": "null"
            }
          ]
        },
        "away": {
          "type": "boolean",
          "default": false
        },
        "metadata": {
          "type": ["number", "string", "boolean", "object", "array", "null"]
        },
        "verified": {
          "type": ["boolean", "null"],
          "default": false
        },
        "apiKeys": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiKey"
          }
        }
      }
    },
    "Team": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "name": {
          "type": ["string", "null"]
        },
        "slug": {
          "type": ["string", "null"]
        },
        "logo": {
          "type": ["string", "null"]
        },
        "bio": {
          "type": ["string", "null"]
        },
        "hideBranding": {
          "type": "boolean",
          "default": false
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Membership"
          }
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EventType"
          }
        }
      }
    },
    "Membership": {
      "type": "object",
      "properties": {
        "accepted": {
          "type": "boolean",
          "default": false
        },
        "role": {
          "type": "string",
          "enum": ["MEMBER", "ADMIN", "OWNER"]
        },
        "team": {
          "$ref": "#/definitions/Team"
        },
        "user": {
          "$ref": "#/definitions/User"
        }
      }
    },
    "VerificationRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "identifier": {
          "type": "string"
        },
        "token": {
          "type": "string"
        },
        "expires": {
          "type": "string",
          "format": "date-time"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "BookingReference": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "meetingId": {
          "type": ["string", "null"]
        },
        "meetingPassword": {
          "type": ["string", "null"]
        },
        "meetingUrl": {
          "type": ["string", "null"]
        },
        "booking": {
          "anyOf": [
            {
              "$ref": "#/definitions/Booking"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "Attendee": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "locale": {
          "type": ["string", "null"],
          "default": "en"
        },
        "booking": {
          "anyOf": [
            {
              "$ref": "#/definitions/Booking"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "DailyEventReference": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "dailyurl": {
          "type": "string",
          "default": "dailycallurl"
        },
        "dailytoken": {
          "type": "string",
          "default": "dailytoken"
        },
        "booking": {
          "anyOf": [
            {
              "$ref": "#/definitions/Booking"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "Booking": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "uid": {
          "type": "string"
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        },
        "references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BookingReference"
          }
        },
        "eventType": {
          "anyOf": [
            {
              "$ref": "#/definitions/EventType"
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": ["string", "null"]
        },
        "startTime": {
          "type": "string",
          "format": "date-time"
        },
        "endTime": {
          "type": "string",
          "format": "date-time"
        },
        "attendees": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Attendee"
          }
        },
        "location": {
          "type": ["string", "null"]
        },
        "dailyRef": {
          "anyOf": [
            {
              "$ref": "#/definitions/DailyEventReference"
            },
            {
              "type": "null"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "confirmed": {
          "type": "boolean",
          "default": true
        },
        "rejected": {
          "type": "boolean",
          "default": false
        },
        "status": {
          "type": "string",
          "default": "ACCEPTED",
          "enum": ["CANCELLED", "ACCEPTED", "REJECTED", "PENDING"]
        },
        "paid": {
          "type": "boolean",
          "default": false
        },
        "payment": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Payment"
          }
        },
        "destinationCalendar": {
          "anyOf": [
            {
              "$ref": "#/definitions/DestinationCalendar"
            },
            {
              "type": "null"
            }
          ]
        },
        "cancellationReason": {
          "type": ["string", "null"]
        },
        "rejectionReason": {
          "type": ["string", "null"]
        }
      }
    },
    "Schedule": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "user": {
          "$ref": "#/definitions/User"
        },
        "eventType": {
          "anyOf": [
            {
              "$ref": "#/definitions/EventType"
            },
            {
              "type": "null"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "timeZone": {
          "type": ["string", "null"]
        },
        "availability": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Availability"
          }
        }
      }
    },
    "Availability": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        },
        "eventType": {
          "anyOf": [
            {
              "$ref": "#/definitions/EventType"
            },
            {
              "type": "null"
            }
          ]
        },
        "days": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "startTime": {
          "type": "string",
          "format": "date-time"
        },
        "endTime": {
          "type": "string",
          "format": "date-time"
        },
        "date": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "Schedule": {
          "anyOf": [
            {
              "$ref": "#/definitions/Schedule"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "SelectedCalendar": {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/definitions/User"
        },
        "integration": {
          "type": "string"
        },
        "externalId": {
          "type": "string"
        }
      }
    },
    "EventTypeCustomInput": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "eventType": {
          "$ref": "#/definitions/EventType"
        },
        "label": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": ["TEXT", "TEXTLONG", "NUMBER", "BOOL"]
        },
        "required": {
          "type": "boolean"
        },
        "placeholder": {
          "type": "string",
          "default": ""
        }
      }
    },
    "ResetPasswordRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "email": {
          "type": "string"
        },
        "expires": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "ReminderMail": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "referenceId": {
          "type": "integer"
        },
        "reminderType": {
          "type": "string",
          "enum": ["PENDING_BOOKING_CONFIRMATION"]
        },
        "elapsedMinutes": {
          "type": "integer"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "Payment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "uid": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": ["STRIPE"]
        },
        "booking": {
          "anyOf": [
            {
              "$ref": "#/definitions/Booking"
            },
            {
              "type": "null"
            }
          ]
        },
        "amount": {
          "type": "integer"
        },
        "fee": {
          "type": "integer"
        },
        "currency": {
          "type": "string"
        },
        "success": {
          "type": "boolean"
        },
        "refunded": {
          "type": "boolean"
        },
        "data": {
          "type": ["number", "string", "boolean", "object", "array", "null"]
        },
        "externalId": {
          "type": "string"
        }
      }
    },
    "Webhook": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "subscriberUrl": {
          "type": "string"
        },
        "payloadTemplate": {
          "type": ["string", "null"]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "active": {
          "type": "boolean",
          "default": true
        },
        "eventTriggers": {
          "type": "array",
          "enum": ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"]
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        },
        "eventType": {
          "anyOf": [
            {
              "$ref": "#/definitions/EventType"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "ApiKey": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/definitions/User"
            },
            {
              "type": "null"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time"
        },
        "note": {
          "type": ["string", "null"]
        }
      }
    }
  },
  "type": "object",
  "properties": {
    "eventType": {
      "$ref": "#/definitions/EventType"
    },
    "credential": {
      "$ref": "#/definitions/Credential"
    },
    "destinationCalendar": {
      "$ref": "#/definitions/DestinationCalendar"
    },
    "user": {
      "$ref": "#/definitions/User"
    },
    "team": {
      "$ref": "#/definitions/Team"
    },
    "membership": {
      "$ref": "#/definitions/Membership"
    },
    "verificationRequest": {
      "$ref": "#/definitions/VerificationRequest"
    },
    "bookingReference": {
      "$ref": "#/definitions/BookingReference"
    },
    "attendee": {
      "$ref": "#/definitions/Attendee"
    },
    "dailyEventReference": {
      "$ref": "#/definitions/DailyEventReference"
    },
    "booking": {
      "$ref": "#/definitions/Booking"
    },
    "schedule": {
      "$ref": "#/definitions/Schedule"
    },
    "availability": {
      "$ref": "#/definitions/Availability"
    },
    "selectedCalendar": {
      "$ref": "#/definitions/SelectedCalendar"
    },
    "eventTypeCustomInput": {
      "$ref": "#/definitions/EventTypeCustomInput"
    },
    "resetPasswordRequest": {
      "$ref": "#/definitions/ResetPasswordRequest"
    },
    "reminderMail": {
      "$ref": "#/definitions/ReminderMail"
    },
    "payment": {
      "$ref": "#/definitions/Payment"
    },
    "webhook": {
      "$ref": "#/definitions/Webhook"
    },
    "apiKey": {
      "$ref": "#/definitions/ApiKey"
    }
  }
}
