{
  "openapi": "3.0.0",
  "paths": {
    "/api/v1/multimedia": {
      "post": {
        "operationId": "MultimediaController_create",
        "summary": "Create new multimedia content",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMultimediaDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The multimedia content has been successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Multimedia"
                }
              }
            }
          }
        },
        "tags": [
          "Multimedia"
        ]
      },
      "get": {
        "operationId": "MultimediaController_list",
        "summary": "List multimedia content with pagination and filters",
        "parameters": [
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Filter multimedia by name",
            "schema": {
              "example": "Product Demo",
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filter multimedia by status",
            "schema": {
              "$ref": "#/components/schemas/MultimediaStatusEnum"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter multimedia by type(s)",
            "schema": {
              "example": [
                "video",
                "image"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "audio",
                  "presentation",
                  "immersive"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of multimedia content.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Multimedia"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Multimedia"
        ]
      }
    },
    "/api/v1/multimedia/{id}": {
      "get": {
        "operationId": "MultimediaController_get",
        "summary": "Get multimedia content by ID",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Returns the multimedia content.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Multimedia"
                }
              }
            }
          },
          "404": {
            "description": "Multimedia content not found."
          }
        },
        "tags": [
          "Multimedia"
        ]
      },
      "put": {
        "operationId": "MultimediaController_update",
        "summary": "Update multimedia content by ID",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMultimediaDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The multimedia content has been successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Multimedia"
                }
              }
            }
          },
          "404": {
            "description": "Multimedia content not found."
          }
        },
        "tags": [
          "Multimedia"
        ]
      },
      "delete": {
        "operationId": "MultimediaController_delete",
        "summary": "Delete multimedia content by ID",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The multimedia content has been successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Multimedia"
                }
              }
            }
          },
          "404": {
            "description": "Multimedia content not found."
          }
        },
        "tags": [
          "Multimedia"
        ]
      }
    },
    "/api/v1/presets": {
      "post": {
        "operationId": "PresetController_create",
        "summary": "Create a new preset",
        "description": "Creates a new preset with the provided configuration. The preset will be associated with the authenticated organization.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePresetDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The preset has been successfully created"
          },
          "400": {
            "description": "Invalid input - missing or invalid parameters"
          }
        },
        "tags": [
          "Presets"
        ]
      },
      "get": {
        "operationId": "PresetController_list",
        "summary": "List all presets",
        "description": "Retrieve a paginated list of presets with optional filtering",
        "parameters": [
          {
            "name": "title",
            "required": false,
            "in": "query",
            "description": "Filter presets by exact title match",
            "schema": {
              "example": "My Custom Preset",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter presets by title or description",
            "schema": {
              "example": "streaming",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination (min: 1)",
            "schema": {
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page (min: 1, max: 100)",
            "schema": {
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of presets"
          }
        },
        "tags": [
          "Presets"
        ]
      }
    },
    "/api/v1/presets/{id}": {
      "put": {
        "operationId": "PresetController_update",
        "summary": "Update an existing preset",
        "description": "Updates an existing preset with new configuration. Only the provided fields will be updated.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The ID of the preset to update",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePresetDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The preset has been successfully updated"
          },
          "400": {
            "description": "Invalid input - missing or invalid parameters"
          },
          "404": {
            "description": "Preset not found"
          }
        },
        "tags": [
          "Presets"
        ]
      },
      "get": {
        "operationId": "PresetController_get",
        "summary": "Get a preset by ID",
        "description": "Retrieves the details of a specific preset",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The ID of the preset to retrieve",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the preset details"
          },
          "404": {
            "description": "Preset not found"
          }
        },
        "tags": [
          "Presets"
        ]
      },
      "delete": {
        "operationId": "PresetController_delete",
        "summary": "Delete a preset",
        "description": "Removes a preset and all associated data",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The ID of the preset to delete",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The preset has been successfully deleted"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key or bearer token"
          },
          "404": {
            "description": "Preset not found",
            "content": {
              "application/json": {
                "example": {
                  "statusCode": 404,
                  "message": "Preset not found",
                  "error": "Not Found"
                }
              }
            }
          }
        },
        "tags": [
          "Presets"
        ]
      }
    },
    "/api/v1/rooms/{publicId}": {
      "get": {
        "operationId": "RoomController_findOne",
        "summary": "Get a specific room",
        "parameters": [
          {
            "name": "publicId",
            "required": true,
            "in": "path",
            "description": "Public ID of the room",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The room has been successfully found"
          }
        },
        "tags": [
          "Rooms"
        ]
      },
      "put": {
        "operationId": "RoomController_update",
        "summary": "Update a room",
        "parameters": [
          {
            "name": "publicId",
            "required": true,
            "in": "path",
            "description": "Public ID of the room to update",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoomDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The room has been successfully updated"
          }
        },
        "tags": [
          "Rooms"
        ]
      },
      "delete": {
        "operationId": "RoomController_delete",
        "summary": "Delete a room",
        "parameters": [
          {
            "name": "publicId",
            "required": true,
            "in": "path",
            "description": "Public ID of the room to delete",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The room has been successfully deleted"
          }
        },
        "tags": [
          "Rooms"
        ]
      }
    },
    "/api/v1/rooms": {
      "post": {
        "operationId": "RoomController_create",
        "summary": "Create a new room",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoomDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The room has been successfully created"
          }
        },
        "tags": [
          "Rooms"
        ]
      },
      "get": {
        "operationId": "RoomController_list",
        "summary": "List all rooms",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "default": 10,
              "example": 10,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Return a list of rooms"
          }
        },
        "tags": [
          "Rooms"
        ]
      }
    },
    "/api/v1/appointments": {
      "post": {
        "operationId": "AppointmentController_create",
        "summary": "Create a new appointment",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAppointmentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The appointment has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      },
      "get": {
        "operationId": "AppointmentController_search",
        "summary": "Search appointments",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search appointments by title, state, classification, guest or description",
            "schema": {
              "example": "client meeting",
              "type": "string"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by user group ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter appointments by type",
            "schema": {
              "example": "meeting",
              "type": "string"
            }
          },
          {
            "name": "lang",
            "required": false,
            "in": "query",
            "description": "Language code for localization",
            "schema": {
              "example": "en",
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Start date for filtering appointments",
            "schema": {
              "format": "date-time",
              "example": "2025-05-20T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "End date for filtering appointments",
            "schema": {
              "format": "date-time",
              "example": "2025-05-21T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "connection",
            "required": true,
            "in": "query",
            "description": "Calendar connection provider",
            "schema": {
              "example": "onlive",
              "enum": [
                "onlive",
                "microsoft",
                "google"
              ],
              "type": "string"
            }
          },
          {
            "name": "state",
            "required": false,
            "in": "query",
            "description": "Current state of the appointments to filter",
            "schema": {
              "example": "confirmed",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by user ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by service ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "origin",
            "required": false,
            "in": "query",
            "description": "Filter appointments by origin",
            "schema": {
              "example": "web",
              "type": "string"
            }
          },
          {
            "name": "ids",
            "required": false,
            "in": "query",
            "description": "Filter appointments by specific IDs",
            "schema": {
              "format": "uuid",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "excludeIds",
            "required": false,
            "in": "query",
            "description": "Exclude appointments with specific IDs",
            "schema": {
              "format": "uuid",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "calendarIds",
            "required": false,
            "in": "query",
            "description": "Filter appointments by specific calendar IDs. Use formats: calendars=cal1,cal2 or calendars[0]=cal1&calendars[1]=cal2",
            "schema": {
              "format": "uuid",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of appointments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/appointments/{id}/cancel": {
      "post": {
        "operationId": "AppointmentController_cancel",
        "summary": "Cancel an appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The appointment has been successfully canceled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/appointments/block-slot": {
      "post": {
        "operationId": "AppointmentController_blockSlot",
        "summary": "Block a slot",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockSlotDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The slot has been successfully blocked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The ID of the blocked slot",
                      "example": "ae5bad38-402b-4766-aed9-28dc7d9fdbf4"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/appointments/{id}": {
      "put": {
        "operationId": "AppointmentController_update",
        "summary": "Update an existing appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAppointmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The appointment has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      },
      "get": {
        "operationId": "AppointmentController_findOne",
        "summary": "Get a specific appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the appointment details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      },
      "delete": {
        "operationId": "AppointmentController_delete",
        "summary": "Delete an appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The appointment has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/appointments/{id}/mask-guests": {
      "put": {
        "operationId": "AppointmentController_maskGuests",
        "summary": "Mask appointment guests",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaskGuestsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The appointment guests has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/appointments/{id}/votes": {
      "get": {
        "operationId": "AppointmentController_findVotes",
        "summary": "Get appointment votes",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the appointment with voting information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V1"
        ]
      }
    },
    "/api/v1/calendars/{id}": {
      "get": {
        "operationId": "CalendarController_findOne",
        "summary": "Get a specific calendar",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Calendar ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the calendar details including timezone, type, and other configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Calendar"
                }
              }
            }
          }
        },
        "tags": [
          "Calendars V1"
        ]
      }
    },
    "/api/v1/calendars": {
      "get": {
        "operationId": "CalendarController_findAll",
        "summary": "List all calendars",
        "parameters": [
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter calendars by type (agent or asset)",
            "schema": {
              "enum": [
                "agent",
                "asset"
              ],
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of calendars",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Calendar"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Calendars V1"
        ]
      }
    },
    "/api/v1/services": {
      "post": {
        "operationId": "TemplateController_create",
        "summary": "Create a new service service",
        "description": "Creates a new appointment service with customizable duration, scheduling rules, and calendar configurations.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTemplateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The service service has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input - missing or invalid required fields"
          }
        },
        "tags": [
          "Service Templates"
        ]
      },
      "get": {
        "operationId": "TemplateController_findAll",
        "summary": "List all service services",
        "description": "Retrieves a paginated list of service services with optional filtering and sorting",
        "parameters": [
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Filter services by name",
            "schema": {
              "example": "consultation",
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Filter services by start date",
            "schema": {
              "format": "date-time",
              "example": "2025-05-20T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "Filter services by end date",
            "schema": {
              "format": "date-time",
              "example": "2025-12-31T23:59:59Z",
              "type": "string"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter services by user group ID",
            "schema": {
              "format": "UUID",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search services by keywords",
            "schema": {
              "example": "consultation medical",
              "type": "string"
            }
          },
          {
            "name": "typeId",
            "required": false,
            "in": "query",
            "description": "Filter services by service type ID",
            "schema": {
              "example": "consultation",
              "type": "string"
            }
          },
          {
            "name": "calendarId",
            "required": false,
            "in": "query",
            "description": "Filter services by calendar ID",
            "schema": {
              "format": "UUID",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "expand",
            "required": false,
            "in": "query",
            "description": "Request expanded related entities",
            "schema": {
              "example": [
                "calendars",
                "dateRanges"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "calendars",
                  "dateRanges",
                  "numberOfAppointments"
                ]
              }
            }
          },
          {
            "name": "serviceType",
            "required": false,
            "in": "query",
            "description": "Filter services by type",
            "schema": {
              "example": "standard",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter services by organization ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of service services",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Template"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Service Templates"
        ]
      }
    },
    "/api/v1/services/{id}": {
      "put": {
        "operationId": "TemplateController_update",
        "summary": "Update a service service",
        "description": "Updates an existing service's configuration including duration, schedules, and calendar settings",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTemplateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The service service has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          },
          "404": {
            "description": "Service not found"
          }
        },
        "tags": [
          "Service Templates"
        ]
      },
      "get": {
        "operationId": "TemplateController_findOne",
        "summary": "Get a service service",
        "description": "Retrieves detailed information about a specific service service including its configuration, calendars, and scheduling rules",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the service service details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          },
          "404": {
            "description": "Service not found"
          }
        },
        "tags": [
          "Service Templates"
        ]
      },
      "delete": {
        "operationId": "TemplateController_delete",
        "summary": "Delete a service service",
        "description": "Permanently removes a service service and its associated configurations",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the deleted service service data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          },
          "404": {
            "description": "Service not found"
          }
        },
        "tags": [
          "Service Templates"
        ]
      }
    },
    "/api/v1/service-types": {
      "post": {
        "operationId": "TemplateTypeController_create",
        "summary": "Create a new service type",
        "description": "Creates a new service type which can be used to define appointment services. Service types provide base configuration for appointment services.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTemplateTypeDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The service type has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateType"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input - missing or invalid parameters"
          }
        },
        "tags": [
          "Service Types"
        ]
      },
      "get": {
        "operationId": "TemplateTypeController_findAll",
        "summary": "List all service types",
        "description": "Retrieves a paginated list of service types with optional filtering",
        "parameters": [
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Filter service types by name",
            "schema": {
              "example": "Consultation",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of service types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TemplateType"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Service Types"
        ]
      }
    },
    "/api/v1/service-types/{id}": {
      "put": {
        "operationId": "TemplateTypeController_update",
        "summary": "Update a service type",
        "description": "Updates an existing service type with new configuration",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service type ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTemplateTypeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The service type has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateType"
                }
              }
            }
          }
        },
        "tags": [
          "Service Types"
        ]
      },
      "get": {
        "operationId": "TemplateTypeController_findOne",
        "summary": "Get a service type",
        "description": "Retrieves details of a specific service type",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service type ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the service type details including name, slug, description, and sharing parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateType"
                }
              }
            }
          }
        },
        "tags": [
          "Service Types"
        ]
      },
      "delete": {
        "operationId": "TemplateTypeController_delete",
        "summary": "Delete a service type",
        "description": "Removes a service type and all associated data",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service type ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The service type has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateType"
                }
              }
            }
          }
        },
        "tags": [
          "Service Types"
        ]
      }
    },
    "/api/v1/weekly-schedules": {
      "post": {
        "operationId": "WeeklyScheduleController_create",
        "summary": "Create a new weekly schedule",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWeeklyScheduleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created weekly schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeeklySchedule"
                }
              }
            }
          }
        },
        "tags": [
          "Weekly Schedules"
        ]
      },
      "get": {
        "operationId": "WeeklyScheduleController_findAll",
        "summary": "List all weekly schedules",
        "parameters": [
          {
            "name": "calendarId",
            "required": true,
            "in": "query",
            "description": "UUID of the calendar to filter",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter weekly schedules",
            "schema": {
              "example": "Morning Session",
              "type": "string"
            }
          },
          {
            "name": "expand",
            "required": false,
            "in": "query",
            "description": "Include related resources in the response",
            "schema": {
              "example": [
                "services"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "services"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of weekly schedules",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WeeklySchedule"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Weekly Schedules"
        ]
      }
    },
    "/api/v1/weekly-schedules/{id}": {
      "put": {
        "operationId": "WeeklyScheduleController_update",
        "summary": "Update an existing weekly schedule",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWeeklyScheduleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated weekly schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeeklySchedule"
                }
              }
            }
          }
        },
        "tags": [
          "Weekly Schedules"
        ]
      },
      "get": {
        "operationId": "WeeklyScheduleController_findOne",
        "summary": "Get a weekly schedule by ID",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The found weekly schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeeklySchedule"
                }
              }
            }
          }
        },
        "tags": [
          "Weekly Schedules"
        ]
      },
      "delete": {
        "operationId": "WeeklyScheduleController_delete",
        "summary": "Delete a weekly schedule",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The deleted weekly schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeeklySchedule"
                }
              }
            }
          }
        },
        "tags": [
          "Weekly Schedules"
        ]
      }
    },
    "/api/v2/appointments": {
      "post": {
        "operationId": "AppointmentController_create",
        "summary": "Create a new appointment",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAppointmentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The appointment has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      },
      "get": {
        "operationId": "AppointmentController_search",
        "summary": "Search appointments",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search appointments by title, state, classification, guest or description",
            "schema": {
              "example": "client meeting",
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by resource ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "calendarId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by calendar ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Start date for filtering appointments",
            "schema": {
              "format": "date-time",
              "example": "2025-05-20T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "End date for filtering appointments",
            "schema": {
              "format": "date-time",
              "example": "2025-05-21T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "calendarType",
            "required": false,
            "in": "query",
            "description": "Filter appointments by calendar type",
            "schema": {
              "example": "agent",
              "enum": [
                "agent",
                "asset"
              ],
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "required": false,
            "in": "query",
            "description": "Filter appointments by service ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filter appointments by status",
            "schema": {
              "example": "confirmed",
              "type": "string"
            }
          },
          {
            "name": "subStatus",
            "required": false,
            "in": "query",
            "description": "Filter appointments by sub-status",
            "schema": {
              "example": "pending",
              "type": "string"
            }
          },
          {
            "name": "origin",
            "required": false,
            "in": "query",
            "description": "Filter appointments by origin",
            "schema": {
              "example": "web",
              "type": "string"
            }
          },
          {
            "name": "model",
            "required": false,
            "in": "query",
            "description": "Filter appointments by model",
            "schema": {
              "example": "standard",
              "type": "string"
            }
          },
          {
            "name": "excludeIds",
            "required": false,
            "in": "query",
            "description": "Exclude appointments with specific IDs",
            "schema": {
              "format": "uuid",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "lang",
            "required": false,
            "in": "query",
            "description": "Preferred languages for localization (ISO 639-1 codes)",
            "schema": {
              "example": "en",
              "type": "string"
            }
          },
          {
            "name": "blocked",
            "required": false,
            "in": "query",
            "description": "Include blocked appointments in the results",
            "schema": {
              "example": false,
              "type": "boolean"
            }
          },
          {
            "name": "fields",
            "required": false,
            "in": "query",
            "description": "Fields to include in the response",
            "schema": {
              "example": [
                "id",
                "title",
                "startDate",
                "endDate",
                "status"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of appointments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      }
    },
    "/api/v2/appointments/{id}/cancel": {
      "post": {
        "operationId": "AppointmentController_cancel",
        "summary": "Cancel an appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelAppointmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The appointment has been successfully canceled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      }
    },
    "/api/v2/appointments/{id}": {
      "put": {
        "operationId": "AppointmentController_update",
        "summary": "Update an existing appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAppointmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The appointment has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      },
      "get": {
        "operationId": "AppointmentController_findOne",
        "summary": "Get a specific appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the appointment details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      },
      "delete": {
        "operationId": "AppointmentController_delete",
        "summary": "Delete an appointment",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The appointment has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      }
    },
    "/api/v2/appointments/{id}/mask-guests": {
      "put": {
        "operationId": "AppointmentController_maskGuests",
        "summary": "Mask appointment guests",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaskGuestsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The appointment guests has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      }
    },
    "/api/v2/appointments/{id}/votes": {
      "get": {
        "operationId": "AppointmentController_findVotes",
        "summary": "Get appointment votes",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Appointment ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the appointment with voting information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          }
        },
        "tags": [
          "Appointments V2"
        ]
      }
    },
    "/api/v2/calendars/{id}": {
      "get": {
        "operationId": "CalendarController_findOne",
        "summary": "Get a specific calendar",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Calendar ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the calendar details including timezone, type, and other configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Calendar"
                }
              }
            }
          }
        },
        "tags": [
          "Calendars V2"
        ]
      }
    },
    "/api/v2/calendars": {
      "get": {
        "operationId": "CalendarController_findAll",
        "summary": "List all calendars",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter calendars",
            "schema": {
              "example": "Meeting",
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter calendars by type (agent or asset)",
            "schema": {
              "enum": [
                "agent",
                "asset"
              ],
              "type": "string"
            }
          },
          {
            "name": "appointmentId",
            "required": false,
            "in": "query",
            "description": "Filter calendars by associated appointment ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "required": false,
            "in": "query",
            "description": "Filter calendars by associated service ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of calendars",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Calendar"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Calendars V2"
        ]
      }
    },
    "/api/v2/availabilities": {
      "post": {
        "operationId": "AvailabilityController_create",
        "summary": "Create a new availability",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAvailabilityDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The availability has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Availability"
                }
              }
            }
          }
        },
        "tags": [
          "Availabilities"
        ]
      },
      "get": {
        "operationId": "AvailabilityController_search",
        "summary": "Search availabilities",
        "parameters": [
          {
            "description": "Search term to filter calendars",
            "required": false,
            "name": "search",
            "in": "query",
            "schema": {
              "example": "Meeting",
              "type": "string"
            }
          },
          {
            "description": "Additional fields for filtering",
            "required": false,
            "name": "extraFields",
            "in": "query",
            "schema": {
              "example": {
                "customField1": "value1",
                "customField2": "value2"
              },
              "type": "object"
            }
          },
          {
            "description": "Filter calendars by type",
            "required": false,
            "name": "type",
            "in": "query",
            "schema": {
              "example": "agent",
              "enum": [
                "agent",
                "asset"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter calendars by associated appointment ID",
            "required": false,
            "name": "appointmentId",
            "in": "query",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "description": "Filter calendars by associated service ID",
            "required": false,
            "name": "serviceId",
            "in": "query",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "calendarId",
            "required": false,
            "in": "query",
            "description": "Filter availabilities by associated calendar ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "required": false,
            "in": "query",
            "description": "Filter availabilities by associated service ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of availabilities",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Availability"
                }
              }
            }
          }
        },
        "tags": [
          "Availabilities"
        ]
      }
    },
    "/api/v2/availabilities/{id}": {
      "put": {
        "operationId": "AvailabilityController_update",
        "summary": "Update an existing availability",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Availability ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAvailabilityDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The availability has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Availability"
                }
              }
            }
          }
        },
        "tags": [
          "Availabilities"
        ]
      },
      "get": {
        "operationId": "AvailabilityController_findOne",
        "summary": "Get a specific availability",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "availability ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the availability details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Availability"
                }
              }
            }
          }
        },
        "tags": [
          "Availabilities"
        ]
      },
      "delete": {
        "operationId": "AvailabilityController_delete",
        "summary": "Delete a availability",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Availability ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The availability has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Availability"
                }
              }
            }
          }
        },
        "tags": [
          "Availabilities"
        ]
      }
    },
    "/api/v2/services": {
      "post": {
        "operationId": "ServiceController_create",
        "summary": "Create a new service",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateServiceDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The service has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ]
      },
      "get": {
        "operationId": "ServiceController_search",
        "summary": "Search services",
        "parameters": [
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Name of the service to filter by",
            "schema": {
              "example": "Consultation",
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Start date to filter services (inclusive)",
            "schema": {
              "format": "date-time",
              "example": "2024-01-01T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "End date to filter services (inclusive)",
            "schema": {
              "format": "date-time",
              "example": "2024-12-31T23:59:59Z",
              "type": "string"
            }
          },
          {
            "name": "userGroupIds",
            "required": false,
            "in": "query",
            "description": "IDs of user groups to filter services by",
            "schema": {
              "example": [
                "a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6"
              ],
              "type": "array"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter services by name or description",
            "schema": {
              "example": "consult",
              "type": "string"
            }
          },
          {
            "name": "serviceType",
            "required": false,
            "in": "query",
            "description": "Type of the service to filter by",
            "schema": {
              "example": "premium",
              "type": "string"
            }
          },
          {
            "name": "calendarId",
            "required": false,
            "in": "query",
            "description": "ID of the calendar to filter services by",
            "schema": {
              "format": "uuid",
              "example": "b1a5f8e2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
              "type": "string"
            }
          },
          {
            "name": "hasAppointments",
            "required": false,
            "in": "query",
            "description": "Indicates if the service has any appointments",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "extraFields",
            "required": false,
            "in": "query",
            "description": "Extra fields",
            "schema": {
              "example": {
                "customField1": "value1",
                "customField2": 42
              },
              "type": "object"
            }
          },
          {
            "name": "calendarExtraFields",
            "required": false,
            "in": "query",
            "description": "Extra fields for the calendars relation",
            "schema": {
              "example": {
                "calendarCustomField1": "value1",
                "calendarCustomField2": 42
              },
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of services",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ]
      }
    },
    "/api/v2/services/{id}": {
      "put": {
        "operationId": "ServiceController_update",
        "summary": "Update an existing service",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateServiceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The service has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ]
      },
      "get": {
        "operationId": "ServiceController_findOne",
        "summary": "Get a specific service",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the service details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ]
      },
      "delete": {
        "operationId": "ServiceController_delete",
        "summary": "Delete a service",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Service ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The service has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ]
      }
    },
    "/api/v1/recordings/{id}": {
      "get": {
        "operationId": "RecordingController_findOne",
        "summary": "Get a recording by ID",
        "description": "Retrieves detailed information about a specific recording",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Recording found successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recording"
                }
              }
            }
          },
          "404": {
            "description": "Recording not found"
          }
        },
        "tags": [
          "Recordings"
        ]
      },
      "delete": {
        "operationId": "RecordingController_delete",
        "summary": "Delete a recording",
        "description": "Permanently removes a recording from the system",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Recording deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recording"
                }
              }
            }
          },
          "404": {
            "description": "Recording not found"
          }
        },
        "tags": [
          "Recordings"
        ]
      }
    },
    "/api/v1/recordings": {
      "get": {
        "operationId": "RecordingController_find",
        "summary": "List recordings",
        "description": "Returns a paginated list of recordings that can be filtered by date range and other criteria",
        "parameters": [
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Filter recordings by start date",
            "schema": {
              "format": "date-time",
              "example": "2025-05-21T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "Filter recordings by end date",
            "schema": {
              "format": "date-time",
              "example": "2025-05-21T23:59:59Z",
              "type": "string"
            }
          },
          {
            "name": "ids",
            "required": false,
            "in": "query",
            "description": "Filter recordings by specific IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "expand",
            "required": false,
            "in": "query",
            "description": "Include related resources in the response",
            "schema": {
              "example": [
                "call",
                "event"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "call",
                  "event"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Recordings retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Recording"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Recordings"
        ]
      }
    },
    "/api/v1/products": {
      "post": {
        "operationId": "ProductController_create",
        "summary": "Create a new product",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "get": {
        "operationId": "ProductController_findAll",
        "summary": "List all products",
        "parameters": [
          {
            "name": "title",
            "required": false,
            "in": "query",
            "description": "Filter by product title",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minPrice",
            "required": false,
            "in": "query",
            "description": "Minimum price filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPrice",
            "required": false,
            "in": "query",
            "description": "Maximum price filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "numProducts",
            "required": false,
            "in": "query",
            "description": "Number of products to return",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Cursor for pagination",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Offset for pagination",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Type of product",
            "schema": {
              "enum": [
                "product",
                "gift"
              ],
              "type": "string"
            }
          },
          {
            "name": "ids",
            "required": false,
            "in": "query",
            "description": "Array of product IDs to filter by",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "extraFields",
            "required": false,
            "in": "query",
            "description": "Additional fields to filter by",
            "schema": {
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of products",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Product"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Products"
        ]
      }
    },
    "/api/v1/products/{id}": {
      "put": {
        "operationId": "ProductController_update",
        "summary": "Update an existing product",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "get": {
        "operationId": "ProductController_findOne",
        "summary": "Get a product by ID",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The found product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "delete": {
        "operationId": "ProductController_delete",
        "summary": "Delete a product",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The deleted product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          }
        },
        "tags": [
          "Products"
        ]
      }
    },
    "/api/v1/product-units": {
      "post": {
        "operationId": "ProductUnitController_create",
        "summary": "Create a new product unit",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductUnitDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created product unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUnit"
                }
              }
            }
          }
        },
        "tags": [
          "Product Units"
        ]
      },
      "get": {
        "operationId": "ProductUnitController_findAll",
        "summary": "Get all units of a product",
        "parameters": [
          {
            "name": "externalId",
            "required": false,
            "in": "query",
            "description": "External identifier of the product unit.",
            "schema": {
              "example": "EXT-12345",
              "type": "string"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "UUID of the user group to filter product units.",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "ids",
            "required": false,
            "in": "query",
            "description": "Array of product unit IDs to filter the results.",
            "schema": {
              "example": [
                "123e4567-e89b-12d3-a456-426614174000",
                "223e4567-e89b-12d3-a456-426614174111"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "schema": {
              "default": 1,
              "example": 2,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page.",
            "schema": {
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter product units.",
            "schema": {
              "example": "monitor",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "UUID of the organization to filter product units.",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440001",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of product units",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUnit"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Product Units"
        ]
      }
    },
    "/api/v1/product-units/{id}": {
      "get": {
        "operationId": "ProductUnitController_findOne",
        "summary": "Get a specific unit of a product",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The found product unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUnit"
                }
              }
            }
          }
        },
        "tags": [
          "Product Units"
        ]
      },
      "put": {
        "operationId": "ProductUnitController_updateUnit",
        "summary": "Update a product unit",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The updated product unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUnit"
                }
              }
            }
          }
        },
        "tags": [
          "Product Units"
        ]
      },
      "delete": {
        "operationId": "ProductUnitController_deleteUnit",
        "summary": "Delete a product unit",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The deleted product unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUnit"
                }
              }
            }
          }
        },
        "tags": [
          "Product Units"
        ]
      }
    },
    "/api/v1/users": {
      "post": {
        "operationId": "UserController_create",
        "summary": "Create a new user",
        "description": "Creates a new user with the specified details. The user will be associated with an organization and optionally a user group.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The user has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input - missing or invalid required fields"
          }
        },
        "tags": [
          "Users"
        ]
      },
      "get": {
        "operationId": "UserController_list",
        "summary": "List all users",
        "description": "Retrieves a paginated list of users with optional filtering",
        "parameters": [
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter users by organization ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter users by user group ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search users by name or email",
            "schema": {
              "example": "john",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of users",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/User"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v1/users/{id}": {
      "put": {
        "operationId": "UserController_update",
        "summary": "Update an existing user",
        "description": "Updates the specified user's information. Only provided fields will be updated.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user to update",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The user has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": "User not found"
          }
        },
        "tags": [
          "Users"
        ]
      },
      "get": {
        "operationId": "UserController_get",
        "summary": "Get a specific user",
        "description": "Retrieves detailed information about a specific user by their ID",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user to retrieve",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the user details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": "User not found"
          }
        },
        "tags": [
          "Users"
        ]
      },
      "delete": {
        "operationId": "UserController_delete",
        "summary": "Delete a user",
        "description": "Deletes a user from the system. This operation cannot be undone.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user to delete",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": "User not found"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/v1/user-groups": {
      "post": {
        "operationId": "UserGroupController_create",
        "summary": "Create a new user group",
        "description": "Creates a new user group within an organization. User groups help organize users and manage permissions.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserGroupDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The user group has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroup"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input - missing or invalid required fields"
          }
        },
        "tags": [
          "User Groups"
        ]
      },
      "get": {
        "operationId": "UserGroupController_list",
        "summary": "List all user groups",
        "description": "Retrieves a paginated list of user groups with optional filtering",
        "parameters": [
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter user groups by organization ID",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search user groups by name or description",
            "schema": {
              "example": "sales",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of user groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserGroup"
                  }
                }
              }
            }
          }
        },
        "tags": [
          "User Groups"
        ]
      }
    },
    "/api/v1/user-groups/{id}": {
      "put": {
        "operationId": "UserGroupController_update",
        "summary": "Update an existing user group",
        "description": "Updates the specified user group's information. Only provided fields will be updated.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user group to update",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserGroupDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The user group has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroup"
                }
              }
            }
          },
          "404": {
            "description": "User group not found"
          }
        },
        "tags": [
          "User Groups"
        ]
      },
      "get": {
        "operationId": "UserGroupController_get",
        "summary": "Get a specific user group",
        "description": "Retrieves detailed information about a specific user group by its ID",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user group to retrieve",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the user group details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroup"
                }
              }
            }
          },
          "404": {
            "description": "User group not found"
          }
        },
        "tags": [
          "User Groups"
        ]
      },
      "delete": {
        "operationId": "UserGroupController_delete",
        "summary": "Delete a user group",
        "description": "Deletes a user group from the system. This operation cannot be undone.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "The UUID of the user group to delete",
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user group has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroup"
                }
              }
            }
          },
          "404": {
            "description": "User group not found"
          }
        },
        "tags": [
          "User Groups"
        ]
      }
    },
    "/api/v1/events": {
      "post": {
        "operationId": "EventController_create",
        "summary": "Create a new event",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The event has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        },
        "tags": [
          "Events"
        ]
      },
      "get": {
        "operationId": "EventController_search",
        "summary": "List events",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter events by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter events by name or ID",
            "schema": {
              "example": "Conference",
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "required": false,
            "in": "query",
            "description": "Start date for filtering events (ISO 8601 format). Returns events with at least one occurrence on or after this date.",
            "schema": {
              "example": "2025-10-01T00:00:00.000Z",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "required": false,
            "in": "query",
            "description": "End date for filtering events (ISO 8601 format). Returns events with at least one occurrence on or before this date.",
            "schema": {
              "example": "2025-12-31T23:59:59.999Z",
              "type": "string"
            }
          },
          {
            "name": "categories",
            "required": false,
            "in": "query",
            "description": "Array of category UUIDs to filter events. Returns events that belong to at least one of these categories. Can be provided as multiple query parameters (e.g., ?categories=uuid1&categories=uuid2) or as a comma-separated string.",
            "schema": {
              "example": [
                "550e8400-e29b-41d4-a716-446655440000",
                "550e8400-e29b-41d4-a716-446655440001"
              ],
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "a"
                }
              }
            }
          },
          {
            "name": "range",
            "required": false,
            "in": "query",
            "description": "Range filter for ordering events",
            "schema": {
              "example": "upcoming",
              "enum": [
                "all",
                "upcoming",
                "past",
                "today",
                "thisWeek",
                "thisMonth",
                "custom"
              ],
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted events in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter events by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateId",
            "required": false,
            "in": "query",
            "description": "Filter events by template ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateSlug",
            "required": false,
            "in": "query",
            "description": "Filter events by template slug",
            "schema": {
              "example": "my-template-slug",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventsResponseDto"
                }
              }
            }
          }
        },
        "tags": [
          "Events"
        ]
      }
    },
    "/api/v1/events/{id}": {
      "put": {
        "operationId": "EventController_update",
        "summary": "Update an existing event",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The event has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        },
        "tags": [
          "Events"
        ]
      },
      "get": {
        "operationId": "EventController_findOne",
        "summary": "Get a specific event",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed events",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the event details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        },
        "tags": [
          "Events"
        ]
      },
      "delete": {
        "operationId": "EventController_delete",
        "summary": "Delete an event",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed events",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The event has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        },
        "tags": [
          "Events"
        ]
      }
    },
    "/api/v1/event-categories": {
      "post": {
        "operationId": "EventCategoryController_create",
        "summary": "Create a new event category",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventCategoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The category has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategory"
                }
              }
            }
          }
        },
        "tags": [
          "Event Categories"
        ]
      },
      "get": {
        "operationId": "EventCategoryController_search",
        "summary": "List event categories",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter categories by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter categories by name or slug",
            "schema": {
              "example": "Technology",
              "type": "string"
            }
          },
          {
            "name": "timeRange",
            "required": false,
            "in": "query",
            "description": "Time range filter for events: upcoming, past, or all",
            "schema": {
              "example": "upcoming",
              "enum": [
                "upcoming",
                "past",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "name": "channelType",
            "required": false,
            "in": "query",
            "description": "Filter events by publishing channel type",
            "schema": {
              "example": "WEBSITE",
              "enum": [
                "WEBSITE",
                "MOBILE_APP",
                "SOCIAL_MEDIA",
                "EMAIL",
                "OTHER"
              ],
              "type": "string"
            }
          },
          {
            "name": "channelExternalId",
            "required": false,
            "in": "query",
            "description": "Filter events by publishing channel external ID",
            "schema": {
              "example": "external123",
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted categories in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter categories by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of categories",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategory"
                }
              }
            }
          }
        },
        "tags": [
          "Event Categories"
        ]
      }
    },
    "/api/v1/event-categories/{id}": {
      "put": {
        "operationId": "EventCategoryController_update",
        "summary": "Update an existing event category",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Category ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventCategoryDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The category has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategory"
                }
              }
            }
          }
        },
        "tags": [
          "Event Categories"
        ]
      },
      "get": {
        "operationId": "EventCategoryController_findOne",
        "summary": "Get a specific event category",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed categories",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Category ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the category details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategory"
                }
              }
            }
          }
        },
        "tags": [
          "Event Categories"
        ]
      },
      "delete": {
        "operationId": "EventCategoryController_delete",
        "summary": "Delete an event category",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed categories",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Category ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The category has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategory"
                }
              }
            }
          }
        },
        "tags": [
          "Event Categories"
        ]
      }
    },
    "/api/v1/event-registrations": {
      "post": {
        "operationId": "EventRegistrationController_create",
        "summary": "Create a new event registration",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventRegistrationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The registration has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistration"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registrations"
        ]
      },
      "get": {
        "operationId": "EventRegistrationController_search",
        "summary": "List event registrations",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter registrations by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "eventId",
            "required": false,
            "in": "query",
            "description": "Limits the results to registrations that belong to a specific event",
            "schema": {
              "format": "uuid",
              "example": "4c4f93e6-38bb-4a1e-8286-e89f9853cf52",
              "type": "string"
            }
          },
          {
            "name": "occurrenceId",
            "required": false,
            "in": "query",
            "description": "Limits the results to registrations that belong to a specific occurrence",
            "schema": {
              "format": "uuid",
              "example": "5d5f94e7-49cc-5b2f-9397-f9af0964df63",
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filters registrations by their current status",
            "schema": {
              "example": "CONFIRMED",
              "enum": [
                "PENDING",
                "CONFIRMED",
                "CANCELLED",
                "WAITING_LIST",
                "ATTENDED"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Performs a case-insensitive search across event name, event ID, user ID, user email, phone, first or last name",
            "schema": {
              "maxLength": 255,
              "example": "Marketing Summit",
              "type": "string"
            }
          },
          {
            "name": "categories",
            "required": false,
            "in": "query",
            "description": "Array of category UUIDs to filter registrations. Returns registrations for events that belong to at least one of these categories. Can be provided as multiple query parameters (e.g., ?categories=uuid1&categories=uuid2) or as a comma-separated string.",
            "schema": {
              "example": [
                "550e8400-e29b-41d4-a716-446655440000",
                "550e8400-e29b-41d4-a716-446655440001"
              ],
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "a"
                }
              }
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted registrations in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter registrations by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateId",
            "required": false,
            "in": "query",
            "description": "Filter registrations by template ID (through occurrence -> event relation)",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of registrations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistration"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registrations"
        ]
      }
    },
    "/api/v1/event-registrations/{id}": {
      "put": {
        "operationId": "EventRegistrationController_update",
        "summary": "Update an existing event registration",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventRegistrationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The registration has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistration"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registrations"
        ]
      },
      "get": {
        "operationId": "EventRegistrationController_findOne",
        "summary": "Get a specific event registration",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed registrations",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the registration details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistration"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registrations"
        ]
      },
      "delete": {
        "operationId": "EventRegistrationController_delete",
        "summary": "Delete an event registration",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed registrations",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The registration has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistration"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registrations"
        ]
      }
    },
    "/api/v1/event-registration-forms": {
      "post": {
        "operationId": "EventRegistrationFormController_create",
        "summary": "Create a new registration form",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventRegistrationFormDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The registration form has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistrationForm"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registration Forms"
        ]
      },
      "get": {
        "operationId": "EventRegistrationFormController_search",
        "summary": "List registration forms",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter registration forms by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter registration forms by name",
            "schema": {
              "example": "Conference 2024",
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted registration forms in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter registration forms by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateId",
            "required": false,
            "in": "query",
            "description": "Filter registration forms by template ID (through event templates relation)",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateSlug",
            "required": false,
            "in": "query",
            "description": "Filter registration forms by template slug",
            "schema": {
              "example": "my-template-slug",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of registration forms",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistrationForm"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registration Forms"
        ]
      }
    },
    "/api/v1/event-registration-forms/{id}": {
      "put": {
        "operationId": "EventRegistrationFormController_update",
        "summary": "Update an existing registration form",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration Form ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventRegistrationFormDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The registration form has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistrationForm"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registration Forms"
        ]
      },
      "get": {
        "operationId": "EventRegistrationFormController_findOne",
        "summary": "Get a specific registration form",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed registration forms",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration Form ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the registration form details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistrationForm"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registration Forms"
        ]
      },
      "delete": {
        "operationId": "EventRegistrationFormController_delete",
        "summary": "Delete a registration form",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed registration forms",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Registration Form ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The registration form has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRegistrationForm"
                }
              }
            }
          }
        },
        "tags": [
          "Event Registration Forms"
        ]
      }
    },
    "/api/v1/event-templates": {
      "post": {
        "operationId": "EventTemplateController_create",
        "summary": "Create a new event template",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventTemplateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The event template has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTemplate"
                }
              }
            }
          }
        },
        "tags": [
          "Event Templates"
        ]
      },
      "get": {
        "operationId": "EventTemplateController_search",
        "summary": "List event templates",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter event templates by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter event templates by name",
            "schema": {
              "example": "Tech Meetup Template",
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted event templates in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter event templates by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of event templates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTemplate"
                }
              }
            }
          }
        },
        "tags": [
          "Event Templates"
        ]
      }
    },
    "/api/v1/event-templates/{id}": {
      "put": {
        "operationId": "EventTemplateController_update",
        "summary": "Update an existing event template",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event Template ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventTemplateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The event template has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTemplate"
                }
              }
            }
          }
        },
        "tags": [
          "Event Templates"
        ]
      },
      "get": {
        "operationId": "EventTemplateController_findOne",
        "summary": "Get a specific event template",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed event templates",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event Template ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the event template details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTemplate"
                }
              }
            }
          }
        },
        "tags": [
          "Event Templates"
        ]
      },
      "delete": {
        "operationId": "EventTemplateController_delete",
        "summary": "Delete an event template",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed event templates",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event Template ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The event template has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTemplate"
                }
              }
            }
          }
        },
        "tags": [
          "Event Templates"
        ]
      }
    },
    "/api/v1/event-users": {
      "post": {
        "operationId": "EventUserController_create",
        "summary": "Create a new event user",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventUserDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The event user has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventUser"
                }
              }
            }
          }
        },
        "tags": [
          "Event Users"
        ]
      },
      "get": {
        "operationId": "EventUserController_search",
        "summary": "List event users",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter users by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter users by name, ID, or external ID",
            "schema": {
              "example": "John",
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted users in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter users by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateId",
            "required": false,
            "in": "query",
            "description": "Filter users by template ID (through registrations -> occurrence -> event relation)",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateSlug",
            "required": false,
            "in": "query",
            "description": "Filter users by template slug",
            "schema": {
              "example": "my-template-slug",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of event users",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventUser"
                }
              }
            }
          }
        },
        "tags": [
          "Event Users"
        ]
      }
    },
    "/api/v1/event-users/{id}": {
      "put": {
        "operationId": "EventUserController_update",
        "summary": "Update an existing event user",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event User ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventUserDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The event user has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventUser"
                }
              }
            }
          }
        },
        "tags": [
          "Event Users"
        ]
      },
      "get": {
        "operationId": "EventUserController_findOne",
        "summary": "Get a specific event user",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed users",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event User ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the event user details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventUser"
                }
              }
            }
          }
        },
        "tags": [
          "Event Users"
        ]
      },
      "delete": {
        "operationId": "EventUserController_delete",
        "summary": "Delete an event user",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed users",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Event User ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The event user has been successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventUser"
                }
              }
            }
          }
        },
        "tags": [
          "Event Users"
        ]
      }
    },
    "/api/v1/reviews": {
      "post": {
        "operationId": "ReviewController_create",
        "summary": "Create a new review",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEventReviewDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The review has been successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventReview"
                }
              }
            }
          }
        },
        "tags": [
          "EventReviews"
        ]
      },
      "get": {
        "operationId": "ReviewController_findAll",
        "summary": "List reviews",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "minimum": 1,
              "default": 10,
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (starts at 1)",
            "schema": {
              "minimum": 1,
              "default": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Field name and direction to sort results by. Use \"ASC\" or \"DESC\".",
            "schema": {
              "default": "createdAt DESC",
              "example": "createdAt DESC",
              "type": "string"
            }
          },
          {
            "name": "organizationId",
            "required": false,
            "in": "query",
            "description": "Filter reviews by organization ID",
            "schema": {
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "type": "string"
            }
          },
          {
            "name": "occurrenceId",
            "required": false,
            "in": "query",
            "description": "Filter by occurrence ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "userId",
            "required": false,
            "in": "query",
            "description": "Filter by user ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440001",
              "type": "string"
            }
          },
          {
            "name": "eventId",
            "required": false,
            "in": "query",
            "description": "Filter by event ID",
            "schema": {
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440002",
              "type": "string"
            }
          },
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include soft-deleted reviews in the results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "userGroupId",
            "required": false,
            "in": "query",
            "description": "Filter reviews by user group ID",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          },
          {
            "name": "templateId",
            "required": false,
            "in": "query",
            "description": "Filter reviews by template ID (through occurrence -> event relation)",
            "schema": {
              "example": "550e8400-e29b-41d4-a716-446655440000",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of reviews",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventReviewsResponseDto"
                }
              }
            }
          }
        },
        "tags": [
          "EventReviews"
        ]
      }
    },
    "/api/v1/reviews/{id}": {
      "put": {
        "operationId": "ReviewController_update",
        "summary": "Update an existing review",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "EventReview ID",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEventReviewDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The review has been successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventReview"
                }
              }
            }
          }
        },
        "tags": [
          "EventReviews"
        ]
      },
      "get": {
        "operationId": "ReviewController_findOne",
        "summary": "Get a specific review",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed reviews",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "EventReview ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the review details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventReview"
                }
              }
            }
          }
        },
        "tags": [
          "EventReviews"
        ]
      },
      "delete": {
        "operationId": "ReviewController_remove",
        "summary": "Delete a review",
        "parameters": [
          {
            "name": "withTrashed",
            "required": false,
            "in": "query",
            "description": "Include trashed reviews",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "EventReview ID",
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "description": "The review has been successfully deleted"
          }
        },
        "tags": [
          "EventReviews"
        ]
      }
    },
    "/api/v1/integrations/dilema": {
      "put": {
        "operationId": "IntegrationController_dilemaIntegration",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DilemaIntegrationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Integrations"
        ]
      }
    },
    "/api/v1/integrations/trackback": {
      "put": {
        "operationId": "IntegrationController_trackback",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackbackDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Integrations"
        ]
      }
    }
  },
  "info": {
    "title": "ONLIVE.SITE Open API",
    "description": "\nThe ONLIVE.SITE Open API provides a comprehensive set of endpoints for managing multimedia content, user management, scheduling, and more. \n\nKey Features:\n- User Management: Create and manage users and user groups\n- Calendar Management: Handle appointments, schedules, and bookings\n- Multimedia: Manage multimedia assets and files\n- Products: Product catalog and inventory management\n- Virtual Rooms: Configure and manage virtual meeting spaces\n\nAuthentication:\n- API Key authentication required for all endpoints\n- Keys should be included in the Authorization header\n- Contact support for API key provisioning\n\nVisit the following link for more authentication details:\n<a href=\"https://dev-docs-staging.onlive.site/docs/open-api/auth\" target=\"_blank\">Authentication specifications and guides</a>\n\nFor detailed integration guides and examples, visit our documentation portal.\n        ",
    "version": "1.0",
    "contact": {}
  },
  "tags": [
    {
      "name": "Users",
      "description": "Manage users, their roles, and permissions"
    },
    {
      "name": "User Groups",
      "description": "Organize users into groups for easier management"
    },
    {
      "name": "Appointments V1",
      "description": "Schedule and manage calendar appointments for API v1"
    },
    {
      "name": "Appointments V2",
      "description": "Schedule and manage calendar appointments for API v2"
    },
    {
      "name": "Calendars V1",
      "description": "Configure calendars and availability for API v1"
    },
    {
      "name": "Calendars V2",
      "description": "Configure calendars and availability for API v2"
    },
    {
      "name": "Multimedia",
      "description": "Upload and manage multimedia assets"
    },
    {
      "name": "Products",
      "description": "Manage products and product units"
    },
    {
      "name": "Presets",
      "description": "Configure system-wide presets"
    },
    {
      "name": "Rooms",
      "description": "Create and manage virtual meeting rooms"
    },
    {
      "name": "Service Templates",
      "description": "Define reusable service configurations"
    },
    {
      "name": "Service Types",
      "description": "Configure different types of services"
    },
    {
      "name": "Weekly Schedules",
      "description": "Set up recurring schedules"
    }
  ],
  "servers": [],
  "components": {
    "securitySchemes": {
      "Authorization": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "API key for authentication. Add your API key with the format: \"ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature\""
      }
    },
    "schemas": {
      "AppSourceDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the application source",
            "example": "https://example.com/app/source"
          },
          "security": {
            "type": "string",
            "description": "Security configuration for the application source",
            "example": "oauth2"
          }
        },
        "required": [
          "url",
          "security"
        ]
      },
      "AppDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of application instance",
            "enum": [
              "custom",
              "browser",
              "selenium"
            ],
            "example": "browser"
          },
          "source": {
            "description": "Source configuration for the application",
            "allOf": [
              {
                "$ref": "#/components/schemas/AppSourceDto"
              }
            ]
          },
          "resource": {
            "type": "string",
            "description": "Resource identifier or path for the application",
            "example": "/path/to/resource"
          },
          "args": {
            "type": "string",
            "description": "Additional arguments for the application",
            "example": "lang=en&theme=dark"
          }
        },
        "required": [
          "type",
          "resource"
        ]
      },
      "CoverVideoDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the cover video",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "url": {
            "type": "string",
            "description": "URL where the cover video can be accessed",
            "example": "https://example.com/videos/cover-123.mp4"
          },
          "size": {
            "type": "number",
            "description": "Size of the cover video file",
            "example": 1048576,
            "minimum": 0
          },
          "format": {
            "type": "string",
            "description": "Format/extension of the cover video file",
            "example": "mp4"
          },
          "duration": {
            "type": "number",
            "description": "Duration of the cover video",
            "example": 30,
            "minimum": 0
          }
        }
      },
      "OptionsDto": {
        "type": "object",
        "properties": {
          "usePixelStreaming": {
            "type": "boolean",
            "description": "Enable/disable pixel streaming functionality",
            "example": true,
            "default": false
          },
          "timeout": {
            "type": "number",
            "description": "Timeout duration in milliseconds",
            "example": 30000,
            "minimum": 0
          },
          "showBooking": {
            "type": "boolean",
            "description": "Show/hide booking interface",
            "example": true,
            "default": true
          },
          "showRegister": {
            "type": "boolean",
            "description": "Show/hide registration interface",
            "example": true,
            "default": true
          }
        }
      },
      "CreateMultimediaDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the multimedia content",
            "example": "Product Demo Video"
          },
          "app": {
            "description": "Application configuration for immersive content",
            "allOf": [
              {
                "$ref": "#/components/schemas/AppDto"
              }
            ]
          },
          "url": {
            "type": "string",
            "description": "URL where the multimedia content can be accessed",
            "example": "https://example.com/multimedia/video-123.mp4"
          },
          "format": {
            "type": "string",
            "description": "Format/MIME type of the multimedia content",
            "example": "video/mp4"
          },
          "description": {
            "type": "string",
            "description": "Optional description of the multimedia content",
            "example": "A detailed product demonstration video with feature highlights"
          },
          "size": {
            "type": "number",
            "description": "Size of the multimedia file",
            "example": 5242880,
            "minimum": 0
          },
          "duration": {
            "type": "number",
            "description": "Duration of the multimedia content",
            "example": 300,
            "minimum": 0
          },
          "environment": {
            "type": "object",
            "description": "Environment-specific configuration",
            "example": {
              "region": "us-east-1",
              "encoding": "h264"
            }
          },
          "coverVideo": {
            "description": "Cover video information",
            "allOf": [
              {
                "$ref": "#/components/schemas/CoverVideoDto"
              }
            ]
          },
          "options": {
            "description": "Additional configuration options",
            "allOf": [
              {
                "$ref": "#/components/schemas/OptionsDto"
              }
            ]
          }
        },
        "required": [
          "name",
          "url",
          "format"
        ]
      },
      "AppSource": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL of the application source",
            "example": "https://example.com/app-source"
          },
          "security": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "security"
        ]
      },
      "App": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of application",
            "example": "web"
          },
          "source": {
            "description": "Source configuration for the application",
            "allOf": [
              {
                "$ref": "#/components/schemas/AppSource"
              }
            ]
          },
          "resource": {
            "type": "string",
            "description": "Resource identifier or path",
            "example": "/api/v1/resources/123"
          },
          "args": {
            "type": "string",
            "description": "Additional arguments for the application",
            "example": "lang=en&theme=dark"
          }
        },
        "required": [
          "type",
          "source",
          "resource"
        ]
      },
      "MultimediaStatusEnum": {
        "type": "string",
        "description": "Current status of the multimedia content",
        "enum": [
          "ready",
          "need_action",
          "error"
        ]
      },
      "CoverVideo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the cover video",
            "example": "12345678-abcd-efgh-ijkl-mnopqrstuvwx"
          },
          "url": {
            "type": "string",
            "description": "URL where the cover video can be accessed",
            "example": "https://example.com/videos/cover-123.mp4"
          },
          "size": {
            "type": "number",
            "description": "Size of the video file",
            "minimum": 0
          },
          "format": {
            "type": "string",
            "description": "Format/extension of the video file",
            "example": "mp4"
          },
          "duration": {
            "type": "number",
            "description": "Duration of the video",
            "example": 30,
            "minimum": 0
          }
        }
      },
      "Options": {
        "type": "object",
        "properties": {
          "usePixelStreaming": {
            "type": "boolean",
            "description": "Flag to enable/disable pixel streaming",
            "example": true,
            "default": false
          },
          "timeout": {
            "type": "number",
            "description": "Timeout duration in milliseconds",
            "example": 30000,
            "minimum": 0
          },
          "showBooking": {
            "type": "boolean",
            "description": "Flag to control visibility of booking interface",
            "example": true,
            "default": true
          },
          "showRegister": {
            "type": "boolean",
            "description": "Flag to control visibility of registration interface",
            "example": true,
            "default": true
          }
        }
      },
      "Multimedia": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the multimedia content",
            "example": "Product Demo Video"
          },
          "app": {
            "description": "Application configuration for the multimedia content",
            "allOf": [
              {
                "$ref": "#/components/schemas/App"
              }
            ]
          },
          "url": {
            "type": "string",
            "description": "URL where the multimedia content can be accessed",
            "example": "https://example.com/multimedia/video-123.mp4"
          },
          "format": {
            "type": "string",
            "description": "Format/extension of the multimedia file",
            "example": "mp4"
          },
          "description": {
            "type": "string",
            "description": "Optional description of the multimedia content",
            "example": "A detailed product demonstration video with feature highlights"
          },
          "size": {
            "type": "number",
            "description": "Size of the multimedia file in bytes",
            "example": 5242880,
            "minimum": 0
          },
          "duration": {
            "type": "number",
            "description": "Duration of the multimedia content in seconds",
            "example": 300,
            "minimum": 0
          },
          "status": {
            "example": "ready",
            "$ref": "#/components/schemas/MultimediaStatusEnum"
          },
          "environment": {
            "type": "object",
            "description": "Environment-specific configuration",
            "example": {
              "region": "us-east-1",
              "encoding": "h264"
            }
          },
          "coverVideo": {
            "description": "Cover video information",
            "allOf": [
              {
                "$ref": "#/components/schemas/CoverVideo"
              }
            ]
          },
          "options": {
            "description": "Additional configuration options",
            "allOf": [
              {
                "$ref": "#/components/schemas/Options"
              }
            ]
          }
        },
        "required": [
          "name",
          "app",
          "url",
          "format",
          "status"
        ]
      },
      "UpdateMultimediaDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the multimedia content",
            "example": "Product Demo Video"
          },
          "app": {
            "description": "Application configuration for immersive content",
            "allOf": [
              {
                "$ref": "#/components/schemas/AppDto"
              }
            ]
          },
          "url": {
            "type": "string",
            "description": "URL where the multimedia content can be accessed",
            "example": "https://example.com/multimedia/video-123.mp4"
          },
          "format": {
            "type": "string",
            "description": "Format/MIME type of the multimedia content",
            "example": "video/mp4"
          },
          "description": {
            "type": "string",
            "description": "Optional description of the multimedia content",
            "example": "A detailed product demonstration video with feature highlights"
          },
          "size": {
            "type": "number",
            "description": "Size of the multimedia file",
            "example": 5242880,
            "minimum": 0
          },
          "duration": {
            "type": "number",
            "description": "Duration of the multimedia content",
            "example": 300,
            "minimum": 0
          },
          "environment": {
            "type": "object",
            "description": "Environment-specific configuration",
            "example": {
              "region": "us-east-1",
              "encoding": "h264"
            }
          },
          "coverVideo": {
            "description": "Cover video information",
            "allOf": [
              {
                "$ref": "#/components/schemas/CoverVideoDto"
              }
            ]
          },
          "options": {
            "description": "Additional configuration options",
            "allOf": [
              {
                "$ref": "#/components/schemas/OptionsDto"
              }
            ]
          }
        },
        "required": [
          "name",
          "url",
          "format"
        ]
      },
      "CreatePresetDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the preset",
            "example": "My Custom Preset"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the preset",
            "example": "This preset contains settings for video streaming"
          },
          "logo": {
            "type": "string",
            "description": "URL or path to the preset logo",
            "example": "https://example.com/logo.png"
          },
          "image": {
            "type": "string",
            "description": "URL or path to the preset cover image",
            "example": "https://example.com/cover.png"
          },
          "assetIds": {
            "description": "Array of multimedia asset IDs associated with this preset",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "assets": {
            "description": "Array of multimedia assets to be created with this preset",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateMultimediaDto"
            }
          },
          "products": {
            "description": "Array of product identifiers associated with this preset",
            "example": [
              "product1",
              "product2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "effectId": {
            "type": "string",
            "description": "ID of the effect to be applied to this preset",
            "example": "effect123"
          }
        },
        "required": [
          "title"
        ]
      },
      "UpdatePresetDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the preset",
            "example": "My Custom Preset"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the preset",
            "example": "This preset contains settings for video streaming"
          },
          "logo": {
            "type": "string",
            "description": "URL or path to the preset logo",
            "example": "https://example.com/logo.png"
          },
          "image": {
            "type": "string",
            "description": "URL or path to the preset cover image",
            "example": "https://example.com/cover.png"
          },
          "assetIds": {
            "description": "Array of multimedia asset IDs associated with this preset",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "assets": {
            "description": "Array of multimedia assets to be created with this preset",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateMultimediaDto"
            }
          },
          "products": {
            "description": "Array of product identifiers associated with this preset",
            "example": [
              "product1",
              "product2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "effectId": {
            "type": "string",
            "description": "ID of the effect to be applied to this preset",
            "example": "effect123"
          }
        },
        "required": [
          "title"
        ]
      },
      "ExtraFieldDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the extra field",
            "example": "customField1"
          },
          "value": {
            "type": "string",
            "description": "Value of the extra field",
            "example": "customValue"
          },
          "type": {
            "type": "string",
            "description": "Type of the extra field",
            "example": "string"
          },
          "required": {
            "type": "boolean",
            "description": "Whether the extra field is required",
            "example": false
          }
        }
      },
      "ActorDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name of the actor/participant",
            "example": "John Smith"
          },
          "email": {
            "type": "string",
            "description": "Email address of the actor/participant",
            "example": "john.smith@example.com"
          },
          "role": {
            "type": "string",
            "description": "Role of the actor in the room",
            "example": "host",
            "enum": [
              "host",
              "guest"
            ]
          },
          "isAdmin": {
            "type": "boolean",
            "description": "Whether the actor has admin privileges (only applicable for hosts)",
            "example": true
          },
          "extraFields": {
            "description": "Additional custom fields for the actor",
            "example": [
              {
                "name": "company",
                "value": "Acme Corp",
                "type": "string",
                "required": false
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtraFieldDto"
            }
          }
        },
        "required": [
          "role",
          "isAdmin"
        ]
      },
      "DiscountCodeDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the discount",
            "example": "Summer Sale"
          },
          "description": {
            "type": "string",
            "description": "Description of the discount offer",
            "example": "Special summer discount for team meetings"
          },
          "discountType": {
            "type": "string",
            "description": "Type of discount to be applied",
            "enum": [
              "promocode",
              "percent"
            ],
            "example": "percent"
          },
          "duration": {
            "type": "number",
            "description": "Duration of the discount",
            "example": 60
          },
          "percent": {
            "type": "number",
            "description": "Percentage value of the discount (required when discountType is \"percent\")",
            "example": 20
          },
          "discountCode": {
            "type": "string",
            "description": "Promotional code for the discount (required when discountType is \"promocode\")",
            "example": "SUMMER2025"
          }
        },
        "required": [
          "name",
          "discountType",
          "duration"
        ]
      },
      "RoomTemplateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the room template",
            "example": "Team Meeting Room"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the room template",
            "example": "A virtual room for team meetings with video conferencing capabilities"
          },
          "mainImage": {
            "type": "string",
            "description": "URL of the main image for the room template",
            "example": "https://example.com/room-images/team-meeting.jpg"
          },
          "duration": {
            "type": "number",
            "description": "Duration of the room session in minutes",
            "example": 60
          },
          "assets": {
            "description": "Array of asset UUIDs associated with the room",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "actors": {
            "description": "List of actors (participants) in the room",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActorDto"
            }
          },
          "products": {
            "description": "List of product identifiers associated with the room",
            "example": [
              "product-1",
              "product-2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presetId": {
            "type": "string",
            "description": "ID of the preset",
            "example": "preset-123"
          },
          "adminUserEmail": {
            "type": "string",
            "description": "Email address of the admin user for the room",
            "example": "admin@example.com"
          },
          "chatManagerUsersEmails": {
            "description": "List of email addresses for chat manager users",
            "example": [
              "manager1@example.com",
              "manager2@example.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "discountCodes": {
            "description": "List of discount codes applicable to the room",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DiscountCodeDto"
            }
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the room template",
            "example": "This room is reserved for VIP meetings."
          },
          "labels": {
            "description": "Labels or tags associated with the room template. Labels cannot contain special characters.",
            "example": [
              "meeting",
              "vip",
              "internal"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "description",
          "actors",
          "adminUserEmail"
        ]
      },
      "CreateRoomDto": {
        "type": "object",
        "properties": {
          "calendarize": {
            "type": "boolean",
            "description": "Whether the room should be added to calendar",
            "example": true
          },
          "origin": {
            "type": "string",
            "description": "Origin/source of the room creation request",
            "example": "web-app"
          },
          "template": {
            "description": "Room template configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/RoomTemplateDto"
              }
            ]
          }
        },
        "required": [
          "template"
        ]
      },
      "UpdateRoomDto": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "Origin/source of the room creation request",
            "example": "web-app"
          },
          "template": {
            "description": "Room template configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/RoomTemplateDto"
              }
            ]
          }
        },
        "required": [
          "template"
        ]
      },
      "PreferenceDto": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The name/key of the preference field",
            "example": "notificationChannel"
          },
          "value": {
            "type": "string",
            "description": "The value of the preference field",
            "example": "email"
          },
          "required": {
            "type": "boolean",
            "description": "Whether this preference is required",
            "example": true
          }
        },
        "required": [
          "field",
          "value",
          "required"
        ]
      },
      "UserPreferenceDto": {
        "type": "object",
        "properties": {
          "agent": {
            "description": "Preferences specific to agent type users",
            "example": [
              {
                "field": "contactMethod",
                "value": "phone",
                "required": true
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PreferenceDto"
            }
          },
          "asset": {
            "description": "Preferences specific to asset type resources",
            "example": [
              {
                "field": "accessType",
                "value": "public",
                "required": false
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PreferenceDto"
            }
          }
        }
      },
      "EventDto": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Unique identifier for the event",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "iCallUrl": {
            "type": "string",
            "description": "URL for the video call/meeting",
            "example": "https://meet.example.com/room/123"
          },
          "room": {
            "type": "string",
            "description": "Name of the virtual room where the event takes place",
            "example": "Meeting Room 1"
          }
        },
        "required": [
          "eventId",
          "iCallUrl",
          "room"
        ]
      },
      "AppointmentReminderDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "number",
            "description": "Time value for the reminder (to be used with unit)",
            "example": 10,
            "minimum": 0
          },
          "unit": {
            "type": "string",
            "description": "Time unit for the reminder. \"s\" for seconds, \"m\" for minutes, \"h\" for hours",
            "example": "m",
            "enum": [
              "s",
              "m",
              "h"
            ]
          }
        },
        "required": [
          "time",
          "unit"
        ]
      },
      "AppointmentGuestDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the appointment guest",
            "example": "guest@example.com"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the guest",
            "example": {
              "company": "Acme Corp",
              "role": "Manager",
              "notes": "VIP client"
            }
          }
        },
        "required": [
          "email"
        ]
      },
      "CreateAppointmentDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Title of the appointment",
            "example": "Quarterly Review Meeting"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the appointment",
            "example": "Quarterly performance review meeting with team leads"
          },
          "startAt": {
            "format": "date-time",
            "type": "string",
            "description": "Start time of the appointment",
            "example": "2025-05-14T10:00:00Z"
          },
          "endAt": {
            "format": "date-time",
            "type": "string",
            "description": "End time of the appointment",
            "example": "2025-05-14T11:00:00Z"
          },
          "lang": {
            "type": "string",
            "description": "Language code for the appointment",
            "example": "en-US"
          },
          "status": {
            "type": "string",
            "description": "Status of the appointment",
            "example": "confirmed"
          },
          "subStatus": {
            "type": "string",
            "description": "Sub-status of the appointment",
            "example": "pending"
          },
          "reminders": {
            "description": "List of reminders for the appointment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReminderDto"
            }
          },
          "origin": {
            "type": "string",
            "description": "Origin/source of the appointment creation",
            "example": "web-portal"
          },
          "originUrl": {
            "type": "string",
            "description": "Origin URL of the appointment",
            "example": "https://example.com/create"
          },
          "comment": {
            "type": "string",
            "description": "Comments for the appointment",
            "example": "Customer requested special arrangements"
          },
          "interactionId": {
            "type": "string",
            "description": "Interaction ID associated with the appointment",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the appointment",
            "example": "EXT-APT-123"
          },
          "guests": {
            "description": "List of guests invited to the appointment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GuestDto"
            }
          },
          "calendarIds": {
            "description": "IDs of the calendars this appointment belongs to",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "serviceId": {
            "type": "string",
            "description": "ID of the service used for this appointment",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group this appointment belongs to",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "blocked": {
            "type": "boolean",
            "description": "Whether the appointment is blocked",
            "example": false
          },
          "blockedAppointmentId": {
            "type": "string",
            "description": "ID of the blocked appointment",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        }
      },
      "ReminderUnit": {
        "type": "string",
        "description": "Time unit for the reminder (s: seconds, m: minutes, h: hours)",
        "enum": [
          "s",
          "m",
          "h"
        ]
      },
      "Reminder": {
        "type": "object",
        "properties": {
          "time": {
            "type": "number",
            "description": "The numeric value for the reminder time",
            "example": 15,
            "minimum": 1
          },
          "unit": {
            "example": "m",
            "$ref": "#/components/schemas/ReminderUnit"
          }
        },
        "required": [
          "time",
          "unit"
        ]
      },
      "Guest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the guest",
            "example": "guest@example.com"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the guest",
            "example": {
              "phoneNumber": "+1234567890",
              "preferredLanguage": "en",
              "timeZone": "UTC"
            },
            "additionalProperties": true
          }
        },
        "required": [
          "email",
          "extraFields"
        ]
      },
      "Appointment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "title": {
            "type": "string",
            "description": "Title of the appointment",
            "example": "Meeting Title",
            "maxLength": 500
          },
          "description": {
            "type": "string",
            "description": "Description of the appointment",
            "example": "Detailed description"
          },
          "startAt": {
            "type": "string",
            "description": "Start time of the appointment",
            "example": "2025-05-14T10:00:00Z",
            "format": "date-time"
          },
          "endAt": {
            "type": "string",
            "description": "End time of the appointment",
            "example": "2025-05-14T11:00:00Z",
            "format": "date-time"
          },
          "lang": {
            "type": "string",
            "description": "Language code in BCP 47 format",
            "example": "en-US",
            "maxLength": 10
          },
          "status": {
            "type": "string",
            "description": "Status of the appointment",
            "example": "confirmed"
          },
          "subStatus": {
            "type": "string",
            "description": "Sub-status of the appointment",
            "example": "pending"
          },
          "blockedUntil": {
            "type": "string",
            "description": "Time until the appointment is blocked",
            "example": "2025-05-14T09:00:00Z",
            "format": "date-time"
          },
          "origin": {
            "type": "string",
            "description": "Origin of the appointment",
            "example": "web"
          },
          "originUrl": {
            "type": "string",
            "description": "Origin URL of the appointment",
            "example": "https://example.com"
          },
          "comment": {
            "type": "string",
            "description": "Comment on the appointment",
            "example": "Additional notes"
          },
          "cancelledAt": {
            "type": "string",
            "description": "Timestamp when the appointment was cancelled",
            "example": "2025-05-13T15:00:00Z",
            "format": "date-time"
          },
          "event": {
            "type": "object",
            "description": "Event data",
            "example": {
              "key": "value"
            },
            "additionalProperties": true
          },
          "interactionId": {
            "type": "string",
            "description": "Interaction ID",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "externalId": {
            "type": "string",
            "description": "External ID",
            "example": "EXT-123"
          },
          "userPreferences": {
            "type": "object",
            "description": "User preferences",
            "additionalProperties": true
          },
          "cancellationOrigin": {
            "type": "string",
            "description": "Cancellation origin",
            "example": "user"
          },
          "version": {
            "type": "number",
            "description": "Version number",
            "example": 1,
            "default": 1
          },
          "bufferTimeMinutes": {
            "type": "number",
            "description": "Buffer time in minutes",
            "example": 15,
            "default": 0
          },
          "providerEventId": {
            "type": "string",
            "description": "Provider event ID",
            "example": "prov-123"
          },
          "providerETag": {
            "type": "string",
            "description": "Provider ETag",
            "example": "etag-123"
          },
          "providerId": {
            "type": "string",
            "description": "Provider ID",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "_guests": {
            "description": "Guests associated with the appointment",
            "example": [
              {
                "firstName": "John",
                "lastName": "Doe",
                "email": "john.doe@example.com"
              }
            ],
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "_votes": {
            "description": "Votes associated with the appointment",
            "example": [
              {
                "email": "john.doe@example.com",
                "phone": "+1234567890",
                "vote": 1,
                "comment": "Looking forward to the appointment!",
                "appointmentId": "123e4567-e89b-12d3-a456-426614174000"
              }
            ],
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "_calendars": {
            "description": "Calendars associated with the appointment",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "_reminders": {
            "description": "Reminders associated with the appointment",
            "example": [
              {
                "time": 15,
                "unit": "m",
                "direction": "before",
                "executionDate": "2025-05-14T09:45:00Z",
                "executedAt": null,
                "appointmentId": "123e4567-e89b-12d3-a456-426614174000"
              }
            ],
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "serviceId": {
            "type": "string",
            "description": "Service ID",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "userGroupId": {
            "type": "string",
            "description": "User group ID",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "Organization ID",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "calendars": {
            "description": "Calendar IDs associated with the appointment",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "items": {
              "type": "array"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "title",
          "description",
          "startAt",
          "endAt",
          "lang",
          "status",
          "subStatus",
          "blockedUntil",
          "origin",
          "originUrl",
          "comment",
          "cancelledAt",
          "event",
          "interactionId",
          "externalId",
          "userPreferences",
          "cancellationOrigin",
          "version",
          "bufferTimeMinutes",
          "providerEventId",
          "providerETag",
          "providerId",
          "_guests",
          "_votes",
          "_calendars",
          "_reminders",
          "serviceId",
          "userGroupId",
          "organizationId",
          "calendars"
        ]
      },
      "BlockSlotDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Title of the appointment",
            "example": "Product Demo Meeting"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the appointment",
            "example": "Demonstration of new product features to the client"
          },
          "serviceId": {
            "type": "string",
            "description": "ID of the service used for this appointment",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "guests": {
            "description": "List of guests invited to the appointment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppointmentGuestDto"
            }
          },
          "urlSource": {
            "type": "string",
            "description": "Source URL of the appointment",
            "example": "https://example.com/book"
          },
          "origin": {
            "type": "string",
            "description": "Origin/platform where the appointment was created",
            "example": "web"
          },
          "agentComment": {
            "type": "string",
            "description": "Comments from the agent",
            "example": "Client requested special arrangements"
          },
          "start": {
            "type": "string",
            "description": "Start time of the appointment in ISO 8601 format",
            "example": "2025-05-20T14:00:00Z"
          },
          "end": {
            "type": "string",
            "description": "End time of the appointment in ISO 8601 format",
            "example": "2025-05-20T15:00:00Z"
          },
          "calendarIds": {
            "description": "IDs of related calendars",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "start",
          "calendarIds"
        ]
      },
      "UpdateAppointmentDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Title of the appointment",
            "example": "Quarterly Review Meeting"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the appointment",
            "example": "Quarterly performance review meeting with team leads"
          },
          "startAt": {
            "format": "date-time",
            "type": "string",
            "description": "Start time of the appointment",
            "example": "2025-05-14T10:00:00Z"
          },
          "endAt": {
            "format": "date-time",
            "type": "string",
            "description": "End time of the appointment",
            "example": "2025-05-14T11:00:00Z"
          },
          "lang": {
            "type": "string",
            "description": "Language code for the appointment",
            "example": "en-US"
          },
          "status": {
            "type": "string",
            "description": "Status of the appointment",
            "example": "confirmed"
          },
          "subStatus": {
            "type": "string",
            "description": "Sub-status of the appointment",
            "example": "pending"
          },
          "reminders": {
            "description": "List of reminders for the appointment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReminderDto"
            }
          },
          "origin": {
            "type": "string",
            "description": "Origin/source of the appointment creation",
            "example": "web-portal"
          },
          "originUrl": {
            "type": "string",
            "description": "Origin URL of the appointment",
            "example": "https://example.com/create"
          },
          "comment": {
            "type": "string",
            "description": "Comments for the appointment",
            "example": "Customer requested special arrangements"
          },
          "interactionId": {
            "type": "string",
            "description": "Interaction ID associated with the appointment",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the appointment",
            "example": "EXT-APT-123"
          },
          "guests": {
            "description": "List of guests invited to the appointment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GuestDto"
            }
          },
          "calendarIds": {
            "description": "IDs of the calendars this appointment belongs to",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "MaskGuestsDto": {
        "type": "object",
        "properties": {}
      },
      "Calendar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "The name of the calendar",
            "example": "My Calendar"
          },
          "email": {
            "type": "string",
            "description": "The email associated with the calendar",
            "example": "mycalendar@example.com"
          },
          "type": {
            "type": "string",
            "description": "Type of calendar (e.g., agent, asset)",
            "example": "agent"
          },
          "canonicalId": {
            "type": "string",
            "description": "Canonical ID for the calendar (unique identifier)",
            "example": "cal_12345"
          },
          "timezone": {
            "type": "string",
            "description": "Timezone of the calendar (IANA timezone format)",
            "example": "America/New_York"
          },
          "tags": {
            "description": "Tags for categorizing and filtering calendars",
            "example": [
              "meetings",
              "team-a",
              "internal"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "_services": {
            "description": "Services associated with the calendar",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCalendar"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group this calendar belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization this calendar belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "email",
          "type",
          "canonicalId",
          "timezone",
          "tags",
          "_services"
        ]
      },
      "TemplateDateRangeDto": {
        "type": "object",
        "properties": {
          "startDate": {
            "format": "date-time",
            "type": "string",
            "description": "Start date of the service availability range",
            "example": "2025-05-20T00:00:00Z"
          },
          "endDate": {
            "format": "date-time",
            "type": "string",
            "description": "End date of the service availability range",
            "example": "2025-12-31T23:59:59Z"
          }
        },
        "required": [
          "startDate",
          "endDate"
        ]
      },
      "TemplateCalendarDto": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "The ID of the calendar, match with externalId",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "UUID"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the calendar is active and available for scheduling",
            "example": true
          },
          "type": {
            "type": "string",
            "description": "The type of calendar, either \"agent\" or \"asset\"",
            "example": "agent",
            "enum": [
              "agent",
              "asset"
            ]
          },
          "restrictionDates": {
            "type": "object",
            "description": "Custom date restrictions for this calendar (e.g., blackout dates, special hours)",
            "example": {
              "include": [
                [
                  "2025-12-25",
                  "2026-01-01"
                ]
              ],
              "exclude": [
                [
                  "2025-12-26",
                  "2025-12-27"
                ]
              ]
            }
          }
        },
        "required": [
          "calendarId",
          "active",
          "type"
        ]
      },
      "CreateTemplateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the service",
            "example": "Standard Consultation"
          },
          "duration": {
            "type": "number",
            "description": "Duration of appointments created from this service in minutes",
            "example": 60,
            "minimum": 1
          },
          "timeBetween": {
            "type": "number",
            "description": "Minimum time gap between appointments in minutes",
            "example": 15,
            "minimum": 0
          },
          "minTimeToSchedule": {
            "type": "number",
            "description": "Minimum time before an appointment can be scheduled (in days)",
            "example": 120,
            "minimum": 0
          },
          "maxTimeToSchedule": {
            "type": "number",
            "description": "Maximum time in advance an appointment can be scheduled (in days)",
            "example": 20160,
            "minimum": 0
          },
          "incrementTime": {
            "type": "number",
            "description": "Time increment for scheduling slots in minutes",
            "example": 15,
            "minimum": 1
          },
          "condition": {
            "type": "string",
            "description": "Condition for scheduling multiple calendars (\"none\", \"one\", or \"all\")",
            "example": "one",
            "enum": [
              "none",
              "one",
              "all"
            ]
          },
          "image": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/service-image.jpg"
          },
          "dateRanges": {
            "description": "Date ranges when this service is valid",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateDateRangeDto"
            }
          },
          "calendars": {
            "description": "Associated calendars for this service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateCalendarDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group this service belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "UUID"
          },
          "hasICall": {
            "type": "boolean",
            "description": "Whether this service has iCall capability",
            "example": false
          },
          "allowOverlapping": {
            "type": "boolean",
            "description": "Whether appointments from this service can overlap with other appointments",
            "example": true,
            "default": true
          },
          "deniedMultipleAppointment": {
            "type": "boolean",
            "description": "Whether multiple appointments can be booked for the same time slot",
            "example": false
          },
          "active": {
            "type": "boolean",
            "description": "Whether this service is active",
            "example": true,
            "default": true
          },
          "bookingUntil": {
            "format": "date-time",
            "type": "string",
            "description": "Date until which bookings are allowed",
            "example": "2025-12-31T23:59:59Z"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the service",
            "example": {
              "requiredFields": [
                "phone",
                "company"
              ],
              "customMessage": "Please arrive 10 minutes early"
            }
          },
          "typeId": {
            "type": "string",
            "description": "ID of the service type",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "UUID"
          },
          "sharingParams": {
            "type": "object",
            "description": "Sharing parameters for the service",
            "example": {
              "visibility": "public",
              "shareWithGroups": [
                "group1",
                "group2"
              ]
            }
          }
        }
      },
      "AssetAssociationType": {
        "type": "string",
        "description": "Conditions that must be met for booking",
        "enum": [
          "none",
          "one",
          "all"
        ]
      },
      "TemplateCalendar": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar this appointment belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "serviceId": {
            "type": "string",
            "description": "ID of the service this condition belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "name": {
            "type": "string",
            "description": "Name of the calendar",
            "example": "Default Calendar"
          },
          "tags": {
            "description": "Tags associated with this calendar for categorization",
            "example": [
              "business",
              "personal",
              "holiday"
            ],
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "restrictionDates": {
            "type": "object",
            "description": "Custom date restrictions for this calendar (e.g., blackout dates, special hours)",
            "example": {
              "include": [
                [
                  "2025-12-25",
                  "2026-01-01"
                ]
              ],
              "exclude": [
                [
                  "2025-12-26",
                  "2025-12-27"
                ]
              ]
            }
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the calendar",
            "example": {
              "color": "#ff0000",
              "location": "Main Office"
            },
            "additionalProperties": true
          }
        },
        "required": [
          "calendarId",
          "serviceId"
        ]
      },
      "DateRange": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Start date and time of the range in ISO 8601 format",
            "example": "2025-05-14T09:00:00Z"
          },
          "end": {
            "type": "string",
            "description": "End date and time of the range in ISO 8601 format",
            "example": "2025-05-14T17:00:00Z"
          }
        },
        "required": [
          "start",
          "end"
        ]
      },
      "TemplateType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the service type",
            "example": "Medical Consultation"
          },
          "slug": {
            "type": "string",
            "description": "URL-friendly version of the name",
            "example": "medical-consultation"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the service type",
            "example": "Service for scheduling medical consultations with healthcare providers"
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization that owns this service type",
            "example": "5f7b5e9b-e362-4f0a-9f1a-9f1a9f1a9f1a"
          },
          "sharingParams": {
            "type": "object",
            "description": "Configuration parameters for service sharing",
            "example": {
              "isPublic": true,
              "allowedDomains": [
                "hospital.com"
              ],
              "restrictions": {
                "maxUses": 100
              }
            }
          }
        },
        "required": [
          "name",
          "slug"
        ]
      },
      "Template": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "Name of the appointment service",
            "example": "30-Minute Consultation"
          },
          "duration": {
            "type": "number",
            "description": "Duration of the appointment in minutes",
            "example": 30
          },
          "timeBetween": {
            "type": "number",
            "description": "Minimum time gap between appointments in minutes",
            "example": 15
          },
          "minTimeToSchedule": {
            "type": "number",
            "description": "Minimum time in advance required to schedule (in days)",
            "example": 1
          },
          "maxTimeToSchedule": {
            "type": "number",
            "description": "Maximum time in advance allowed to schedule (in days)",
            "example": 30
          },
          "incrementTime": {
            "type": "number",
            "description": "Time increment for available slots in minutes",
            "example": 15
          },
          "assetAssociationType": {
            "$ref": "#/components/schemas/AssetAssociationType"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the service",
            "example": {
              "requiredDocuments": [
                "id",
                "insurance"
              ],
              "location": "Virtual"
            }
          },
          "sharingOptions": {
            "description": "Options for sharing the service",
            "example": [
              {
                "url": "https://example.com/share",
                "type": "public"
              }
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "deniedMultipleAppointment": {
            "type": "boolean",
            "description": "Whether multiple appointments are prohibited",
            "example": true
          },
          "image": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/images/consultation.jpg"
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group this service belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "weeklySchedules": {
            "description": "Weekly schedule configurations",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateWeeklySchedule"
            }
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization this service belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "calendars": {
            "description": "Associated calendars for this service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateCalendar"
            }
          },
          "dateRanges": {
            "description": "Valid date ranges for booking appointments",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DateRange"
            }
          },
          "allowOverlapping": {
            "type": "boolean",
            "description": "Whether appointments can overlap",
            "example": false
          },
          "hasICall": {
            "type": "boolean",
            "description": "Whether this service has iCall feature",
            "example": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether this service is currently active",
            "example": true
          },
          "bookingUntil": {
            "format": "date-time",
            "type": "string",
            "description": "Last date until bookings are accepted",
            "example": "2025-12-31T23:59:59Z"
          },
          "numberOfAppointments": {
            "type": "number",
            "description": "Maximum number of appointments allowed",
            "example": 100
          },
          "type": {
            "description": "Type configuration for this service",
            "allOf": [
              {
                "$ref": "#/components/schemas/TemplateType"
              }
            ]
          },
          "typeId": {
            "type": "string",
            "description": "ID of the service type",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "sharingParams": {
            "type": "object",
            "description": "Parameters for service sharing configuration",
            "example": {
              "shareWithGroup": true,
              "publicLink": false
            }
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "duration",
          "timeBetween",
          "minTimeToSchedule",
          "maxTimeToSchedule",
          "incrementTime",
          "assetAssociationType",
          "extraFields",
          "sharingOptions",
          "deniedMultipleAppointment",
          "image",
          "userGroupId",
          "weeklySchedules",
          "organizationId",
          "calendars",
          "dateRanges",
          "allowOverlapping",
          "hasICall",
          "active",
          "bookingUntil",
          "numberOfAppointments",
          "type",
          "typeId",
          "sharingParams"
        ]
      },
      "TemplateWeeklySchedule": {
        "type": "object",
        "properties": {
          "serviceId": {
            "type": "string",
            "description": "ID of the service this weekly schedule belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "weeklyScheduleId": {
            "type": "string",
            "description": "ID of the weekly schedule this service belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "service": {
            "description": "Service details associated with this weekly schedule",
            "allOf": [
              {
                "$ref": "#/components/schemas/Template"
              }
            ]
          }
        },
        "required": [
          "serviceId",
          "weeklyScheduleId",
          "service"
        ]
      },
      "UpdateTemplateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the service",
            "example": "Standard Consultation"
          },
          "duration": {
            "type": "number",
            "description": "Duration of appointments created from this service in minutes",
            "example": 60,
            "minimum": 1
          },
          "timeBetween": {
            "type": "number",
            "description": "Minimum time gap between appointments in minutes",
            "example": 15,
            "minimum": 0
          },
          "minTimeToSchedule": {
            "type": "number",
            "description": "Minimum time before an appointment can be scheduled (in days)",
            "example": 120,
            "minimum": 0
          },
          "maxTimeToSchedule": {
            "type": "number",
            "description": "Maximum time in advance an appointment can be scheduled (in days)",
            "example": 20160,
            "minimum": 0
          },
          "incrementTime": {
            "type": "number",
            "description": "Time increment for scheduling slots in minutes",
            "example": 15,
            "minimum": 1
          },
          "condition": {
            "type": "string",
            "description": "Condition for scheduling multiple calendars (\"none\", \"one\", or \"all\")",
            "example": "one",
            "enum": [
              "none",
              "one",
              "all"
            ]
          },
          "image": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/service-image.jpg"
          },
          "dateRanges": {
            "description": "Date ranges when this service is valid",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateDateRangeDto"
            }
          },
          "calendars": {
            "description": "Associated calendars for this service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateCalendarDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group this service belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "UUID"
          },
          "hasICall": {
            "type": "boolean",
            "description": "Whether this service has iCall capability",
            "example": false
          },
          "allowOverlapping": {
            "type": "boolean",
            "description": "Whether appointments from this service can overlap with other appointments",
            "example": true,
            "default": true
          },
          "deniedMultipleAppointment": {
            "type": "boolean",
            "description": "Whether multiple appointments can be booked for the same time slot",
            "example": false
          },
          "active": {
            "type": "boolean",
            "description": "Whether this service is active",
            "example": true,
            "default": true
          },
          "bookingUntil": {
            "format": "date-time",
            "type": "string",
            "description": "Date until which bookings are allowed",
            "example": "2025-12-31T23:59:59Z"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the service",
            "example": {
              "requiredFields": [
                "phone",
                "company"
              ],
              "customMessage": "Please arrive 10 minutes early"
            }
          },
          "typeId": {
            "type": "string",
            "description": "ID of the service type",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "UUID"
          },
          "sharingParams": {
            "type": "object",
            "description": "Sharing parameters for the service",
            "example": {
              "visibility": "public",
              "shareWithGroups": [
                "group1",
                "group2"
              ]
            }
          }
        }
      },
      "CreateTemplateTypeDto": {
        "type": "object",
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "UUID of the organization this service type belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Name of the service type",
            "example": "Virtual Consultation"
          },
          "slug": {
            "type": "string",
            "description": "URL-friendly slug for the service type",
            "example": "virtual-consultation"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the service type",
            "example": "Service for virtual consultation appointments with video call functionality"
          },
          "sharingParams": {
            "type": "object",
            "description": "Additional sharing configuration parameters",
            "example": {
              "allowPublicAccess": true,
              "shareWithDomain": "example.com"
            }
          }
        }
      },
      "UpdateTemplateTypeDto": {
        "type": "object",
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "UUID of the organization this service type belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Name of the service type",
            "example": "Virtual Consultation"
          },
          "slug": {
            "type": "string",
            "description": "URL-friendly slug for the service type",
            "example": "virtual-consultation"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the service type",
            "example": "Service for virtual consultation appointments with video call functionality"
          },
          "sharingParams": {
            "type": "object",
            "description": "Additional sharing configuration parameters",
            "example": {
              "allowPublicAccess": true,
              "shareWithDomain": "example.com"
            }
          }
        }
      },
      "ScheduleConfigurationDto": {
        "type": "object",
        "properties": {
          "workingHours": {
            "type": "object",
            "description": "Regular working hours for each day of the week. Keys are numbers representing DayOfWeek (0=Monday, 6=Sunday). Values are arrays of time slots.",
            "example": {
              "0": [
                [
                  "09:00",
                  "17:00"
                ]
              ],
              "1": [],
              "2": [
                [
                  "09:00",
                  "12:30"
                ],
                [
                  "13:30",
                  "18:00"
                ]
              ]
            }
          },
          "dateOverrides": {
            "type": "object",
            "description": "Specific date overrides for working hours. Keys are date strings (YYYY-MM-DD). Values are arrays of time slots for that specific date.",
            "example": {
              "2024-12-25": [],
              "2024-07-04": [
                [
                  "10:00",
                  "14:00"
                ]
              ]
            }
          },
          "outsOfTheOffice": {
            "type": "array",
            "description": "General \"out of the office\" periods, specified as an array of date ranges. Each inner array should contain two date strings [startDate, endDate].",
            "example": [
              [
                "2024-08-01",
                "2024-08-15"
              ],
              [
                "2024-11-20",
                "2024-11-22"
              ]
            ],
            "items": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date"
              },
              "minItems": 2,
              "maxItems": 2
            }
          }
        },
        "required": [
          "workingHours",
          "outsOfTheOffice"
        ]
      },
      "CreateWeeklyScheduleDto": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "The unique identifier of the calendar this schedule belongs to.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "configuration": {
            "description": "Configuration object describing weekly working hours, date overrides, and out-of-office periods.",
            "example": {
              "workingHours": {
                "0": [
                  [
                    "09:00",
                    "17:00"
                  ]
                ],
                "2": [
                  [
                    "10:00",
                    "16:00"
                  ]
                ]
              },
              "dateOverrides": {
                "2024-12-25": [],
                "2024-07-04": [
                  [
                    "10:00",
                    "14:00"
                  ]
                ]
              },
              "outsOfTheOffice": [
                [
                  "2024-08-01",
                  "2024-08-15"
                ],
                [
                  "2024-11-20",
                  "2024-11-22"
                ]
              ]
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/ScheduleConfigurationDto"
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "The name of the weekly schedule.",
            "example": "Default Working Week"
          },
          "serviceIds": {
            "description": "List of service IDs associated with this schedule.",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000",
              "223e4567-e89b-12d3-a456-426614174111"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone name (e.g., \"Europe/Berlin\", \"America/New_York\"). Used to interpret working hours and overrides.",
            "example": "Europe/Berlin"
          }
        }
      },
      "WeeklyScheduleConfiguration": {
        "type": "object",
        "properties": {
          "workingHours": {
            "type": "object",
            "description": "Regular working hours for each day of the week (0 = Monday, 6 = Sunday)",
            "example": {
              "0": [
                [
                  "09:00",
                  "17:00"
                ]
              ],
              "3": [
                [
                  "09:00",
                  "12:00"
                ],
                [
                  "13:00",
                  "17:00"
                ]
              ]
            }
          },
          "dateOverrides": {
            "type": "object",
            "description": "Special schedule for specific dates, overriding the regular schedule",
            "example": {
              "2025-05-01": [
                [
                  "10:00",
                  "15:00"
                ]
              ]
            }
          },
          "outsOfTheOffice": {
            "description": "Out of office time periods (e.g., vacations, leaves)",
            "example": [
              [
                "2025-06-15",
                "2025-06-30"
              ]
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "workingHours",
          "dateOverrides",
          "outsOfTheOffice"
        ]
      },
      "WeeklySchedule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "Name of the weekly schedule",
            "example": "Regular Business Hours"
          },
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar this schedule belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "configuration": {
            "description": "Configuration settings for the weekly schedule",
            "allOf": [
              {
                "$ref": "#/components/schemas/WeeklyScheduleConfiguration"
              }
            ]
          },
          "services": {
            "description": "List of services associated with this weekly schedule",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Template"
            }
          },
          "serviceIds": {
            "description": "List of services ids associated with this weekly schedule",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "calendarId",
          "configuration",
          "services",
          "serviceIds"
        ]
      },
      "UpdateWeeklyScheduleDto": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "The unique identifier of the calendar this schedule belongs to.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "configuration": {
            "description": "Configuration object describing weekly working hours, date overrides, and out-of-office periods.",
            "example": {
              "workingHours": {
                "0": [
                  [
                    "09:00",
                    "17:00"
                  ]
                ],
                "2": [
                  [
                    "10:00",
                    "16:00"
                  ]
                ]
              },
              "dateOverrides": {
                "2024-12-25": [],
                "2024-07-04": [
                  [
                    "10:00",
                    "14:00"
                  ]
                ]
              },
              "outsOfTheOffice": [
                [
                  "2024-08-01",
                  "2024-08-15"
                ],
                [
                  "2024-11-20",
                  "2024-11-22"
                ]
              ]
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/ScheduleConfigurationDto"
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "The name of the weekly schedule.",
            "example": "Default Working Week"
          },
          "serviceIds": {
            "description": "List of service IDs associated with this schedule.",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000",
              "223e4567-e89b-12d3-a456-426614174111"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone name (e.g., \"Europe/Berlin\", \"America/New_York\"). Used to interpret working hours and overrides.",
            "example": "Europe/Berlin"
          }
        }
      },
      "TimeUnit": {
        "type": "string",
        "description": "Time unit for the reminder (s: seconds, m: minutes, h: hours)",
        "enum": [
          "h",
          "m",
          "s"
        ]
      },
      "ReminderDirection": {
        "type": "string",
        "description": "Direction of the reminder relative to the appointment time (before or after)",
        "enum": [
          "before",
          "after"
        ]
      },
      "ReminderDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "number",
            "description": "The numeric value for the reminder time",
            "example": 15,
            "minimum": 1
          },
          "unit": {
            "example": "m",
            "$ref": "#/components/schemas/TimeUnit"
          },
          "direction": {
            "example": "before",
            "$ref": "#/components/schemas/ReminderDirection"
          }
        },
        "required": [
          "time",
          "unit",
          "direction"
        ]
      },
      "GuestDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of the guest",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the guest",
            "example": "Doe"
          },
          "email": {
            "type": "string",
            "description": "Email address of the guest",
            "example": "john.doe@example.com"
          },
          "phone": {
            "type": "string",
            "description": "Phone number of the guest",
            "example": "+1234567890"
          },
          "status": {
            "type": "string",
            "description": "Status of the guest (e.g., invited, confirmed, declined)",
            "example": "invited"
          },
          "canonicalId": {
            "type": "string",
            "description": "Canonical ID for the guest, if applicable",
            "example": "guest-12345"
          }
        }
      },
      "CancelAppointmentDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Appointment status",
            "example": "cancelled"
          },
          "subStatus": {
            "type": "string",
            "description": "Appointment sub status",
            "example": "cancelled"
          },
          "guests": {
            "type": "string",
            "description": "Guests to cancel",
            "example": [
              "guest1@example.com",
              "guest2@example.com"
            ]
          },
          "strategy": {
            "type": "string",
            "description": "Strategy to cancel",
            "example": "guest-only"
          }
        }
      },
      "Service": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "Name of the service",
            "example": "Consultation Service"
          },
          "description": {
            "type": "string",
            "description": "Description of the service",
            "example": "A detailed description of the service offered"
          },
          "imageUrl": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/image.jpg"
          },
          "dateRanges": {
            "description": "Date ranges for the service availability",
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "active": {
            "type": "boolean",
            "description": "Whether the service is active",
            "example": true
          },
          "bookingOptions": {
            "type": "object",
            "description": "Booking options for the service"
          },
          "sharingParams": {
            "type": "object",
            "description": "Sharing parameters for the service",
            "example": {
              "shareable": true
            },
            "additionalProperties": true
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group associated with the service",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization the service belongs to",
            "format": "uuid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "serviceType": {
            "type": "string",
            "description": "Type of the service",
            "example": "consultation"
          },
          "_calendars": {
            "description": "Calendars associated with the service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCalendar"
            }
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "description",
          "imageUrl",
          "dateRanges",
          "active",
          "bookingOptions",
          "userGroupId",
          "organizationId",
          "serviceType",
          "_calendars"
        ]
      },
      "Availability": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "The name of the availability",
            "example": "My Availability"
          },
          "weeklySchedule": {
            "type": "object",
            "description": "Weekly schedule",
            "example": {
              "1": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "5": [
                {
                  "startTime": "10:00",
                  "endTime": "14:00"
                }
              ]
            }
          },
          "overrides": {
            "type": "object",
            "description": "Schedule overrides for specific dates",
            "example": {
              "2025-08-22": [
                {
                  "startTime": "10:00",
                  "endTime": "12:00"
                },
                {
                  "startTime": "14:00",
                  "endTime": "18:00"
                }
              ]
            }
          },
          "unavailableDates": {
            "type": "array",
            "description": "Unavailable time ranges (full date-time)",
            "example": [
              {
                "startAt": "2025-08-15T00:00:00",
                "endAt": "2025-08-15T23:59:59"
              },
              {
                "startAt": "2025-08-20T14:00:00",
                "endAt": "2025-08-20T18:00:00"
              }
            ]
          },
          "active": {
            "type": "boolean",
            "description": "Whether the availability is active",
            "example": true
          },
          "_calendar": {
            "description": "The calendar this availability belongs to",
            "allOf": [
              {
                "$ref": "#/components/schemas/Calendar"
              }
            ]
          },
          "calendarId": {
            "type": "string",
            "description": "The ID of the calendar this availability belongs to",
            "example": "cal_12345"
          },
          "_services": {
            "description": "Services associated with this availability",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCalendar"
            }
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "weeklySchedule",
          "overrides",
          "unavailableDates",
          "active",
          "_calendar",
          "calendarId",
          "_services"
        ]
      },
      "ServiceCalendar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "_service": {
            "description": "The service associated with the calendar",
            "allOf": [
              {
                "$ref": "#/components/schemas/Service"
              }
            ]
          },
          "serviceId": {
            "type": "string",
            "description": "The ID of the service associated with the calendar",
            "example": "service_12345"
          },
          "_calendar": {
            "description": "The calendar associated with the service",
            "allOf": [
              {
                "$ref": "#/components/schemas/Calendar"
              }
            ]
          },
          "calendarId": {
            "type": "string",
            "description": "The ID of the calendar associated with the service",
            "example": "cal_12345"
          },
          "_availability": {
            "description": "Availability details for the service on the calendar",
            "allOf": [
              {
                "$ref": "#/components/schemas/Availability"
              }
            ]
          },
          "availabilityId": {
            "type": "string",
            "description": "The ID of the availability associated with the service on the calendar",
            "example": "avail_12345"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "_service",
          "serviceId",
          "_calendar",
          "calendarId",
          "_availability",
          "availabilityId"
        ]
      },
      "TimeIntervalDto": {
        "type": "object",
        "properties": {
          "startTime": {
            "type": "string",
            "description": "Start time in HH:mm format",
            "example": "09:00",
            "pattern": "^(0\\d|1\\d|2[0-3]):[0-5]\\d$"
          },
          "endTime": {
            "type": "string",
            "description": "End time in HH:mm format",
            "example": "17:00",
            "pattern": "^(0\\d|1\\d|2[0-3]):[0-5]\\d$"
          }
        },
        "required": [
          "startTime",
          "endTime"
        ]
      },
      "WeeklyScheduleDto": {
        "type": "object",
        "properties": {
          "0": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "1": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "2": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "3": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "4": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "5": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          },
          "6": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeIntervalDto"
            }
          }
        }
      },
      "CreateUnavailableDateDto": {
        "type": "object",
        "properties": {
          "startAt": {
            "type": "string",
            "description": "Start date and time of the range in ISO 8601 format",
            "example": "2023-10-01T09:00:00Z",
            "format": "date-time"
          },
          "endAt": {
            "type": "string",
            "description": "End date and time of the range in ISO 8601 format",
            "example": "2023-10-01T17:00:00Z",
            "format": "date-time"
          },
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar this unavailable date belongs to",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "availabilityId": {
            "type": "string",
            "description": "ID of the availability this unavailable date overrides",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        },
        "required": [
          "startAt",
          "endAt"
        ]
      },
      "CreateAvailabilityDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the availability schedule",
            "example": "Main Office Hours"
          },
          "weeklySchedule": {
            "description": "Weekly schedule defining available time intervals for each day of the week (0=Sunday, 6=Saturday)",
            "example": {
              "0": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "1": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "2": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "3": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "4": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "5": [],
              "6": []
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/WeeklyScheduleDto"
              }
            ]
          },
          "unavailableDates": {
            "description": "Specific dates when the calendar is unavailable",
            "example": [
              {
                "startAt": "2025-12-25T00:00:00Z",
                "endAt": "2025-12-25T23:59:59Z"
              },
              {
                "startAt": "2025-01-01T00:00:00Z",
                "endAt": "2025-01-01T23:59:59Z"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateUnavailableDateDto"
            }
          },
          "overrides": {
            "type": "object",
            "description": "Overrides for specific unavailable dates, mapping unavailable date IDs to new time intervals",
            "example": {
              "2025-12-25": [
                {
                  "startTime": "10:00",
                  "endTime": "15:00"
                }
              ]
            }
          },
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar this availability belongs to",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "serviceIds": {
            "description": "List of service IDs associated with this availability",
            "example": [
              "550e8400-e29b-41d4-a716-446655440000",
              "660e8400-e29b-41d4-a716-446655440000"
            ],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "calendarId"
        ]
      },
      "UpdateAvailabilityDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the availability schedule",
            "example": "Main Office Hours"
          },
          "weeklySchedule": {
            "description": "Weekly schedule defining available time intervals for each day of the week (0=Sunday, 6=Saturday)",
            "example": {
              "0": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "1": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "2": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "3": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "4": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "5": [],
              "6": []
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/WeeklyScheduleDto"
              }
            ]
          },
          "unavailableDates": {
            "description": "Specific dates when the calendar is unavailable",
            "example": [
              {
                "startAt": "2025-12-25T00:00:00Z",
                "endAt": "2025-12-25T23:59:59Z"
              },
              {
                "startAt": "2025-01-01T00:00:00Z",
                "endAt": "2025-01-01T23:59:59Z"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateUnavailableDateDto"
            }
          },
          "overrides": {
            "type": "object",
            "description": "Overrides for specific unavailable dates, mapping unavailable date IDs to new time intervals",
            "example": {
              "2025-12-25": [
                {
                  "startTime": "10:00",
                  "endTime": "15:00"
                }
              ]
            }
          },
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar this availability belongs to",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "serviceIds": {
            "description": "List of service IDs associated with this availability",
            "example": [
              "550e8400-e29b-41d4-a716-446655440000",
              "660e8400-e29b-41d4-a716-446655440000"
            ],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "BookingOptionsDto": {
        "type": "object",
        "properties": {
          "bookingDurationMinutes": {
            "type": "number",
            "description": "Duration of each booking slot in minutes",
            "example": 30,
            "minimum": 1
          },
          "bookingBufferTimeMinutes": {
            "type": "number",
            "description": "Buffer time before each booking in minutes",
            "example": 10,
            "minimum": 0
          },
          "minAdvanceBookingMinutes": {
            "type": "number",
            "description": "Minimum advance booking time in minutes",
            "example": 60,
            "minimum": 0
          },
          "maxAdvanceBookingMinutes": {
            "type": "number",
            "description": "Maximum advance booking time in minutes",
            "example": 43200,
            "minimum": 0
          },
          "slotIntervalMinutes": {
            "type": "number",
            "description": "Interval between booking slots in minutes",
            "example": 15,
            "minimum": 1
          },
          "slotStartOffsetMinutes": {
            "type": "number",
            "description": "Offset for the start of booking slots in minutes",
            "example": 0,
            "minimum": 0,
            "maximum": 59
          },
          "maxGuestsPerBooking": {
            "type": "number",
            "description": "Maximum number of guests allowed per booking",
            "example": 1,
            "minimum": 0
          },
          "allowGuestMultipleBookings": {
            "type": "boolean",
            "description": "Allow guests to make multiple bookings",
            "example": false
          },
          "allowAgentOverlappingBookings": {
            "type": "boolean",
            "description": "Allow overlapping bookings for the same agent",
            "example": false
          },
          "enableVideoCall": {
            "type": "boolean",
            "description": "Enable video call for the booking",
            "example": false
          },
          "bookingCutoffDate": {
            "type": "string",
            "description": "Cutoff date for bookings",
            "example": "2024-12-31T23:59:59Z",
            "format": "date-time"
          }
        },
        "required": [
          "bookingDurationMinutes"
        ]
      },
      "AvailabilityDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the availability schedule",
            "example": "Main Office Hours"
          },
          "weeklySchedule": {
            "description": "Weekly schedule defining available time intervals for each day of the week (0=Sunday, 6=Saturday)",
            "example": {
              "0": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "1": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "2": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "3": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "4": [
                {
                  "startTime": "09:00",
                  "endTime": "17:00"
                }
              ],
              "5": [],
              "6": []
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/WeeklyScheduleDto"
              }
            ]
          },
          "unavailableDates": {
            "description": "Specific dates when the calendar is unavailable",
            "example": [
              {
                "startAt": "2025-12-25T00:00:00Z",
                "endAt": "2025-12-25T23:59:59Z"
              },
              {
                "startAt": "2025-01-01T00:00:00Z",
                "endAt": "2025-01-01T23:59:59Z"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateUnavailableDateDto"
            }
          },
          "overrides": {
            "type": "object",
            "description": "Overrides for specific unavailable dates, mapping unavailable date IDs to new time intervals",
            "example": {
              "2025-12-25": [
                {
                  "startTime": "10:00",
                  "endTime": "15:00"
                }
              ]
            }
          }
        }
      },
      "ServiceCalendarDto": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "ID of the calendar associated with the service",
            "example": "b1a5f8e2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
            "format": "uuid"
          },
          "availabilityId": {
            "type": "string",
            "description": "ID of the availability associated with the service",
            "example": "c2b6f9e3-4d5e-5f6g-9h0i-1j2k3l4m5n6o",
            "format": "uuid"
          },
          "availability": {
            "description": "Availability details for the service (required if availabilityId is not provided)",
            "example": {
              "name": "Main Office Hours",
              "weeklySchedule": {
                "0": [
                  {
                    "startTime": "09:00",
                    "endTime": "17:00"
                  }
                ],
                "1": [
                  {
                    "startTime": "09:00",
                    "endTime": "17:00"
                  }
                ],
                "2": [
                  {
                    "startTime": "09:00",
                    "endTime": "17:00"
                  }
                ],
                "3": [
                  {
                    "startTime": "09:00",
                    "endTime": "17:00"
                  }
                ],
                "4": [
                  {
                    "startTime": "09:00",
                    "endTime": "17:00"
                  }
                ],
                "5": [],
                "6": []
              },
              "unavailableDates": [
                {
                  "startAt": "2025-12-25T00:00:00Z",
                  "endAt": "2025-12-25T23:59:59Z"
                },
                {
                  "startAt": "2025-01-01T00:00:00Z",
                  "endAt": "2025-01-01T23:59:59Z"
                }
              ],
              "overrides": {
                "2025-12-25": [
                  {
                    "startTime": "10:00",
                    "endTime": "15:00"
                  }
                ]
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AvailabilityDto"
              }
            ]
          }
        },
        "required": [
          "calendarId"
        ]
      },
      "CreateServiceDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the service",
            "example": "Consultation"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the service",
            "example": "A comprehensive consultation service for your needs."
          },
          "dateRanges": {
            "type": "array",
            "description": "Date ranges when the service is available"
          },
          "imageUrl": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/image.png",
            "format": "url"
          },
          "active": {
            "type": "boolean",
            "description": "Indicates if the service is active",
            "example": true,
            "default": true
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group associated with the service",
            "example": "ae5bad38-402b-4766-aed9-28dc7d9fdbf4",
            "format": "uuid"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the service",
            "example": {
              "customField1": "value1",
              "customField2": "value2"
            },
            "additionalProperties": true
          },
          "serviceType": {
            "type": "string",
            "description": "Type of the service (slug)",
            "example": "consultation"
          },
          "sharingParams": {
            "type": "object",
            "description": "Parameters for sharing the service",
            "example": {
              "param1": "value1",
              "param2": "value2"
            },
            "additionalProperties": true
          },
          "bookingOptions": {
            "description": "Booking options for the service",
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingOptionsDto"
              }
            ]
          },
          "calendars": {
            "description": "Calendars associated with the service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCalendarDto"
            }
          }
        },
        "required": [
          "name",
          "bookingOptions"
        ]
      },
      "UpdateServiceDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the service",
            "example": "Consultation"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the service",
            "example": "A comprehensive consultation service for your needs."
          },
          "dateRanges": {
            "type": "array",
            "description": "Date ranges when the service is available"
          },
          "imageUrl": {
            "type": "string",
            "description": "URL of the service image",
            "example": "https://example.com/image.png",
            "format": "url"
          },
          "active": {
            "type": "boolean",
            "description": "Indicates if the service is active",
            "example": true,
            "default": true
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group associated with the service",
            "example": "ae5bad38-402b-4766-aed9-28dc7d9fdbf4",
            "format": "uuid"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the service",
            "example": {
              "customField1": "value1",
              "customField2": "value2"
            },
            "additionalProperties": true
          },
          "serviceType": {
            "type": "string",
            "description": "Type of the service (slug)",
            "example": "consultation"
          },
          "sharingParams": {
            "type": "object",
            "description": "Parameters for sharing the service",
            "example": {
              "param1": "value1",
              "param2": "value2"
            },
            "additionalProperties": true
          },
          "bookingOptions": {
            "description": "Booking options for the service",
            "allOf": [
              {
                "$ref": "#/components/schemas/BookingOptionsDto"
              }
            ]
          },
          "calendars": {
            "description": "Calendars associated with the service",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCalendarDto"
            }
          },
          "calendarType": {
            "type": "string",
            "description": "Filter to update only calendars of a specific type (agent or asset)",
            "example": "agent",
            "enum": [
              "agent",
              "asset"
            ]
          }
        }
      },
      "Call": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ]
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the event",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "The name of the event",
            "example": "Annual Tech Conference 2025",
            "maxLength": 255
          },
          "slug": {
            "type": "string",
            "description": "The slug for the event (URL-friendly identifier)",
            "example": "annual-tech-conference-2025",
            "maxLength": 255
          },
          "type": {
            "type": "string",
            "description": "The type of the event",
            "example": "PHYSICAL",
            "enum": [
              "PHYSICAL",
              "VIRTUAL"
            ],
            "nullable": true
          },
          "datelessEvent": {
            "type": "boolean",
            "description": "Whether the event is a dateless event (no occurrences or recurrences)",
            "example": false,
            "default": false
          },
          "shortDescription": {
            "type": "string",
            "description": "The short description of the event in plain text",
            "example": "Annual tech conference featuring keynote speakers and workshops."
          },
          "description": {
            "type": "string",
            "description": "The description of the event",
            "example": "Join us for the biggest tech conference of the year featuring keynote speakers, workshops, and networking opportunities."
          },
          "image": {
            "type": "string",
            "description": "The image URL for the event",
            "example": "https://example.com/images/event-banner.jpg"
          },
          "locationName": {
            "type": "string",
            "description": "The name of the location",
            "example": "Convention Center",
            "maxLength": 255
          },
          "locationAddress": {
            "type": "string",
            "description": "The address of the location",
            "example": "123 Main St, City, State 12345"
          },
          "locationLink": {
            "type": "string",
            "description": "The link to the location",
            "example": "https://maps.google.com/?q=Convention+Center"
          },
          "externalLink": {
            "type": "string",
            "description": "An external link related to the event",
            "example": "https://external-website.com/event-details"
          },
          "groupOccurrences": {
            "type": "boolean",
            "description": "Whether the event should display occurrences as grouped. When true, public event listings will show the event once with all date ranges.",
            "example": false
          },
          "extraFields": {
            "type": "object",
            "description": "Additional data for the event in JSON format",
            "example": {
              "title": "Conference 2025",
              "description": "Annual tech conference"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group ID for the event",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "userGroup": {
            "type": "object",
            "description": "The user group associated with this event",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "occurrences": {
            "description": "The event occurrences associated with this event",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "recurrences": {
            "description": "The event recurrences associated with this event",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "categories": {
            "description": "The categories associated with this event",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "template": {
            "description": "The event template associated with this event",
            "allOf": [
              {
                "$ref": "#/components/schemas/EventTemplate"
              }
            ]
          },
          "publishingChannels": {
            "description": "The publishing channels associated with this event",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "notifications": {
            "description": "The notifications associated with this event",
            "items": {
              "type": "array"
            },
            "type": "array"
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the event (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "slug",
          "datelessEvent",
          "organization"
        ]
      },
      "Recording": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL where the recording can be accessed",
            "example": "https://storage.example.com/recordings/video-123.mp4"
          },
          "shoppableId": {
            "type": "string",
            "description": "Optional shoppable ID",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "qualityControlRecording": {
            "type": "boolean",
            "description": "Indicates if this is a quality control recording",
            "example": false,
            "default": false
          },
          "call": {
            "description": "Associated call details if the recording is from a call",
            "allOf": [
              {
                "$ref": "#/components/schemas/Call"
              }
            ]
          },
          "callId": {
            "type": "string",
            "description": "ID of the associated call",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "event": {
            "description": "Associated event details if the recording is from an event",
            "allOf": [
              {
                "$ref": "#/components/schemas/Event"
              }
            ]
          },
          "eventId": {
            "type": "string",
            "description": "ID of the associated event",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization that owns this recording",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "transcriptionStatus": {
            "type": "string",
            "description": "Current status of the recording transcription process"
          }
        },
        "required": [
          "url",
          "qualityControlRecording",
          "organizationId",
          "transcriptionStatus"
        ]
      },
      "ProductOptionValueDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the product option"
          },
          "value": {
            "type": "string",
            "description": "Value of the product option"
          }
        },
        "required": [
          "name",
          "value"
        ]
      },
      "ProductVariantDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the variant"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the variant"
          },
          "sku": {
            "type": "string",
            "description": "Stock keeping unit of the variant"
          },
          "gtin": {
            "type": "string",
            "description": "Global Trade Item Number of the variant"
          },
          "url": {
            "type": "string",
            "description": "URL of the variant"
          },
          "price": {
            "type": "number",
            "description": "Price of the variant"
          },
          "stock": {
            "type": "number",
            "description": "Available stock quantity"
          },
          "currency": {
            "type": "string",
            "description": "Currency code (3 characters)",
            "minLength": 3,
            "maxLength": 3,
            "example": "USD"
          },
          "images": {
            "description": "Array of image URLs for the variant",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "selectedOptions": {
            "description": "Selected options for the variant",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOptionValueDto"
            }
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the variant"
          }
        },
        "required": [
          "price",
          "stock",
          "currency",
          "images",
          "selectedOptions"
        ]
      },
      "ProductOptionDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the product option"
          },
          "values": {
            "description": "Array of possible values for this option",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "values"
        ]
      },
      "CreateProductDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the product",
            "example": "Sample Product"
          },
          "token": {
            "type": "string",
            "description": "Token for product identification"
          },
          "vodUrl": {
            "type": "string",
            "description": "URL for video on demand content"
          },
          "providerType": {
            "type": "string",
            "description": "Type of the product provider",
            "enum": [
              "onlive",
              "shopify-private",
              "shopify-public",
              "moddo",
              "prestashop",
              "woocommerce"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "External product identifier"
          },
          "sku": {
            "type": "string",
            "description": "Stock keeping unit"
          },
          "gtin": {
            "type": "string",
            "description": "Global Trade Item Number"
          },
          "category": {
            "type": "string",
            "description": "Product category"
          },
          "description": {
            "type": "string",
            "description": "Product description in plain text"
          },
          "descriptionHtml": {
            "type": "string",
            "description": "Product description in HTML format"
          },
          "images": {
            "description": "Array of product image URLs",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "description": "Array of product tags",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "handle": {
            "type": "string",
            "description": "Product handle"
          },
          "url": {
            "type": "string",
            "description": "Product URL"
          },
          "active": {
            "type": "boolean",
            "description": "Product active status"
          },
          "variants": {
            "description": "Array of product variants",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariantDto"
            }
          },
          "options": {
            "description": "Array of product options",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOptionDto"
            }
          },
          "discountType": {
            "type": "string",
            "description": "Type of discount applied to the product"
          },
          "discount": {
            "type": "number",
            "description": "Discount value"
          },
          "internalProduct": {
            "type": "boolean",
            "description": "Whether the product is internal"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the product"
          }
        }
      },
      "ProductVariant": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External identifier for the product variant",
            "example": "VAR123"
          },
          "url": {
            "type": "string",
            "description": "URL of the product variant",
            "example": "https://example.com/products/variant/123"
          },
          "price": {
            "type": "number",
            "description": "Price of the product variant",
            "example": 99.99,
            "default": 0
          },
          "currency": {
            "type": "string",
            "description": "Currency code for the price",
            "example": "EUR",
            "default": "EUR"
          },
          "stock": {
            "type": "number",
            "description": "Available stock quantity",
            "example": 100
          },
          "images": {
            "description": "Array of variant image URLs in WebP format",
            "example": [
              "https://example.com/variant1.webp",
              "https://example.com/variant2.webp"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productId": {
            "type": "string",
            "description": "ID of the parent product",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "selectedOptions": {
            "type": "array",
            "description": "Selected options for this variant",
            "example": [
              {
                "name": "Size",
                "value": "Large"
              },
              {
                "name": "Color",
                "value": "Blue"
              }
            ],
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                }
              }
            }
          },
          "sku": {
            "type": "string",
            "description": "Stock Keeping Unit",
            "example": "SKU-VAR123",
            "default": ""
          },
          "gtin": {
            "type": "string",
            "description": "Global Trade Item Number",
            "example": "GTIN-VAR123",
            "default": ""
          },
          "broken": {
            "type": "boolean",
            "description": "Whether the product variant is broken or unavailable",
            "example": false
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the product variant",
            "example": {
              "warranty": "2 years",
              "color": "red"
            }
          }
        },
        "required": [
          "price",
          "currency",
          "stock",
          "images",
          "productId",
          "sku",
          "gtin",
          "broken"
        ]
      },
      "ProductOption": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Product option name",
            "example": "OPT123"
          },
          "values": {
            "description": "Product option type",
            "example": [
              "color",
              "size"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productId": {
            "type": "string",
            "description": "Product identifier",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        },
        "required": [
          "name",
          "values",
          "productId"
        ]
      },
      "Product": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External identifier for the product",
            "example": "PROD123"
          },
          "category": {
            "type": "string",
            "description": "Category of the product",
            "example": "Electronics"
          },
          "descriptionHtml": {
            "type": "string",
            "description": "HTML formatted description of the product",
            "example": "<p>High-quality product with amazing features</p>"
          },
          "images": {
            "description": "Array of product image URLs",
            "example": [
              "https://example.com/image1.webp",
              "https://example.com/image2.webp"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "description": "Tags associated with the product",
            "example": [
              "new",
              "featured",
              "sale"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "handle": {
            "type": "string",
            "description": "URL-friendly identifier for the product",
            "example": "premium-product-v1"
          },
          "providerType": {
            "type": "string",
            "description": "Type of provider",
            "example": "onlive"
          },
          "providerId": {
            "type": "string",
            "description": "Identifier of the provider",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "discountType": {
            "type": "string",
            "description": "Type of discount applied to the product",
            "example": "percentage"
          },
          "discount": {
            "type": "number",
            "description": "Discount amount",
            "example": 10.5,
            "default": 0
          },
          "url": {
            "type": "string",
            "description": "URL of the product",
            "example": "https://example.com/products/123"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the product is active",
            "example": true,
            "default": true
          },
          "variants": {
            "description": "Variants of the product",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariant"
            }
          },
          "options": {
            "description": "Options available for the product",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOption"
            }
          },
          "internalProduct": {
            "type": "boolean",
            "description": "Whether the product is internal",
            "example": false,
            "default": false
          },
          "sku": {
            "type": "string",
            "description": "Stock Keeping Unit",
            "example": "SKU123",
            "default": ""
          },
          "gtin": {
            "type": "string",
            "description": "Global Trade Item Number",
            "example": "GTIN123",
            "default": ""
          }
        },
        "required": [
          "externalId",
          "category",
          "descriptionHtml",
          "images",
          "tags",
          "providerType",
          "providerId",
          "active",
          "variants",
          "options",
          "internalProduct",
          "sku",
          "gtin"
        ]
      },
      "UpdateProductDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the product",
            "example": "Sample Product"
          },
          "token": {
            "type": "string",
            "description": "Token for product identification"
          },
          "vodUrl": {
            "type": "string",
            "description": "URL for video on demand content"
          },
          "providerType": {
            "type": "string",
            "description": "Type of the product provider",
            "enum": [
              "onlive",
              "shopify-private",
              "shopify-public",
              "moddo",
              "prestashop",
              "woocommerce"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "External product identifier"
          },
          "sku": {
            "type": "string",
            "description": "Stock keeping unit"
          },
          "gtin": {
            "type": "string",
            "description": "Global Trade Item Number"
          },
          "category": {
            "type": "string",
            "description": "Product category"
          },
          "description": {
            "type": "string",
            "description": "Product description in plain text"
          },
          "descriptionHtml": {
            "type": "string",
            "description": "Product description in HTML format"
          },
          "images": {
            "description": "Array of product image URLs",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "description": "Array of product tags",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "handle": {
            "type": "string",
            "description": "Product handle"
          },
          "url": {
            "type": "string",
            "description": "Product URL"
          },
          "active": {
            "type": "boolean",
            "description": "Product active status"
          },
          "variants": {
            "description": "Array of product variants",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductVariantDto"
            }
          },
          "options": {
            "description": "Array of product options",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOptionDto"
            }
          },
          "discountType": {
            "type": "string",
            "description": "Type of discount applied to the product"
          },
          "discount": {
            "type": "number",
            "description": "Discount value"
          },
          "internalProduct": {
            "type": "boolean",
            "description": "Whether the product is internal"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the product"
          }
        }
      },
      "CreateProductUnitDto": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the product unit.",
            "example": "A high-quality wireless mouse."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the product unit.",
            "example": "EXT-UNIT-12345"
          },
          "productId": {
            "type": "string",
            "description": "Internal product ID. Required if productExternalId is not provided.",
            "example": "PROD-12345"
          },
          "productExternalId": {
            "type": "string",
            "description": "External product ID. Required if productId is not provided.",
            "example": "EXT-PROD-67890"
          },
          "productVariantId": {
            "type": "string",
            "description": "Product variant ID, if applicable.",
            "example": "VARIANT-001"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields as key-value pairs.",
            "example": {
              "color": "red",
              "size": "L"
            }
          },
          "images": {
            "description": "Array of image URLs for the product unit.",
            "example": [
              "https://example.com/image1.jpg",
              "https://example.com/image2.jpg"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "disabled": {
            "type": "boolean",
            "description": "Whether the product unit is disabled.",
            "example": false
          },
          "tags": {
            "description": "Tags associated with the product unit.",
            "example": [
              "electronics",
              "wireless",
              "mouse"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "User group ID associated with the product unit.",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "ProductUnit": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External identifier for the product unit",
            "example": "UNIT123"
          },
          "productId": {
            "type": "string",
            "description": "ID of the parent product",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "productVariantId": {
            "type": "string",
            "description": "ID of the product variant",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "productExternalId": {
            "type": "string",
            "description": "ID of the product external",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "description": {
            "type": "string",
            "description": "Description of the unit",
            "example": "Demo unit for display"
          },
          "images": {
            "description": "Array of unit image URLs",
            "example": [
              "https://example.com/unit1.webp",
              "https://example.com/unit2.webp"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization that owns this unit",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "disabled": {
            "type": "boolean",
            "description": "Whether the unit is disabled",
            "example": false,
            "default": false
          },
          "userGroupId": {
            "type": "string",
            "description": "ID of the user group that owns this unit",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the unit",
            "example": {
              "location": "Store A",
              "condition": "New"
            }
          }
        },
        "required": [
          "externalId",
          "productId",
          "images",
          "organizationId",
          "disabled"
        ]
      },
      "CreateUserDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "User's first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "User's last name",
            "example": "Doe"
          },
          "avatar": {
            "type": "string",
            "description": "URL of the user's avatar image",
            "example": "https://example.com/avatars/johndoe.jpg"
          },
          "userGroupId": {
            "type": "string",
            "description": "UUID of the user group this user belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "role": {
            "type": "string",
            "description": "User's role that determines their permissions",
            "example": "creator",
            "enum": [
              "creator",
              "editor",
              "admin"
            ],
            "default": "creator"
          },
          "email": {
            "type": "string",
            "description": "Email address used for user authentication and communication",
            "example": "john.doe@example.com"
          }
        },
        "required": [
          "firstName",
          "lastName",
          "role",
          "email"
        ]
      },
      "User": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "User's first name",
            "example": "John",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "description": "User's last name",
            "example": "Doe",
            "minLength": 1
          },
          "email": {
            "type": "string",
            "description": "User's email address used for authentication and communication",
            "example": "john.doe@example.com"
          },
          "role": {
            "type": "string",
            "description": "User's role that determines their permissions",
            "enum": [
              "admin",
              "creator",
              "root",
              "editor"
            ],
            "example": "creator",
            "default": "creator"
          },
          "avatar": {
            "type": "string",
            "description": "URL of the user's avatar image",
            "example": "https://example.com/avatars/johndoe.jpg"
          },
          "organizationId": {
            "type": "string",
            "description": "UUID of the organization this user belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "fullName": {
            "type": "string",
            "description": "Full name of the user (combination of first and last name)",
            "example": "John Doe",
            "readOnly": true
          },
          "userGroupId": {
            "type": "string",
            "description": "UUID of the user group this user belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174001"
          }
        },
        "required": [
          "firstName",
          "lastName",
          "email",
          "role",
          "organizationId",
          "fullName"
        ]
      },
      "UpdateUserDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "User's first name",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "User's last name",
            "example": "Doe"
          },
          "avatar": {
            "type": "string",
            "description": "URL of the user's avatar image",
            "example": "https://example.com/avatars/johndoe.jpg"
          },
          "userGroupId": {
            "type": "string",
            "description": "UUID of the user group this user belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "role": {
            "type": "string",
            "description": "User's role that determines their permissions",
            "example": "creator",
            "enum": [
              "creator",
              "editor",
              "admin"
            ],
            "default": "creator"
          }
        }
      },
      "CreateUserGroupDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the user group",
            "example": "Sales Team",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the user group and its purpose",
            "example": "Sales team members with access to product management"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for integration with other systems",
            "example": "SALES_TEAM_01"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the user group",
            "example": {
              "department": "Sales",
              "location": "New York",
              "allowedFeatures": [
                "product_management",
                "sales_reports"
              ]
            }
          }
        }
      },
      "UserGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the user group",
            "example": "Sales Team",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the user group and its purpose",
            "example": "Sales team members with access to product management"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for integration with other systems",
            "example": "SALES_TEAM_01"
          },
          "organizationId": {
            "type": "string",
            "description": "UUID of the organization this group belongs to",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the user group",
            "example": {
              "department": "Sales",
              "location": "New York",
              "allowedFeatures": [
                "product_management",
                "sales_reports"
              ]
            }
          }
        },
        "required": [
          "name",
          "organizationId"
        ]
      },
      "UpdateUserGroupDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the user group",
            "example": "Sales Team",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the user group and its purpose",
            "example": "Sales team members with access to product management"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for integration with other systems",
            "example": "SALES_TEAM_01"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional custom fields for the user group",
            "example": {
              "department": "Sales",
              "location": "New York",
              "allowedFeatures": [
                "product_management",
                "sales_reports"
              ]
            }
          }
        }
      },
      "CreateEventOccurrenceDto": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "The start date and time of the event occurrence",
            "example": "2025-12-25T10:00:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time of the event occurrence",
            "example": "2025-12-25T18:00:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "capacity": {
            "type": "number",
            "description": "The capacity of the event occurrence",
            "example": 100,
            "minimum": 0
          },
          "status": {
            "type": "string",
            "description": "The status to set for the occurrence",
            "example": "ACTIVE",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "CANCELLED",
              "FINALIZED"
            ]
          },
          "showing": {
            "type": "string",
            "description": "The showing status of the event occurrence",
            "example": "AUTO",
            "enum": [
              "AUTO",
              "SHOW",
              "HIDE"
            ]
          }
        },
        "required": [
          "capacity"
        ]
      },
      "CreateEventOccurrencesDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new occurrences to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventOccurrenceDto"
            }
          }
        }
      },
      "CreateEventRecurrenceDto": {
        "type": "object",
        "properties": {
          "rrule": {
            "type": "string",
            "description": "The RRULE string defining the recurrence pattern (RFC 5545 format)",
            "example": "FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20251231T235959Z"
          },
          "startDate": {
            "type": "string",
            "description": "The start date and time for the recurrence pattern",
            "example": "2025-12-25T10:00:00.000Z",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time for each occurrence in the recurrence",
            "example": "2025-12-25T18:00:00.000Z",
            "format": "date-time"
          },
          "capacity": {
            "type": "number",
            "description": "The capacity for each occurrence generated by this recurrence",
            "example": 100,
            "minimum": 0
          },
          "excludedDates": {
            "description": "Array of dates to exclude from the recurrence pattern",
            "example": [
              "2025-12-25T10:00:00.000Z",
              "2026-01-01T10:00:00.000Z"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the recurrence is enabled",
            "example": true,
            "default": true
          }
        },
        "required": [
          "rrule",
          "startDate",
          "capacity"
        ]
      },
      "CreateEventRecurrencesDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new recurrences to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventRecurrenceDto"
            }
          }
        }
      },
      "CreateEventPublishingChannelDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the publishing channel",
            "example": "Default Widget"
          },
          "channelType": {
            "type": "string",
            "description": "Type of channel",
            "enum": [
              "WIDGET",
              "WEBSITE",
              "SOCIAL"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "External id provided by the channel",
            "example": "ext-123"
          },
          "publishDate": {
            "type": "string",
            "description": "Publish date for the channel",
            "example": "2025-12-25T10:00:00.000Z"
          },
          "url": {
            "type": "string",
            "description": "URL for the publishing channel",
            "example": "https://example.com/channel"
          }
        },
        "required": [
          "name",
          "channelType"
        ]
      },
      "CreateEventPublishingChannelsDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new publishing channels to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventPublishingChannelDto"
            }
          }
        }
      },
      "CreateEventNotificationDto": {
        "type": "object",
        "properties": {
          "channel": {
            "type": "string",
            "description": "Notification channel",
            "enum": [
              "EMAIL",
              "SMS"
            ]
          },
          "notificationType": {
            "type": "string",
            "description": "Notification type to use for notification",
            "example": "EVENT_REMINDER"
          },
          "timing": {
            "type": "string",
            "description": "Notification timing (before or after the event)",
            "enum": [
              "IMMEDIATE",
              "BEFORE",
              "AFTER",
              "SPECIFIC_DATE"
            ],
            "default": "BEFORE"
          },
          "timeValue": {
            "type": "number",
            "description": "Time before occurrence to send notification (integer)",
            "example": 30
          },
          "timeUnit": {
            "type": "string",
            "description": "Time unit",
            "enum": [
              "MINUTES",
              "HOURS",
              "DAYS"
            ]
          },
          "specificDate": {
            "type": "string",
            "description": "Specific date for sending notification when timing is SPECIFIC_DATE (ISO 8601 format)",
            "example": "2025-02-15T10:00:00Z",
            "format": "date-time"
          },
          "referenceDate": {
            "type": "string",
            "description": "Reference date for the notification",
            "enum": [
              "EVENT_START",
              "EVENT_END"
            ],
            "example": "EVENT_START"
          },
          "emailField": {
            "type": "string",
            "description": "Email field identifier for dynamic email targeting",
            "example": "contact_email",
            "maxLength": 255
          },
          "metadata": {
            "type": "object",
            "description": "Additional metadata for the notification",
            "example": {
              "customKey": "customValue"
            },
            "additionalProperties": true
          }
        },
        "required": [
          "channel",
          "notificationType",
          "timing"
        ]
      },
      "CreateEventNotificationsDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new notifications to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventNotificationDto"
            }
          }
        }
      },
      "CreateEventDto": {
        "type": "object",
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "The organization identifier",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier. When provided, it takes precedence over the authenticated user's userGroupId.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "templateId": {
            "type": "string",
            "description": "The template identifier to use for this event",
            "example": "456e7890-e89b-12d3-a456-426614174001",
            "format": "uuid"
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the event in JSON format",
            "example": {
              "title": "Conference 2025",
              "description": "Annual tech conference"
            }
          },
          "name": {
            "type": "string",
            "description": "The name of the event",
            "example": "Annual Tech Conference 2025",
            "maxLength": 255
          },
          "type": {
            "type": "string",
            "description": "The type of the event",
            "example": "PHYSICAL",
            "enum": [
              "PHYSICAL",
              "VIRTUAL"
            ]
          },
          "shortDescription": {
            "type": "string",
            "description": "The short description of the event in plain text",
            "example": "Annual tech conference featuring keynote speakers and workshops."
          },
          "description": {
            "type": "string",
            "description": "The description of the event",
            "example": "Join us for the biggest tech conference of the year featuring keynote speakers, workshops, and networking opportunities."
          },
          "image": {
            "type": "string",
            "description": "The image URL for the event",
            "example": "https://example.com/images/conference-2025.jpg"
          },
          "imageBase64": {
            "type": "string",
            "description": "The image as base64 encoded string. If provided, this will be uploaded and the URL will be used as the event image.",
            "example": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/"
          },
          "imageExternal": {
            "type": "string",
            "description": "The external URL of the image. If provided, this will be fetched and uploaded and the URL will be used as the event image.",
            "example": "https://example.com/image.jpg"
          },
          "locationName": {
            "type": "string",
            "description": "The name of the location",
            "example": "Convention Center",
            "maxLength": 255
          },
          "locationAddress": {
            "type": "string",
            "description": "The address of the location",
            "example": "123 Main St, City, State 12345"
          },
          "locationLink": {
            "type": "string",
            "description": "The link to the location",
            "example": "https://maps.google.com/?q=Convention+Center"
          },
          "externalLink": {
            "type": "string",
            "description": "An external link related to the event",
            "example": "https://external-website.com/event-details"
          },
          "groupOccurrences": {
            "type": "boolean",
            "description": "Whether the event should display occurrences as grouped. When true, public event listings will show the event once with all date ranges.",
            "example": false,
            "default": false
          },
          "categoryIds": {
            "description": "Array of category IDs to associate with this event",
            "example": [
              "123e4567-e89b-12d3-a456-426614174004",
              "456e7890-e89b-12d3-a456-426614174005"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "occurrences": {
            "description": "Occurrences to create with the event",
            "allOf": [
              {
                "$ref": "#/components/schemas/CreateEventOccurrencesDto"
              }
            ]
          },
          "recurrences": {
            "description": "Recurrences to create for the event. Recurrences define repeating patterns that generate occurrences automatically.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CreateEventRecurrencesDto"
              }
            ]
          },
          "publishingChannels": {
            "description": "Publishing channels to create for the event",
            "allOf": [
              {
                "$ref": "#/components/schemas/CreateEventPublishingChannelsDto"
              }
            ]
          },
          "notifications": {
            "description": "Notifications to create for the event",
            "allOf": [
              {
                "$ref": "#/components/schemas/CreateEventNotificationsDto"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "EventTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the event template",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the event template was created",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the event template was last updated",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier that owns this event template",
            "example": "987e6543-e21a-34b5-c678-426614174000",
            "format": "uuid"
          },
          "registrationFormId": {
            "type": "string",
            "description": "The registration form identifier associated with this template",
            "example": "456e7890-e12b-34c5-d678-426614174000",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the event template",
            "example": "Weekly Tech Talks",
            "maxLength": 255
          },
          "slug": {
            "type": "string",
            "description": "The slug for the event template (URL-friendly identifier)",
            "example": "weekly-tech-talks",
            "maxLength": 255
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event template",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the event template (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "organizationId",
          "registrationFormId",
          "name",
          "slug",
          "organization"
        ]
      },
      "UpdateEventOccurrenceDto": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "The start date and time of the event occurrence",
            "example": "2025-12-25T10:00:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time of the event occurrence",
            "example": "2025-12-25T18:00:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "capacity": {
            "type": "number",
            "description": "The capacity of the event occurrence",
            "example": 100,
            "minimum": 0
          },
          "status": {
            "type": "string",
            "description": "The status to set for the occurrence",
            "example": "ACTIVE",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "CANCELLED",
              "FINALIZED"
            ]
          },
          "showing": {
            "type": "string",
            "description": "The showing status of the event occurrence",
            "example": "AUTO",
            "enum": [
              "AUTO",
              "SHOW",
              "HIDE"
            ]
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of the event occurrence to update (optional for new occurrences)",
            "example": "567e8901-e89b-12d3-a456-426614174004",
            "format": "uuid"
          },
          "cancellationMessage": {
            "type": "string",
            "description": "Optional message explaining the reason for cancellation",
            "example": "Occurrence cancelled due to unforeseen circumstances",
            "maxLength": 1000
          }
        },
        "required": [
          "capacity"
        ]
      },
      "DeleteEventRelationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the entity to delete",
            "example": "567e8901-e89b-12d3-a456-426614174004",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ManageEventOccurrencesDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new occurrences to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventOccurrenceDto"
            }
          },
          "update": {
            "description": "Array of existing occurrences to update (id is required)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateEventOccurrenceDto"
            }
          },
          "delete": {
            "description": "Array of occurrence ids to delete",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeleteEventRelationDto"
            }
          }
        }
      },
      "UpdateEventRecurrenceDto": {
        "type": "object",
        "properties": {
          "rrule": {
            "type": "string",
            "description": "The RRULE string defining the recurrence pattern (RFC 5545 format)",
            "example": "FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20251231T235959Z"
          },
          "startDate": {
            "type": "string",
            "description": "The start date and time for the recurrence pattern",
            "example": "2025-12-25T10:00:00.000Z",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time for each occurrence in the recurrence",
            "example": "2025-12-25T18:00:00.000Z",
            "format": "date-time"
          },
          "capacity": {
            "type": "number",
            "description": "The capacity for each occurrence generated by this recurrence",
            "example": 100,
            "minimum": 0
          },
          "excludedDates": {
            "description": "Array of dates to exclude from the recurrence pattern",
            "example": [
              "2025-12-25T10:00:00.000Z",
              "2026-01-01T10:00:00.000Z"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the recurrence is enabled",
            "example": true,
            "default": true
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of the recurrence to update (optional for new recurrences)",
            "example": "567e8901-e89b-12d3-a456-426614174004",
            "format": "uuid"
          }
        }
      },
      "ManageEventRecurrencesDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new recurrences to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventRecurrenceDto"
            }
          },
          "update": {
            "description": "Array of existing recurrences to update (id is required)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateEventRecurrenceDto"
            }
          },
          "delete": {
            "description": "Array of recurrence ids to delete",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeleteEventRelationDto"
            }
          }
        }
      },
      "UpdateEventPublishingChannelDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the publishing channel",
            "example": "Default Widget"
          },
          "channelType": {
            "type": "string",
            "description": "Type of channel",
            "enum": [
              "WIDGET",
              "WEBSITE",
              "SOCIAL"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "External id provided by the channel",
            "example": "ext-123"
          },
          "publishDate": {
            "type": "string",
            "description": "Publish date for the channel",
            "example": "2025-12-25T10:00:00.000Z"
          },
          "url": {
            "type": "string",
            "description": "URL for the publishing channel",
            "example": "https://example.com/channel"
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of the publishing channel to update (optional for new channels)",
            "example": "567e8901-e89b-12d3-a456-426614174004",
            "format": "uuid"
          }
        }
      },
      "ManageEventPublishingChannelsDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new publishing channels to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventPublishingChannelDto"
            }
          },
          "update": {
            "description": "Array of existing publishing channels to update (id is required)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateEventPublishingChannelDto"
            }
          },
          "delete": {
            "description": "Array of publishing channel ids to delete",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeleteEventRelationDto"
            }
          }
        }
      },
      "UpdateEventNotificationDto": {
        "type": "object",
        "properties": {
          "channel": {
            "type": "string",
            "description": "Notification channel",
            "enum": [
              "EMAIL",
              "SMS"
            ]
          },
          "notificationType": {
            "type": "string",
            "description": "Notification type to use for notification",
            "example": "EVENT_REMINDER"
          },
          "timing": {
            "type": "string",
            "description": "Notification timing (before or after the event)",
            "enum": [
              "IMMEDIATE",
              "BEFORE",
              "AFTER",
              "SPECIFIC_DATE"
            ],
            "default": "BEFORE"
          },
          "timeValue": {
            "type": "number",
            "description": "Time before occurrence to send notification (integer)",
            "example": 30
          },
          "timeUnit": {
            "type": "string",
            "description": "Time unit",
            "enum": [
              "MINUTES",
              "HOURS",
              "DAYS"
            ]
          },
          "specificDate": {
            "type": "string",
            "description": "Specific date for sending notification when timing is SPECIFIC_DATE (ISO 8601 format)",
            "example": "2025-02-15T10:00:00Z",
            "format": "date-time"
          },
          "referenceDate": {
            "type": "string",
            "description": "Reference date for the notification",
            "enum": [
              "EVENT_START",
              "EVENT_END"
            ],
            "example": "EVENT_START"
          },
          "emailField": {
            "type": "string",
            "description": "Email field identifier for dynamic email targeting",
            "example": "contact_email",
            "maxLength": 255
          },
          "metadata": {
            "type": "object",
            "description": "Additional metadata for the notification",
            "example": {
              "customKey": "customValue"
            },
            "additionalProperties": true
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of the notification to update (optional for new notifications)",
            "example": "567e8901-e89b-12d3-a456-426614174004",
            "format": "uuid"
          }
        }
      },
      "ManageEventNotificationsDto": {
        "type": "object",
        "properties": {
          "create": {
            "description": "Array of new notifications to create",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventNotificationDto"
            }
          },
          "update": {
            "description": "Array of existing notifications to update (id is required)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateEventNotificationDto"
            }
          },
          "delete": {
            "description": "Array of notification ids to delete",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeleteEventRelationDto"
            }
          }
        }
      },
      "UpdateEventDto": {
        "type": "object",
        "properties": {
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier. When provided, it takes precedence over the authenticated user's userGroupId.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "templateId": {
            "type": "string",
            "description": "The template identifier to use for this event",
            "example": "456e7890-e89b-12d3-a456-426614174001",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the event",
            "example": "Updated Annual Tech Conference 2025",
            "maxLength": 255
          },
          "type": {
            "type": "string",
            "description": "The type of the event",
            "example": "PHYSICAL",
            "enum": [
              "PHYSICAL",
              "VIRTUAL"
            ]
          },
          "shortDescription": {
            "type": "string",
            "description": "The short description of the event in plain text",
            "example": "Annual tech conference featuring keynote speakers and workshops."
          },
          "description": {
            "type": "string",
            "description": "The description of the event",
            "example": "Join us for the updated biggest tech conference of the year featuring keynote speakers, workshops, and networking opportunities."
          },
          "image": {
            "type": "string",
            "description": "The image URL for the event",
            "example": "https://example.com/images/updated-conference-2025.jpg"
          },
          "imageBase64": {
            "type": "string",
            "description": "The image as base64 encoded string. If provided, this will be uploaded and the URL will be used as the event image.",
            "example": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/"
          },
          "imageExternal": {
            "type": "string",
            "description": "The external URL of the image. If provided, this will be fetched and uploaded and the URL will be used as the event image.",
            "example": "https://example.com/image.jpg"
          },
          "locationName": {
            "type": "string",
            "description": "The name of the location",
            "example": "Convention Center",
            "maxLength": 255
          },
          "locationAddress": {
            "type": "string",
            "description": "The address of the location",
            "example": "123 Main St, City, State 12345"
          },
          "locationLink": {
            "type": "string",
            "description": "The link to the location",
            "example": "https://maps.google.com/?q=Convention+Center"
          },
          "externalLink": {
            "type": "string",
            "description": "An external link related to the event",
            "example": "https://external-website.com/event-details"
          },
          "groupOccurrences": {
            "type": "boolean",
            "description": "Whether the event should display occurrences as grouped. When true, public event listings will show the event once with all date ranges.",
            "example": false
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the event in JSON format",
            "example": {
              "title": "Conference 2025",
              "description": "Annual tech conference"
            }
          },
          "categoryIds": {
            "description": "Array of category IDs to associate with this event",
            "example": [
              "123e4567-e89b-12d3-a456-426614174000",
              "456e7890-e89b-12d3-a456-426614174001"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "occurrences": {
            "description": "Occurrences to create, update, or delete",
            "allOf": [
              {
                "$ref": "#/components/schemas/ManageEventOccurrencesDto"
              }
            ]
          },
          "recurrences": {
            "description": "Recurrences to create, update, or delete",
            "allOf": [
              {
                "$ref": "#/components/schemas/ManageEventRecurrencesDto"
              }
            ]
          },
          "publishingChannels": {
            "description": "Publishing channels to create, update, or delete",
            "allOf": [
              {
                "$ref": "#/components/schemas/ManageEventPublishingChannelsDto"
              }
            ]
          },
          "notifications": {
            "description": "Notifications to create, update, or delete",
            "allOf": [
              {
                "$ref": "#/components/schemas/ManageEventNotificationsDto"
              }
            ]
          }
        }
      },
      "EventsResponseDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "description": "Number of items in the current page",
            "example": 20
          },
          "total": {
            "type": "number",
            "description": "Total number of items",
            "example": 150
          },
          "currentPage": {
            "type": "number",
            "description": "Current page",
            "example": 1
          },
          "totalPages": {
            "type": "number",
            "description": "Total number of pages",
            "example": 8
          },
          "items": {
            "description": "Array of items in the current page",
            "example": [],
            "type": "array",
            "items": {
              "type": "array"
            }
          },
          "data": {
            "description": "Array of events",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            }
          }
        },
        "required": [
          "count",
          "total",
          "currentPage",
          "totalPages",
          "items",
          "data"
        ]
      },
      "CreateEventCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the category",
            "example": "Technology",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the category",
            "example": "Technology-related events and conferences"
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this category",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this category",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        },
        "required": [
          "name"
        ]
      },
      "EventCategory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the category",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "name": {
            "type": "string",
            "description": "The name of the category",
            "example": "Technology",
            "maxLength": 255
          },
          "slug": {
            "type": "string",
            "description": "The slug for the category (URL-friendly identifier)",
            "example": "technology",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the category",
            "example": "Technology-related events and conferences"
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event category",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the category (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "slug",
          "organization"
        ]
      },
      "UpdateEventCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the category",
            "example": "Technology",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the category",
            "example": "Technology-related events and conferences"
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this category",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "CreateEventRegistrationDto": {
        "type": "object",
        "properties": {
          "occurrenceId": {
            "type": "string",
            "description": "The occurrence identifier for the registration",
            "example": "123e4567-e89b-12d3-a456-426614174001",
            "format": "uuid"
          },
          "externalUserId": {
            "type": "string",
            "description": "The external user identifier for the registration",
            "example": "ext_user_12345"
          },
          "fields": {
            "type": "object",
            "description": "JSON fields provided by the registrant",
            "example": {
              "email": "user@example.com",
              "firstName": "John",
              "lastName": "Doe"
            }
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this registration",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        },
        "required": [
          "occurrenceId",
          "externalUserId"
        ]
      },
      "EventUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the user",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the user was created",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the user was last updated",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier this user belongs to",
            "example": "987e6543-e21a-34b5-c678-426614174000",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "description": "The email address of the user",
            "example": "user@example.com"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user",
            "example": "Doe"
          },
          "role": {
            "type": "string",
            "description": "The role of the user",
            "example": "attendee",
            "enum": [
              "admin",
              "organizer",
              "attendee"
            ]
          },
          "avatar": {
            "type": "string",
            "description": "The avatar URL of the user",
            "example": "https://example.com/avatars/user.jpg"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the user is active",
            "example": true,
            "default": true
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event user",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the user (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "organizationId",
          "email",
          "firstName",
          "lastName",
          "isActive",
          "organization"
        ]
      },
      "EventOccurrence": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "startDate": {
            "type": "string",
            "description": "The start date and time of the event occurrence",
            "example": "2025-12-25T10:00:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time of the event occurrence",
            "example": "2025-12-25T18:00:00.000Z",
            "format": "date-time"
          },
          "capacity": {
            "type": "number",
            "description": "The capacity of the event occurrence",
            "example": 100
          },
          "showing": {
            "type": "string",
            "description": "The showing status of the event occurrence",
            "example": "AUTO",
            "enum": [
              "AUTO",
              "SHOW",
              "HIDE"
            ]
          },
          "registrations": {
            "type": "number",
            "description": "The count of registrations for this occurrence",
            "example": 50
          },
          "waitingList": {
            "type": "number",
            "description": "The count of users on the waiting list for this occurrence",
            "example": 10
          },
          "cancelledAt": {
            "type": "string",
            "description": "The date and time when the occurrence was cancelled",
            "example": "2025-10-17T15:30:00.000Z",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The status of the event occurrence",
            "example": "ACTIVE",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "CANCELLED",
              "FINALIZED"
            ]
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event occurrence",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the occurrence (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "capacity",
          "registrations",
          "waitingList",
          "organization"
        ]
      },
      "EventRegistration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the registration",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the registration was created",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the registration was last updated",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "description": "The current status of the registration",
            "example": "CONFIRMED",
            "enum": [
              "PENDING",
              "CONFIRMED",
              "CANCELLED",
              "WAITING_LIST",
              "ATTENDED"
            ]
          },
          "fields": {
            "type": "object",
            "description": "Fields captured for the registration",
            "example": {
              "email": "user@example.com",
              "firstName": "John",
              "lastName": "Doe"
            }
          },
          "user": {
            "description": "The user associated with the registration",
            "allOf": [
              {
                "$ref": "#/components/schemas/EventUser"
              }
            ]
          },
          "occurrence": {
            "description": "The occurrence linked to the registration",
            "allOf": [
              {
                "$ref": "#/components/schemas/EventOccurrence"
              }
            ]
          },
          "event": {
            "description": "The event related to the registration",
            "allOf": [
              {
                "$ref": "#/components/schemas/Event"
              }
            ]
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event registration",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the registration (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "status",
          "user",
          "occurrence",
          "event",
          "organization"
        ]
      },
      "UpdateEventRegistrationDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Registration status",
            "enum": [
              "PENDING",
              "CONFIRMED",
              "CANCELLED",
              "WAITING_LIST",
              "ATTENDED"
            ]
          },
          "fields": {
            "type": "object",
            "description": "JSON fields provided by the registrant",
            "example": {
              "ticketType": "standard",
              "notes": "No special requests"
            }
          }
        }
      },
      "FieldOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "The value of the option that will be stored",
            "example": "option1"
          },
          "label": {
            "type": "string",
            "description": "The human-readable label for the option",
            "example": "Option 1"
          }
        },
        "required": [
          "value",
          "label"
        ]
      },
      "CreateEventFieldDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The unique name of the field",
            "example": "email"
          },
          "description": {
            "type": "string",
            "description": "An optional description for the field",
            "example": "User email address"
          },
          "fieldType": {
            "type": "string",
            "description": "The data type that the field stores",
            "enum": [
              "boolean",
              "text",
              "number",
              "date",
              "time",
              "datetime",
              "object",
              "email",
              "phone",
              "url",
              "firstName",
              "lastName"
            ],
            "example": "email"
          },
          "FieldComponent": {
            "type": "string",
            "description": "The HTML element used to render the field in a form",
            "enum": [
              "input",
              "textarea",
              "select",
              "checkbox",
              "switch",
              "radio"
            ],
            "example": "input"
          },
          "isMultiSelect": {
            "type": "boolean",
            "description": "Indicates if the field allows multiple selections. Generally applicable to select type fields",
            "example": false
          },
          "fieldOptions": {
            "description": "An array of options for selection-based fields like select, checkbox, or radio",
            "example": [
              {
                "value": "option1",
                "label": "Option 1"
              },
              {
                "value": "option2",
                "label": "Option 2"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldOption"
            }
          },
          "required": {
            "type": "boolean",
            "description": "Indicates if this field is required",
            "example": true
          },
          "isFilterable": {
            "type": "boolean",
            "description": "Indicates if this field can be used as a filter in lists",
            "example": true
          },
          "isSearchable": {
            "type": "boolean",
            "description": "Indicates if the content of this field is searchable",
            "example": true
          },
          "isSortable": {
            "type": "boolean",
            "description": "Indicates if lists can be sorted by this field",
            "example": true
          },
          "isPubliclyVisible": {
            "type": "boolean",
            "description": "Indicates if the field and its value are publicly visible",
            "example": true
          },
          "viewPermissions": {
            "type": "object",
            "description": "Defines which roles and capabilities can view this field",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": {
              "admin": [
                "read",
                "write"
              ],
              "editor": [
                "read"
              ]
            }
          },
          "editPermissions": {
            "type": "object",
            "description": "Defines which roles and capabilities can edit this field",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": {
              "admin": [
                "read",
                "write"
              ],
              "moderator": [
                "read",
                "write"
              ]
            }
          }
        },
        "required": [
          "name",
          "fieldType",
          "FieldComponent"
        ]
      },
      "CreateEventRegistrationFormDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the registration form",
            "example": "Conference Registration Form",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the registration form",
            "example": "Registration form for annual tech conference"
          },
          "fields": {
            "description": "The form fields configuration",
            "example": [
              {
                "name": "firstName",
                "fieldType": "text",
                "FieldComponent": "input",
                "description": "First Name"
              },
              {
                "name": "email",
                "fieldType": "email",
                "FieldComponent": "input",
                "description": "Email Address"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventFieldDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this registration form",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this registration form",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        },
        "required": [
          "name",
          "fields"
        ]
      },
      "EventRegistrationForm": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the registration form",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the registration form was created",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the registration form was last updated",
            "example": "2025-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The name of the registration form",
            "example": "Conference Registration Form",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the registration form",
            "example": "Registration form for annual tech conference"
          },
          "fields": {
            "type": "array",
            "description": "The form fields configuration",
            "example": [
              {
                "name": "company",
                "type": "text",
                "required": true
              }
            ]
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the event registration form",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the registration form (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "name",
          "fields",
          "organization"
        ]
      },
      "UpdateEventRegistrationFormDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the registration form",
            "example": "Conference Registration Form",
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "The description of the registration form",
            "example": "Registration form for annual tech conference"
          },
          "fields": {
            "description": "The form fields configuration",
            "example": [
              {
                "name": "firstName",
                "fieldType": "text",
                "FieldComponent": "input",
                "description": "First Name"
              },
              {
                "name": "email",
                "fieldType": "email",
                "FieldComponent": "input",
                "description": "Email Address"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventFieldDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this registration form",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this registration form",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "CreateEventTemplateDto": {
        "type": "object",
        "properties": {
          "registrationFormId": {
            "type": "string",
            "description": "The registration form identifier associated with this template",
            "example": "456e7890-e12b-34c5-d678-426614174000",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the event template",
            "example": "Weekly Tech Talks",
            "maxLength": 255
          },
          "fields": {
            "description": "The fields configuration for the event template",
            "example": [
              {
                "name": "duration",
                "fieldType": "text",
                "FieldComponent": "input",
                "description": "Event Duration"
              },
              {
                "name": "capacity",
                "fieldType": "number",
                "FieldComponent": "input",
                "description": "Maximum Capacity"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventFieldDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this template",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this template",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        },
        "required": [
          "registrationFormId",
          "name",
          "fields"
        ]
      },
      "UpdateEventTemplateDto": {
        "type": "object",
        "properties": {
          "registrationFormId": {
            "type": "string",
            "description": "The registration form identifier associated with this template",
            "example": "456e7890-e12b-34c5-d678-426614174000",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the event template",
            "example": "Weekly Tech Talks",
            "maxLength": 255
          },
          "fields": {
            "description": "The fields configuration for the event template",
            "example": [
              {
                "name": "capacity",
                "fieldType": "number",
                "FieldComponent": "input",
                "description": "Maximum Capacity"
              },
              {
                "name": "location",
                "fieldType": "text",
                "FieldComponent": "input",
                "description": "Event Location"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateEventFieldDto"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this template",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "CreateEventUserDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user",
            "example": "user@example.com",
            "maxLength": 255
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user",
            "example": "John",
            "maxLength": 255
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user",
            "example": "Doe",
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The phone number of the user",
            "example": "+1-555-123-4567",
            "maxLength": 50
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the user (from external systems)",
            "example": "ext_user_12345",
            "maxLength": 255
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the user (JSON object)",
            "example": {
              "department": "Engineering",
              "role": "Developer"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this user",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this user",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "UpdateEventUserDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user",
            "example": "user@example.com",
            "maxLength": 255
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user",
            "example": "John",
            "maxLength": 255
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user",
            "example": "Doe",
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The phone number of the user",
            "example": "+1-555-123-4567",
            "maxLength": 50
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for the user (from external systems)",
            "example": "ext_user_12345",
            "maxLength": 255
          },
          "extraFields": {
            "type": "object",
            "description": "Additional fields for the user (JSON object)",
            "example": {
              "department": "Engineering",
              "role": "Developer"
            }
          },
          "userGroupId": {
            "type": "string",
            "description": "The user group identifier associated with this user",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "organizationId": {
            "type": "string",
            "description": "The organization identifier associated with this user",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          }
        }
      },
      "CreateEventReviewDto": {
        "type": "object",
        "properties": {
          "occurrenceId": {
            "type": "string",
            "description": "The ID of the event occurrence being reviewed",
            "example": "550e8400-e29b-41d4-a716-446655440000",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "The ID of the user who is creating the review",
            "example": "550e8400-e29b-41d4-a716-446655440002",
            "format": "uuid"
          },
          "rating": {
            "type": "number",
            "description": "The rating given in the review (1-5 scale)",
            "example": 5,
            "minimum": 1,
            "maximum": 5
          },
          "comment": {
            "type": "string",
            "description": "The comment text for the review",
            "example": "Great event, very informative!"
          }
        },
        "required": [
          "occurrenceId",
          "userId",
          "rating"
        ]
      },
      "EventReview": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was created"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Datetime when the object was last updated"
          },
          "organizationId": {
            "type": "string",
            "description": "The ID of the organization the review belongs to",
            "example": "550e8400-e29b-41d4-a716-446655440003",
            "format": "uuid"
          },
          "occurrenceId": {
            "type": "string",
            "description": "The ID of the event occurrence being reviewed",
            "example": "550e8400-e29b-41d4-a716-446655440001",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "The ID of the user who created the review",
            "example": "550e8400-e29b-41d4-a716-446655440002",
            "format": "uuid"
          },
          "rating": {
            "type": "number",
            "description": "The rating given in the review (1-5 scale)",
            "example": 5,
            "minimum": 1,
            "maximum": 5
          },
          "comment": {
            "type": "string",
            "description": "The comment text for the review",
            "example": "Great event, very informative!",
            "nullable": true
          },
          "organization": {
            "type": "object",
            "description": "The organization associated with the review",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The deletion date of the review (if deleted)",
            "example": "2025-12-31T23:59:59.000Z"
          }
        },
        "required": [
          "id",
          "createdAt",
          "updatedAt",
          "organizationId",
          "occurrenceId",
          "userId",
          "rating",
          "organization"
        ]
      },
      "UpdateEventReviewDto": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "number",
            "description": "The rating given in the review (1-5 scale)",
            "example": 4,
            "minimum": 1,
            "maximum": 5
          },
          "comment": {
            "type": "string",
            "description": "The comment text for the review",
            "example": "Updated comment about the event"
          }
        }
      },
      "EventReviewResponseDto": {
        "type": "object",
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "The ID of the organization the review belongs to",
            "example": "550e8400-e29b-41d4-a716-446655440003",
            "format": "uuid"
          },
          "occurrenceId": {
            "type": "string",
            "description": "The ID of the event occurrence being reviewed",
            "example": "550e8400-e29b-41d4-a716-446655440001",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "The ID of the user who created the review",
            "example": "550e8400-e29b-41d4-a716-446655440002",
            "format": "uuid"
          },
          "rating": {
            "type": "number",
            "description": "The rating given in the review (1-5 scale)",
            "example": 5,
            "minimum": 1,
            "maximum": 5
          },
          "comment": {
            "type": "string",
            "description": "The comment text for the review",
            "example": "Great event, very informative!",
            "nullable": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "The timestamp when the review was created",
            "example": "2025-10-21T12:00:00.000Z"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "The timestamp when the review was last updated",
            "example": "2025-10-21T12:00:00.000Z"
          }
        },
        "required": [
          "organizationId",
          "occurrenceId",
          "userId",
          "rating",
          "createdAt",
          "updatedAt"
        ]
      },
      "EventReviewsResponseDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "description": "Number of items in the current page",
            "example": 20
          },
          "total": {
            "type": "number",
            "description": "Total number of items",
            "example": 150
          },
          "currentPage": {
            "type": "number",
            "description": "Current page",
            "example": 1
          },
          "totalPages": {
            "type": "number",
            "description": "Total number of pages",
            "example": 8
          },
          "items": {
            "description": "Array of items in the current page",
            "example": [],
            "type": "array",
            "items": {
              "type": "array"
            }
          },
          "data": {
            "description": "Array of review data",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventReviewResponseDto"
            }
          }
        },
        "required": [
          "count",
          "total",
          "currentPage",
          "totalPages",
          "items",
          "data"
        ]
      },
      "DilemaIntegrationDto": {
        "type": "object",
        "properties": {}
      },
      "TrackbackDto": {
        "type": "object",
        "properties": {}
      }
    }
  },
  "externalDocs": {
    "description": "Onlive documentation portal",
    "url": "https://dev-docs-staging.onlive.site/docs/open-api"
  }
}