openapi: "3.0.2"
info:
  version: 1.0.0
  title: Capgemini API site
  description: Open API definition for the Capgemini brand site API
servers:
  - url: http://localhost:4000/api/v1

paths:
  /auth/session:
    post:
      summary: Start the authentication for the guest portal
      operationId: createSession
      description: Initiate guest authentication
      tags:
        - auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/sessionBody"
      responses:
        201:
          description: Session successfully created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Session"
  /auth/verify:
    post:
      summary: Verify a previously started auth challenge
      operationId: verifySession
      description: Verify a previously started session verification
      tags:
        - auth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/sessionVerificationBody"
      responses:
        201:
          description: Session successfully passed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionToken"
  /users:
    get:
      summary: Get users
      operationId: getUsers
      description: List of existing users
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/users.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create user
      operationId: createUser
      description: Create a new user
      tags:
        - user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/userBody"
      responses:
        201:
          description: "User successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "User already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
  /users/{id}:
    get:
      summary: Get user by id
      operationId: getUserById
      description: Information for a specific user
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/user.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: edit user
      operationId: editUser
      description: edit user
      tags:
        - user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/userBody"
      responses:
        201:
          description: "User updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "User not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete user
      operationId: deleteUser
      description: Delete user
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: user was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /users/forgetPassword/{email}:
    patch:
      summary: Forget password
      operationId: forgetPassword
      description: Forget Password
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/email"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/userBody"
      responses:
        200:
          description: "Forget Password successfully updated"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /users/getGroupUsers:
    get:
      summary: Get groupusers
      operationId: getGroupUsers
      description: List of existing users
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/users.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /users/reports:
    get:
      summary: Get users Reports
      operationId: getUsers Reports
      description: List of existing users Reports
      tags:
        - user
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/users.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"       
  /events:
    get:
      summary: Get events
      operationId: getEvents
      description: List of existing events
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/events.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create event
      operationId: createEvent
      description: Create a new event
      tags:
        - event
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/eventBody"
      responses:
        201:
          description: "Event successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Event"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Event already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
  /events/{id}:
    patch:
      summary: Update event
      operationId: editEvent
      description: Update event
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/eventBody"
      responses:
        200:
          description: "Event successfully updated"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Event"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    delete:
      summary: Delete event
      operationId: deleteEvent
      description: Delete event
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: event was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /events/getEventDetails/{id}/{type}:
    get:
      summary: Get event
      operationId: getEventDetails
      description: List of existing event
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/id"
        - $ref: "#/components/parameters/type"
      responses:
        200:
          $ref: "./responses/event.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /events/reports:
    get:
      summary: Get events
      operationId: getEvents
      description: List of existing events
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/events.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /events/match:
    get:
      summary: Get events
      operationId: getEvents
      description: List of existing events
      tags:
        - event
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/events.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"        
  /packages:
    get:
      summary: Get packages
      operationId: getPackages
      description: List of existing packages
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/packages.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create package
      operationId: createPackage
      description: Create a new package
      tags:
        - package
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/packageBody"
      responses:
        201:
          description: "Package successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Package"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Package already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
  /packages/{id}:
    get:
      summary: Get package by id
      operationId: getPackageById
      description: Information for a specific package
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/package.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete package
      operationId: deletePackage
      description: Delete package
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Package was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: Update package
      operationId: editPackage
      description: Update package
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/packageBody"
      responses:
        200:
          description: "Package successfully updated"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Package"
  /packages/list:
    get:
      summary: Get packages
      operationId: getPackages
      description: List of existing packages
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/packages.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"  
  /packages/ticketGroup/reports:
    get:
      summary: Get packages ticket group report
      operationId: getPackagesticket group report
      description: List of existing packages ticket group report
      tags:
        - package
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/packages.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"                      
  /requests:
    get:
      summary: Get requests
      operationId: getRequests
      description: List of existing requests
      tags:
        - request
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/requests.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create request
      operationId: createRequest
      description: Create a new request
      tags:
        - request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/requestBody"
      responses:
        201:
          description: "Request successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Request"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Guest already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
  /requests/{id}:
    get:
      summary: Get request by id
      operationId: getRequestById
      description: Information for a specific request
      tags:
        - request
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/request.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: Update request
      operationId: editrequest
      description: Update request
      tags:
        - request
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/requestBody"
      responses:
        200:
          description: "Request successfully updated"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Request"
  /tickets:
    get:
      summary: Get tickets
      operationId: getTickets
      description: List of existing tickets
      tags:
        - ticket
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: create Ticket
      operationId: createTicket
      description: Create a new ticket
      tags:
        - ticket
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketBody"
      responses:
        201:
          description: "Ticket successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Ticket"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Ticket already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
  /tickets/{id}:
    patch:
      summary: edit ticket
      operationId: editTicket
      description: edit ticket
      tags:
        - ticket
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketBody"
      responses:
        200:
          description: "Ticket updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Ticket"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Ticket not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete Ticket
      operationId: deleteTicket
      description: Delete Ticket
      tags:
        - Ticket
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Ticket was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"            
  /tickets/updateTickets:
    patch:
      summary: update ticket status
      operationId: updateTickets
      description: update Tickets
      tags:
        - ticket
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketBody"
      responses:
        201:
          description: "updated ticket successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ticketBody"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "ticket not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /tickets/admin:
    get:
      summary: Get tickets
      operationId: getTickets
      description: List of existing tickets
      tags:
        - ticket
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /tickets/report:
    get:
      summary: Get tickets report
      operationId: ticketsReport
      description: List of existing tickets
      tags:
        - ticket report
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /tickets/brand:
    get:
      summary: Get tickets report
      operationId: ticketsReport
      description: List of existing tickets
      tags:
        - ticket report
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /tickets/requestBy:
    get:
      summary: Get tickets request
      operationId: getTicketsByRequest
      description: List of existing tickets
      tags:
        - tickets request
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"   
  /tickets/ticketReports:
    get:
      summary: Get ticket Reports
      operationId: getTicketReports
      description: List of existing tickets
      tags:
        - ticket Reports
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /tickets/brandReport:
    get:
      summary: Get ticket Reports
      operationId: getTicketCSVReports
      description: List of existing tickets
      tags:
        - ticket Reports
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: package
          in: query
          description: Which tickets should be retrieved based on package id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/tickets.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"                       
  /guests:
    get:
      summary: Get guests
      operationId: getGuests
      description: List of existing guests
      tags:
        - guest
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: user
          in: query
          description: Which guests should be retrieved based on user id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
        - name: firstName
          in: query
          required: false
          schema:
            type: string
        - name: lastName
          in: query
          required: false
          schema:
            type: string
        - name: fullName
          in: query
          required: false
          schema:
            type: string
      responses:
        200:
          $ref: "./responses/pagination/guests.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create guest
      operationId: createGuest
      description: Create a new guest
      tags:
        - guest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestBody"
      responses:
        201:
          description: "Guest successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Guest"
        default:
          description: "Guest already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"
    patch:
      summary: Upload an guests
      operationId: createGuests
      description: Create guests
      tags:
        - guests
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/parameters/guestBody"
      responses:
        201:
          description: "Guest successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Guest"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"            
  /guests/{id}:
    get:
      summary: Get guest by id
      operationId: getGuestById
      description: Information for a specific guest
      tags:
        - guest
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/guest.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: edit guest
      operationId: editGuest
      description: edit guest
      tags:
        - guest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestBody"
      responses:
        200:
          description: "Guest updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Guest"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Guest not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /guests/bulkGuests:
    post:
      summary: Create guest
      operationId: createGuest
      description: Create a bulk guests
      tags:
        - guest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestBody"
      responses:
        201:
          description: "Guests successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Guest"
        default:
          description: "Guest already exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AlreadyExistsError"              

  /bookings:
    get:
      summary: Get bookings
      operationId: getBookings
      description: List of existing bookings
      tags:
        - booking
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: ticket
          in: query
          description: Get bookings based on ticket id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
        - name: user
          in: query
          description: Get bookings based on user id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
        - name: guest
          in: query
          description: Get bookings based on guest id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/bookings.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create booking
      operationId: createBooking
      description: Create a new booking
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/bookingBody"
      responses:
        201:
          description: "Booking successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Booking"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /bookings/commands:
    post:
      summary: Execute a booking command
      operationId: bookingCommand
      description: Execute a booking command
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/parameters/commandBody"
                - $ref: "#/components/parameters/sendInviteCommandBody"
      responses:
        200:
          description: "booking command succesfully executed"
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "./responses/sendInvite.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /bookings/resendInvite:
    post:
      summary: Execute a booking command
      operationId: bookingCommand
      description: Execute a booking command
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/parameters/commandBody"
                - $ref: "#/components/parameters/sendInviteCommandBody"
      responses:
        200:
          description: "booking command succesfully executed"
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "./responses/sendInvite.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"        
  /bookings/{id}:
    delete:
      summary: Delete booking
      operationId: deleteBooking
      description: Delete booking
      tags:
        - booking
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Booking was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    get:
      summary: Get booking by id
      operationId: getBookingById
      description: Information for a specific booking
      tags:
        - booking
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/booking.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"

    patch:
      summary: edit booking
      operationId: editBooking
      description: edit booking
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/bookingBody"
      responses:
        200:
          description: "Booking updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Booking"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Booking not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /bookings/allocate:
    patch:
      summary: delete guest allocation
      operationId: deleteGuestAllocation
      description: delete guest allocation
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestAllocationBody"
      responses:
        200:
          description: "Guest delete successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GuestAllocation"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Guest Allocation not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /bookings/guestAllocation:
    get:
      summary: Get Guest Allocation
      operationId: getGuestAllocation
      description: List of existing guest allocation
      tags:
        - booking
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/booking.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /bookings/updateBookings:
    patch:
      summary: update Bookings status
      operationId: updateBookings
      description: update Bookings
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestAllocationBody"
      responses:
        201:
          description: "updated bookings successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GuestAllocation"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "bookings not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /bookings/bookingRegistration:
    patch:
      summary: update Bookings status
      operationId: bookingRegistration
      description: update Bookings
      tags:
        - booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/guestAllocationBody"
      responses:
        201:
          description: "updated bookings successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GuestAllocation"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "bookings not exists"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /bookings/report:
    get:
      summary: bookings report
      operationId: bookingReport
      description: List of existing bookings
      tags:
        - booking report
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
        - name: ticket
          in: query
          description: Get bookings based on ticket id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
        - name: user
          in: query
          description: Get bookings based on user id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
        - name: guest
          in: query
          description: Get bookings based on guest id
          required: false
          style: form
          explode: true
          schema:
            $ref: "./schemas/queryParams/number.yaml"
      responses:
        200:
          $ref: "./responses/pagination/bookings.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /assets:
    post:
      summary: Upload an asset to the platform and link to the given resource
      operationId: createAsset
      description: Create a new asset
      tags:
        - asset
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/parameters/assetBody"
      responses:
        201:
          description: "Booking successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Asset"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /allocate:
    post:
      summary: Create allocate
      operationId: createAllocate
      description: Create a new allocate
      tags:
        - allocate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/allocateBody"
      responses:
        201:
          description: "Allocate successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Allocate"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"

  /groups:
    get:
      summary: Get Groups
      operationId: getGroups
      description: List of existing groups
      tags:
        - groups
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/groups.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Create groups
      operationId: createGroups
      description: Create a new groups
      tags:
        - groups
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/groupsBody"
      responses:
        201:
          description: "Groups successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Groups"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /groups/{id}:
    get:
      summary: Get Groups by id
      operationId: getGroupsById
      description: Information for a specific groups
      tags:
        - groups
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/groups.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete Group
      operationId: deleteGroup
      description: Delete group
      tags:
        - groups
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Group was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: Update group
      operationId: editgroup
      description: Update group
      tags:
        - groups
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/groupsBody"
      responses:
        200:
          description: "Group successfully updated"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Group"
  /groups/reports:
    get:
      summary: Get groups Reports
      operationId: getgroups Reports
      description: List of existing groups Reports
      tags:
        - groups
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/groups.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"                
  /flags:
    get:
      summary: Get Country Flags
      operationId: getCountryFlags
      description: List of existing country flags
      tags:
        - flags
      responses:
        200:
          $ref: "./responses/pagination/flag.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: Upload an country flag
      operationId: createFlag
      description: Create a new flag
      tags:
        - flags
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/parameters/flagBody"
      responses:
        201:
          description: "Flag successfully created"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/flag"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /settings/{id}:
    patch:
      summary: settings
      operationId: settings
      description: settings
      tags:
        - settings
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/settingBody"
      responses:
        200:
          description: "settings updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Setting"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Setting ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /login:
    post:
      summary: Admin user login
      operationId: loginUser
      description: admin user login
      tags:
        - login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/loginBody"
      responses:
        200:
          $ref: "./responses/login.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /login/brand:
    post:
      summary: Brand user login
      operationId: BrandloginUser
      description: brand user login
      tags:
        - login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/loginBody"
      responses:
        200:
          $ref: "./responses/login.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /welcome:
    get:
      summary: Get welcome count data
      operationId: getWelcomeCountData
      description: List of existing data
      tags:
        - welcome
      responses:
        200:
          $ref: "./responses/pagination/welcome.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /ticketTypes:
    post:
      summary: ticket types
      operationId: ticketTypes
      description: ticket type data
      tags:
        - ticketType
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketTypeBody"
      responses:
        200:
          $ref: "./responses/ticketTypes.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get ticket type data
      operationId: gettickettypedata
      description: List of existing data
      tags:
        - ticketType
      responses:
        200:
          $ref: "./responses/pagination/ticketTypes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /ticketTypes/{id}:
    get:
      summary: Get Ticket Type by id
      operationId: getTicketTypeById
      description: Information for a specific Ticket TYpe
      tags:
        - ticketType
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/ticketTypes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update ticket type
      operationId: update ticket type
      description: update ticket type
      tags:
        - ticketType
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketTypeBody"
      responses:
        200:
          description: "Ticket type data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ticketTypeBody"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Ticket Type ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete ticket type
      operationId: deleteTicketType
      description: Delete ticket type
      tags:
        - ticketType
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Ticket Type was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /experience:
    get:
      summary: Get Experience data
      operationId: getexperiencedata
      description: List of existing data
      tags:
        - experience
      responses:
        200:
          $ref: "./responses/pagination/experience.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    post:
      summary: experience
      operationId: Experience
      description: experience data
      tags:
        - experience
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/experienceTypeBody"
      responses:
        200:
          $ref: "./responses/experience.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
  /experience/{id}:
    get:
      summary: Get Experience by id
      operationId: getExperienceById
      description: Information for a specific experience
      tags:
        - experience
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/experience.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update experience
      operationId: update experience
      description: update experience
      tags:
        - experience
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/experienceTypeBody"
      responses:
        200:
          description: "experience data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/experience"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Experience ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete experience
      operationId: deleteExperience
      description: Delete experience
      tags:
        - experience
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Experience was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /experience/contentImage/{id}:
    patch:
      summary: update content experience
      operationId: update content experience
      description: update content experience
      tags:
        - experience
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/experienceTypeBody"
      responses:
        200:
          description: "experience data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/experience"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Experience ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
  /searchFilter:
    get:
      summary: search data
      operationId: search data
      description: Information for a specific search data
      tags:
        - eventSearch
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/event.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /searchFilter/searchUsers:
    get:
      summary: search User data
      operationId: search User data
      description: Information for a specific search User data
      tags:
        - eventSearch
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/user.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /packageTypes:
    post:
      summary: package types
      operationId: packageTypes
      description: package type data
      tags:
        - packageType
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketTypeBody"
      responses:
        200:
          $ref: "./responses/ticketTypes.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get package type data
      operationId: getpackagetypedata
      description: List of existing data
      tags:
        - packageType
      responses:
        200:
          $ref: "./responses/pagination/ticketTypes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /packageTypes/{id}:
    get:
      summary: Get package Type by id
      operationId: getPackageTypeById
      description: Information for a specific Package TYpe
      tags:
        - packageType
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/ticketTypes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update package type
      operationId: update package type
      description: update package type
      tags:
        - packageType
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/ticketTypeBody"
      responses:
        200:
          description: "Package type data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ticketTypeBody"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Package Type ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete package type
      operationId: deletePackageType
      description: Delete package type
      tags:
        - packageType
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Package Type was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rwc23Games:
    post:
      summary: rwc23Games
      operationId: rwc23Games data
      description: rwc23Games data
      tags:
        - rwc23Games
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rwc23Games.yaml"
      responses:
        200:
          $ref: "./responses/rwc23Games.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get rwc23Games data
      operationId: getRwc23GamesData
      description: List of existing data
      tags:
        - rwc23Games
      responses:
        200:
          $ref: "./responses/pagination/rwc23Games.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rwc23Games/{id}:
    get:
      summary: Get rwc23Games by id
      operationId: getRwc23GamesById
      description: Information for a specific rwc23Games
      tags:
        - rwc23Games
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/rwc23Games.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update rwc23Games
      operationId: update rwc23Games
      description: update rwc23Games
      tags:
        - rwc23Games
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rwc23Games.yaml"
      responses:
        200:
          description: "Rwc23Games data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rwc23Games"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Match ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete rwc23Games
      operationId: deleteRwc23Games
      description: Delete rwc23Games
      tags:
        - rwc23Games
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Rwc23Games Data was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rwc21Games:
    post:
      summary: rwc21Games
      operationId: rwc21Games data
      description: rwc21Games data
      tags:
        - rwc21Games
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rwc21Games.yaml"
      responses:
        200:
          $ref: "./responses/rwc21Games.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get rwc21Games data
      operationId: getRwc21GamesData
      description: List of existing data
      tags:
        - rwc21Games
      responses:
        200:
          $ref: "./responses/pagination/rwc21Games.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rwc21Games/{id}:
    get:
      summary: Get rwc21Games by id
      operationId: getRwc21GamesById
      description: Information for a specific RWC 21 Game
      tags:
        - rwc21Games
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/rwc21Games.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update rwc21Games
      operationId: update rwc21Games
      description: update rwc21Games
      tags:
        - rwc21Games
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rwc21Games.yaml"
      responses:
        200:
          description: "Match data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rwc21Games"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Match ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete rwc21Games
      operationId: deleteRwc21Games
      description: Delete Rwc21Games
      tags:
        - rwc21Games
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Rwc21Game Data was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /tournaments:
    get:
      summary: Get tournaments
      operationId: getTournaments
      description: List of existing Tournaments
      tags:
        - tournaments
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/tournaments.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rounds:
    post:
      summary: rounds
      operationId: rounds data
      description: rounds data
      tags:
        - rounds
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rounds.yaml"
      responses:
        200:
          $ref: "./responses/rounds.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get rounds
      operationId: getRounds
      description: List of existing Rounds
      tags:
        - rounds
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/rounds.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /rounds/{id}:
    get:
      summary: Get rounds by id
      operationId: getRoundsById
      description: Information for a specific Round data
      tags:
        - rounds
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/rounds.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update rounds
      operationId: update rounds
      description: update rounds
      tags:
        - rounds
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/rounds.yaml"
      responses:
        200:
          description: "Match data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rounds"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Match ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete rounds
      operationId: deleteRound
      description: Delete Round
      tags:
        - rounds
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: Round Data was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"          
  /divisions:
    post:
      summary: divisions
      operationId: divisions data
      description: divisions data
      tags:
        - divisions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/divisions.yaml"
      responses:
        200:
          $ref: "./responses/divisions.yaml"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          $ref: "#/components/schemas/BadRequestError"
    get:
      summary: Get Division Data
      operationId: getDivisionData
      description: List of existing Division Data
      tags:
        - divisions
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
        - $ref: "#/components/parameters/idFilter"
      responses:
        200:
          $ref: "./responses/pagination/divisions.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml" 
  /divisions/{id}:
    get:
      summary: Get divisions by id
      operationId: getDivisionsById
      description: Information for a specific division data
      tags:
        - divisions
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        200:
          $ref: "./responses/divisions.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
    patch:
      summary: update divisions
      operationId: update divisions
      description: update divisions
      tags:
        - divisions
      parameters:
        - $ref: "#/components/parameters/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/parameters/divisions.yaml"
      responses:
        200:
          description: "Divisions data updated successfully"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/divisions"
        404:
          $ref: "./responses/errors/NotFoundError.yaml"
        default:
          description: "Divisions ID not exist"
          content:
            application/json:
              schema:
                $ref: "./responses/errors/NotFoundError.yaml"
    delete:
      summary: Delete divisions
      operationId: deleteDivisions
      description: Delete Divisions
      tags:
        - divisions
      parameters:
        - $ref: "#/components/parameters/id"
      responses:
        204:
          description: divisions Data was successfully deleted
        default:
          $ref: "./responses/errors/NotFoundError.yaml"          
  /guestTypes:
    get:
      summary: Get guestTypes
      operationId: getGuest Types
      description: List of existing guest types
      tags:
        - guestTypes
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/guestTypes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"
  /countryCodes:
    get:
      summary: Get countryCodes
      operationId: get Country Codes
      description: List of existing country codes
      tags:
        - countryCodes
      parameters:
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/sortBy"
        - $ref: "#/components/parameters/direction"
      responses:
        200:
          $ref: "./responses/pagination/countryCodes.yaml"
        default:
          $ref: "./responses/errors/NotFoundError.yaml"                         
components:
  parameters:
    id:
      $ref: "./parameters/path/id.yaml"
    limit:
      $ref: "./parameters/query/limit.yaml"
    page:
      $ref: "./parameters/query/page.yaml"
    direction:
      $ref: "./parameters/query/direction.yaml"
    sortBy:
      $ref: "./parameters/query/sortBy.yaml"
    idFilter:
      $ref: "./parameters/query/id.yaml"
    guestBody:
      $ref: "./parameters/body/guest.yaml"
    requestBody:
      $ref: "./parameters/body/request.yaml"
    userBody:
      $ref: "./parameters/body/user.yaml"
    eventBody:
      $ref: "./parameters/body/event.yaml"
    commandBody:
      $ref: "./parameters/body/command.yaml"
    sendInviteCommandBody:
      $ref: "./parameters/body/commands/sendInvite.yaml"
    bookingBody:
      $ref: "./parameters/body/booking.yaml"
    assetBody:
      $ref: "./parameters/body/asset.yaml"
    sessionBody:
      $ref: "./parameters/body/session.yaml"
    ticketBody:
      $ref: "./parameters/body/ticket.yaml"
    sessionVerificationBody:
      $ref: "./parameters/body/sessionVerification.yaml"
    allocateBody:
      $ref: "./parameters/body/allocate.yaml"
    groupsBody:
      $ref: "./parameters/body/groups.yaml"
    packageBody:
      $ref: "./parameters/body/package.yaml"
    flagBody:
      $ref: "./parameters/body/flag.yaml"
    settingBody:
      $ref: "./parameters/body/setting.yaml"
    email:
      $ref: "./parameters/path/email.yaml"
    guestAllocationBody:
      $ref: "./parameters/body/guestAllocation.yaml"
    loginBody:
      $ref: "./parameters/body/login.yaml"
    ticketTypeBody:
      $ref: "./parameters/body/ticketTypes.yaml"
    experienceTypeBody:
      $ref: "./parameters/body/experience.yaml"
    rwc21Games:
      $ref: "./parameters/body/rwc21Games.yaml"
    rwc23Games:
      $ref: "./parameters/body/rwc23Games.yaml"
    rounds:
      $ref: "./parameters/body/rounds.yaml"  
    divisions:
      $ref: "./parameters/body/divisions.yaml"
  schemas:
    Error:
      $ref: "./schemas/error.yaml"
    User:
      $ref: "./schemas/user.yaml"
    Event:
      $ref: "./schemas/event.yaml"
    Package:
      $ref: "./schemas/package.yaml"
    Request:
      $ref: "./schemas/request.yaml"
    Ticket:
      $ref: "./schemas/ticket.yaml"
    Guest:
      $ref: "./schemas/guest.yaml"
    Asset:
      $ref: "./schemas/asset.yaml"
    Booking:
      $ref: "./schemas/booking.yaml"
    Session:
      $ref: "./schemas/session.yaml"
    SessionToken:
      $ref: "./schemas/sessionToken.yaml"
    AlreadyExistsError:
      $ref: "./schemas/errors/AlreadyExists.yaml"
    BadRequestError:
      $ref: "./responses/errors/BadRequestError.yaml"
    Allocate:
      $ref: "./schemas/allocate.yaml"
    Groups:
      $ref: "./schemas/groups.yaml"
    Flag:
      $ref: "./schemas/flag.yaml"
    Setting:
      $ref: "./schemas/setting.yaml"
    GuestAllocation:
      $ref: "./schemas/guestAllocation.yaml"
    ticketTypes:
      $ref: "./schemas/ticketTypes.yaml"
    experience:
      $ref: "./schemas/experience.yaml"
    rwc23Games:
      $ref: "./schemas/rwc23Games.yaml"
    rwc21Games:
      $ref: "./schemas/rwc21Games.yaml"
    rounds:
      $ref: "./schemas/rounds.yaml"
    divisions:
      $ref: "./schemas/divisions.yaml"
