{"openapi":"3.0.0","paths":{"/api":{"get":{"operationId":"AppController_getHello","parameters":[],"responses":{"200":{"description":""}},"tags":["App"]}},"/api/user":{"post":{"operationId":"UserController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserDto"}}}},"responses":{"201":{"description":""}},"tags":["User"]},"get":{"operationId":"UserController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["User"]}},"/api/user/search":{"get":{"operationId":"UserController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["User"]}},"/api/user/{id}":{"get":{"operationId":"UserController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["User"]},"patch":{"operationId":"UserController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserDto"}}}},"responses":{"200":{"description":""}},"tags":["User"]},"delete":{"operationId":"UserController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["User"]}},"/api/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequestDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/api/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"responses":{"201":{"description":""}},"tags":["Auth"]}},"/api/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"responses":{"201":{"description":""}},"tags":["Auth"]}},"/api/event-type":{"post":{"operationId":"EventTypesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventTypeDto"}}}},"responses":{"201":{"description":""}},"tags":["EventTypes"]},"get":{"operationId":"EventTypesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["EventTypes"]}},"/api/event-type/search":{"get":{"operationId":"EventTypesController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventTypes"]}},"/api/event-type/{id}":{"get":{"operationId":"EventTypesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventTypes"]},"patch":{"operationId":"EventTypesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEventTypeDto"}}}},"responses":{"200":{"description":""}},"tags":["EventTypes"]},"delete":{"operationId":"EventTypesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventTypes"]}},"/api/products":{"post":{"operationId":"ProductsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProductDto"}}}},"responses":{"201":{"description":""}},"tags":["Products"]},"get":{"operationId":"ProductsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Products"]}},"/api/products/search":{"get":{"operationId":"ProductsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Products"]}},"/api/products/{id}":{"get":{"operationId":"ProductsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Products"]},"patch":{"operationId":"ProductsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductDto"}}}},"responses":{"200":{"description":""}},"tags":["Products"]},"delete":{"operationId":"ProductsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Products"]}},"/api/events":{"post":{"operationId":"EventsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventDto"}}}},"responses":{"201":{"description":""}},"tags":["Events"]},"get":{"operationId":"EventsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Events"]}},"/api/events/search":{"get":{"operationId":"EventsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Events"]}},"/api/events/{id}":{"get":{"operationId":"EventsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Events"]},"patch":{"operationId":"EventsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEventDto"}}}},"responses":{"200":{"description":""}},"tags":["Events"]},"delete":{"operationId":"EventsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Events"]}},"/api/user-group":{"post":{"operationId":"UserGroupsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserGroupDto"}}}},"responses":{"201":{"description":""}},"tags":["UserGroups"]},"get":{"operationId":"UserGroupsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["UserGroups"]}},"/api/user-group/search":{"get":{"operationId":"UserGroupsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserGroups"]}},"/api/user-group/{id}":{"get":{"operationId":"UserGroupsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserGroups"]},"patch":{"operationId":"UserGroupsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserGroupDto"}}}},"responses":{"200":{"description":""}},"tags":["UserGroups"]},"delete":{"operationId":"UserGroupsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserGroups"]}},"/api/user-role":{"post":{"operationId":"UserRolesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserRoleDto"}}}},"responses":{"201":{"description":""}},"tags":["UserRoles"]},"get":{"operationId":"UserRolesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["UserRoles"]}},"/api/user-role/search":{"get":{"operationId":"UserRolesController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserRoles"]}},"/api/user-role/{id}":{"get":{"operationId":"UserRolesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserRoles"]},"patch":{"operationId":"UserRolesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRoleDto"}}}},"responses":{"200":{"description":""}},"tags":["UserRoles"]},"delete":{"operationId":"UserRolesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserRoles"]}},"/api/recurrence-rules":{"post":{"operationId":"RecurrenceRulesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecurrenceRuleDto"}}}},"responses":{"201":{"description":""}},"tags":["RecurrenceRules"]},"get":{"operationId":"RecurrenceRulesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["RecurrenceRules"]}},"/api/recurrence-rules/search":{"get":{"operationId":"RecurrenceRulesController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["RecurrenceRules"]}},"/api/recurrence-rules/{id}":{"get":{"operationId":"RecurrenceRulesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["RecurrenceRules"]},"patch":{"operationId":"RecurrenceRulesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRecurrenceRuleDto"}}}},"responses":{"200":{"description":""}},"tags":["RecurrenceRules"]},"delete":{"operationId":"RecurrenceRulesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["RecurrenceRules"]}},"/api/event-exceptions":{"post":{"operationId":"EventExceptionsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventExceptionDto"}}}},"responses":{"201":{"description":""}},"tags":["EventExceptions"]},"get":{"operationId":"EventExceptionsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["EventExceptions"]}},"/api/event-exceptions/search":{"get":{"operationId":"EventExceptionsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventExceptions"]}},"/api/event-exceptions/{id}":{"get":{"operationId":"EventExceptionsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventExceptions"]},"patch":{"operationId":"EventExceptionsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEventExceptionDto"}}}},"responses":{"200":{"description":""}},"tags":["EventExceptions"]},"delete":{"operationId":"EventExceptionsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["EventExceptions"]}},"/api/calendar":{"get":{"operationId":"CalendarController_getCalendarEvents","parameters":[],"responses":{"200":{"description":""}},"tags":["Calendar"]}},"/api/calendar/events":{"post":{"operationId":"CalendarController_createEvent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventDto"}}}},"responses":{"201":{"description":""}},"tags":["Calendar"]}},"/api/calendar/events/{id}":{"get":{"operationId":"CalendarController_getEventById","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Calendar"]},"patch":{"operationId":"CalendarController_updateEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventDto"}}}},"responses":{"200":{"description":""}},"tags":["Calendar"]},"delete":{"operationId":"CalendarController_deleteEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Calendar"]}},"/api/calendar/events/{id}/exceptions":{"post":{"operationId":"CalendarController_createException","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExceptionDto"}}}},"responses":{"201":{"description":""}},"tags":["Calendar"]}},"/api/calendar/events/{id}/bookings":{"post":{"operationId":"CalendarController_createBooking","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarCreateBookingDto"}}}},"responses":{"201":{"description":""}},"tags":["Calendar"]}},"/api/calendar/bookings/{bookingId}/cancel":{"patch":{"operationId":"CalendarController_cancelBooking","parameters":[{"name":"bookingId","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelBookingDto"}}}},"responses":{"200":{"description":""}},"tags":["Calendar"]}},"/api/calendar/bookings/{eventId}/{startTime}":{"get":{"operationId":"CalendarController_getBookings","parameters":[{"name":"eventId","required":true,"in":"path","schema":{"type":"number"}},{"name":"startTime","required":true,"in":"path","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["Calendar"]}},"/api/bookings":{"post":{"operationId":"BookingsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBookingDto"}}}},"responses":{"201":{"description":""}},"tags":["Bookings"]},"get":{"operationId":"BookingsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Bookings"]}},"/api/bookings/search":{"get":{"operationId":"BookingsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Bookings"]}},"/api/bookings/{id}":{"get":{"operationId":"BookingsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Bookings"]},"patch":{"operationId":"BookingsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBookingDto"}}}},"responses":{"200":{"description":""}},"tags":["Bookings"]},"delete":{"operationId":"BookingsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Bookings"]}},"/api/ping":{"get":{"operationId":"PingController_ping","parameters":[],"responses":{"200":{"description":""}},"tags":["Ping"]}},"/api/ping/auth":{"get":{"operationId":"PingController_pingAuth","parameters":[],"responses":{"200":{"description":""}},"tags":["Ping"]}}},"info":{"title":"DV Booking API","description":"The DV Booking API description","version":"1.0","contact":{}},"tags":[{"name":"dvbooking","description":""}],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","name":"JWT","description":"Enter JWT token","in":"header"}},"schemas":{"CreateUserDto":{"type":"object","properties":{"username":{"type":"string"},"email":{"type":"string"},"password":{"type":"string"}},"required":["username","email","password"]},"UpdateUserDto":{"type":"object","properties":{"username":{"type":"string"},"email":{"type":"string"},"password":{"type":"string"}},"required":["username","email","password"]},"LoginRequestDto":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]},"CreateEventTypeDto":{"type":"object","properties":{}},"UpdateEventTypeDto":{"type":"object","properties":{}},"CreateProductDto":{"type":"object","properties":{}},"UpdateProductDto":{"type":"object","properties":{}},"CreateEventDto":{"type":"object","properties":{}},"UpdateEventDto":{"type":"object","properties":{}},"CreateUserGroupDto":{"type":"object","properties":{}},"UpdateUserGroupDto":{"type":"object","properties":{}},"CreateUserRoleDto":{"type":"object","properties":{}},"UpdateUserRoleDto":{"type":"object","properties":{}},"CreateRecurrenceRuleDto":{"type":"object","properties":{}},"UpdateRecurrenceRuleDto":{"type":"object","properties":{}},"CreateEventExceptionDto":{"type":"object","properties":{}},"UpdateEventExceptionDto":{"type":"object","properties":{}},"CreateExceptionDto":{"type":"object","properties":{}},"CalendarCreateBookingDto":{"type":"object","properties":{"occurrenceStartTime":{"format":"date-time","type":"string"},"userId":{"type":"number"},"reservedSeatsCount":{"type":"number"},"notes":{"type":"string"}},"required":["occurrenceStartTime","userId","reservedSeatsCount","notes"]},"CancelBookingDto":{"type":"object","properties":{}},"CreateBookingDto":{"type":"object","properties":{}},"UpdateBookingDto":{"type":"object","properties":{}}}}}