openapi: 3.0.3
info:
  title: 'API Documentation'
  description: "\n        | **Method** | **Endpoint** | **Description** |\n        |------------|--------------|----------------|\n        | `POST` | [/v5/oauth/token](https://developers.vfairs.com/apis/oauth-access-token/getAccessToken) | Generate an OAuth access token |\n        | `GET` | [/v5/forms/attendeeFields](https://developers.vfairs.com/apis/attendees/getAttendeeFormFields) | Retrieve attendee form fields |\n        | `POST` | [/v5/users/attendees](https://developers.vfairs.com/apis/attendees/createUpdateAttendee) | Create or update an attendee |\n        | `GET` | [/v5/users/attendees](https://developers.vfairs.com/apis/attendees/getAttendees) | Retrieve all attendees |\n        | `POST` | [/v5/users/attendees/{attendeeId}/resume](https://developers.vfairs.com/apis/attendees/uploadAttendeeResume) | Upload an attendee's resume |\n        | `DELETE` | [/v5/users/attendees/{attendeeId}/delete](https://developers.vfairs.com/apis/attendees/deleteAttendee) | Remove an attendee |\n        | `POST` | [/v5/sessions/sessionTracks](https://developers.vfairs.com/apis/session-tracks/createUpdateSessionTrack) | Create or update a session track |\n        | `GET` | [/v5/sessions/sessionTracks](https://developers.vfairs.com/apis/session-tracks/getSessionTracks) | Retrieve all session tracks |\n        | `DELETE` | [/v5/sessions/sessionTracks/{id}](https://developers.vfairs.com/apis/session-tracks/deleteSessionTrack) | Delete a session track |\n        | `POST` | [/v5/sessions](https://developers.vfairs.com/apis/sessions/createUpdateSession) | Create or update a session |\n        | `GET` | [/v5/sessions](https://developers.vfairs.com/apis/sessions/getSessions) | Retrieve all sessions |\n        | `DELETE` | [/v5/sessions/{id}](https://developers.vfairs.com/apis/sessions/deleteSession) | Delete a session |\n        | `POST` | [/v5/sessions/sessionHandouts](https://developers.vfairs.com/apis/session-handouts/createUpdateSessionHandout) | Upload or update a session handout |\n        | `GET` | [/v5/sessions/sessionHandouts](https://developers.vfairs.com/apis/session-handouts/getSessionHandouts) | Retrieve all session handouts |\n        | `DELETE` | [/v5/sessions/sessionHandouts/{id}](https://developers.vfairs.com/apis/session-handouts/deleteSessionHandout) | Remove a session handout |\n        | `GET` | [/v5/forms/speakerFields](https://developers.vfairs.com/apis/speakers/getSpeakerFormFields) | Retrieve speaker form fields |\n        | `POST` | [/v5/users/speakers](https://developers.vfairs.com/apis/speakers/createUpdateSpeaker) | Create or update a speaker profile |\n        | `GET` | [/v5/users/speakers](https://developers.vfairs.com/apis/speakers/getSpeakers) | Retrieve all speakers |\n        | `DELETE` | [/v5/users/speakers](https://developers.vfairs.com/apis/speakers/deleteSpeaker) | Remove a speaker profile |\n        | `GET` | [/v5/event/languages](https://developers.vfairs.com/apis/event/getEventLanguages) | Retrieve available event languages |\n        | `GET` | [/v5/event/getEventDetails](https://developers.vfairs.com/apis/event/getEventDetails) | Get detailed event information |\n        | `GET` | [/v5/reports/qrScanAnalytics](https://developers.vfairs.com/apis/reports/getQRScanAnalytics) | Retrieve QR scan analytics |\n        | `GET` | [/v5/reports/userJourneyAnalytics](https://developers.vfairs.com/apis/reports/getUserJourneyAnalytics) | Retrieve user journey analytics |\n        | `POST` | [/v5/booths](https://developers.vfairs.com/apis/booths/upsertbooth) | Create or update a booth |\n        | `GET` | [/v5/booths](https://developers.vfairs.com/apis/booths/getbooths) | Retrieve all booths |\n        | `DELETE` | [/v5/booths](https://developers.vfairs.com/apis/booths/deletebooth) | Remove a booth and optionally its representatives |\n        | `GET` | [/v5/forms/boothRepFields](https://developers.vfairs.com/apis/booth-representatives/getboothrepfields) | Retrieve booth representative form fields |\n        | `POST` | [/v5/users/boothReps](https://developers.vfairs.com/apis/booth-representatives/upsertboothrep) | Create or update a booth representative |\n        | `GET` | [/v5/users/boothReps](https://developers.vfairs.com/apis/booth-representatives/getboothreps) | Retrieve all booth representatives |\n        | `DELETE` | [/v5/users/boothReps/{boothRepId}](https://developers.vfairs.com/apis/booth-representatives/deleteboothrep) | Remove a booth representative |\n        | `POST` | [/v5/floors](https://developers.vfairs.com/apis/floors/upsertfloor) | Create or update a floor |\n        | `GET` | [/v5/floors](https://developers.vfairs.com/apis/floors/getfloors) | Retrieve all floors |\n        | `DELETE` | [/v5/floors/{floorId}](https://developers.vfairs.com/apis/floors/deletefloor) | Remove a floor and all its associated booths |\n        | `POST` | [/v5/booths/documents](https://developers.vfairs.com/apis/booth-documents/upsertdocument) | Create or update a booth document |\n        | `GET` | [/v5/booths/documents](https://developers.vfairs.com/apis/booth-documents/getdocuments) | Retrieve all booth documents |\n        | `DELETE` | [/v5/booths/documents/{documentId}](https://developers.vfairs.com/apis/booth-documents/deletedocument) | Remove a booth document |\n        | `POST` | [/v5/booths/videos](https://developers.vfairs.com/apis/booth-videos/upsertvideo) | Create or update a booth video |\n        | `GET` | [/v5/booths/videos](https://developers.vfairs.com/apis/booth-videos/getvideos) | Retrieve all booth videos |\n        | `DELETE` | [/v5/booths/videos/{videoId}](https://developers.vfairs.com/apis/booth-videos/deletevideo) | Remove a booth video |\n        ---\n\n        ```\n    "
  version: v5
  contact:
    name: Integrations
    email: integrations@vfairs.com
  termsOfService: ''
  x-logo:
    url: 'https://www.vfairs.com/wp-content/themes/vfairs/assets/img/vfairs-logo.svg'
    altText: 'vFairs API Documentation - Logo'
    backgroundColor: ''
servers:
  -
    url: 'https://api.vfairs.com/rest'
    description: US
  -
    url: 'https://api.vfairs.ca/rest'
    description: CA
  -
    url: 'https://api-eu.vfairs.com/rest'
    description: EU
  -
    url: 'https://api-uk.vfairs.com/rest'
    description: UK
  -
    url: 'https://api-ksa.vfairs.com/rest'
    description: KSA
paths:
  /v5/oauth/token:
    post:
      summary: 'Get Access Token'
      operationId: getAccessToken
      description: "Obtain the `app_key` and `app_secret` as described in the [authentication section](#section/Getting-Started/Authentication), and then call the token endpoint to obtain access token. By default, the token has an `expires_in` value of 1440 minutes (24 hours).\n\n            **Token Caching:**\n            - Option 1: vFairs automatically caches the token for 24 hours and uses the cached token for subsequent token endpoint requests.\n            - Option 2: Clients can store the token and its `expires_in` value locally.\n\n            **When the** `expires_in` **value reaches 0**:\n            - For Option 1: No action is required. vFairs will automatically generate and return a new token.\n            - For Option 2: Clients must call the token endpoint again to obtain a new token.\n\n            **Does the access token work for all events?**\n            - No, each event hosted within vFairs has a unique `app_key`. You need to generate a `secret_key` and obtain an access token separately for each event to call the endpoints."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                  token_type: Bearer
                  expires_in: 1440
                properties:
                  access_token:
                    type: string
                    example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                  token_type:
                    type: string
                    example: Bearer
                  expires_in:
                    type: integer
                    example: 1440
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  code: 401
                  message: 'Invalid App key or secret.'
                properties:
                  status:
                    type: boolean
                    example: false
                  code:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: 'Invalid App key or secret.'
        403:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  code: 403
                  message: 'Application is suspended.'
                properties:
                  status:
                    type: boolean
                    example: false
                  code:
                    type: integer
                    example: 403
                  message:
                    type: string
                    example: 'Application is suspended.'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  code: 500
                  message: 'Internal Server Error'
                properties:
                  status:
                    type: boolean
                    example: false
                  code:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'OAuth Access Token'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                app_key:
                  type: string
                  description: 'The event app key.'
                  example: OkPdi5D526sW79xxxxxxxxx
                  nullable: false
                app_secret:
                  type: string
                  description: 'The event secret key.'
                  example: sk-1724238547-5226462-ce059ef4192xxxxxxx
                  nullable: false
                grant_type:
                  type: string
                  description: 'The value of grant_type will always be `client_credentials`.'
                  example: client_credentials
                  nullable: false
                  enum:
                    - client_credentials
              required:
                - app_key
                - app_secret
                - grant_type
      security: []
  /v5/forms/attendeeFields:
    get:
      summary: 'Get Attendee Form Fields'
      operationId: getAttendeeFormFields
      description: 'Retrieves all available registration form fields configured for the event. Use the `slug` values as keys when creating or updating attendees.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'User registration fields fetched.'
                  fields:
                    -
                      id: 1383524
                      title: 'First Name'
                      slug: first_name
                      is_required: true
                      status: true
                      type: text
                    -
                      id: 1383525
                      title: 'Last Name'
                      slug: last_name
                      is_required: true
                      status: true
                      type: text
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'User registration fields fetched.'
                  fields:
                    type: array
                    example:
                      -
                        id: 1383524
                        title: 'First Name'
                        slug: first_name
                        is_required: true
                        status: true
                        type: text
                      -
                        id: 1383525
                        title: 'Last Name'
                        slug: last_name
                        is_required: true
                        status: true
                        type: text
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1383524
                        title:
                          type: string
                          example: 'First Name'
                        slug:
                          type: string
                          example: first_name
                        is_required:
                          type: boolean
                          example: true
                        status:
                          type: boolean
                          example: true
                        type:
                          type: string
                          example: text
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Attendees
  /v5/users/attendees:
    post:
      summary: 'Create/Update Attendee'
      operationId: createUpdateAttendee
      description: 'Creates a new attendee or updates an existing attendee record. Supports group registrations through child users.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Attendee(s) created successfully.'
                  data:
                    id: 12214213
                    external_id: 123213
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Attendee(s) created successfully.'
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 12214213
                      external_id:
                        type: integer
                        example: 123213
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Attendees
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: 'Unique identifier of the attendee. Required when updating an existing attendee record. Set to `0` or omit when creating a new attendee.'
                  example: 0
                  nullable: false
                email:
                  type: string
                  description: 'Email address of the attendee. Must be unique within the event.'
                  example: sample+seeker@vfairs.com
                  nullable: false
                first_name:
                  type: string
                  description: 'First name of the attendee.'
                  example: Sample
                  nullable: false
                last_name:
                  type: string
                  description: 'Last name of the attendee.'
                  example: Seeker
                  nullable: false
                status:
                  type: integer
                  description: 'Activation status of the attendee. Use `1` to activate or `0` to deactivate.'
                  example: 1
                  nullable: false
                child_users:
                  type: array
                  description: 'Array of child attendee objects for group registrations. Each object should contain the same fields as the parent attendee. Use form field `slug` values from the registration fields endpoint as keys.'
                  example: []
                  items:
                    type: string
              required:
                - email
                - first_name
                - last_name
                - status
    get:
      summary: 'Get Attendees'
      operationId: getAttendees
      description: 'Retrieves a paginated list of event attendees with optional filtering and sorting capabilities.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page (max 100).'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page (max 100).'
            example: 50
            nullable: false
        -
          in: query
          name: is_active
          description: 'Filter by attendee status. If `true`, returns active attendees; if `false`, returns inactive attendees.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Filter by attendee status. If `true`, returns active attendees; if `false`, returns inactive attendees.'
            example: true
            nullable: false
        -
          in: query
          name: email
          description: 'Filter by specific email address to retrieve a single attendee.'
          example: dyzyrupesu@mailinator.com
          required: false
          schema:
            type: string
            description: 'Filter by specific email address to retrieve a single attendee.'
            example: dyzyrupesu@mailinator.com
            nullable: false
        -
          in: query
          name: user_id
          description: 'Filter by specific user ID to retrieve a single attendee.'
          example: 630706019
          required: false
          schema:
            type: integer
            description: 'Filter by specific user ID to retrieve a single attendee.'
            example: 630706019
            nullable: false
        -
          in: query
          name: magic_login_link
          description: 'Include magic login link in response. If `true`, generates a passwordless login URL for the attendee.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Include magic login link in response. If `true`, generates a passwordless login URL for the attendee.'
            example: true
            nullable: false
        -
          in: query
          name: payment_details
          description: 'Include payment information in response. If `true`, returns payment status and transaction details.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Include payment information in response. If `true`, returns payment status and transaction details.'
            example: true
            nullable: false
        -
          in: query
          name: order_by_updated_record
          description: 'Sort by last updated date. If `true`, applies descending sort on `updated_at` field.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Sort by last updated date. If `true`, applies descending sort on `updated_at` field.'
            example: true
            nullable: false
        -
          in: query
          name: start_date
          description: 'Start date for filtering attendees. Uses `registered_at` when `order_by_updated_record=false`, otherwise uses `updated_at`. Format: YYYY-MM-DD.'
          example: '2024-11-01'
          required: false
          schema:
            type: string
            description: 'Start date for filtering attendees. Uses `registered_at` when `order_by_updated_record=false`, otherwise uses `updated_at`. Format: YYYY-MM-DD.'
            example: '2024-11-01'
            nullable: false
        -
          in: query
          name: end_date
          description: 'End date for filtering attendees. Uses `registered_at` when `order_by_updated_record=false`, otherwise uses `updated_at`. Format: YYYY-MM-DD.'
          example: '2024-11-10'
          required: false
          schema:
            type: string
            description: 'End date for filtering attendees. Uses `registered_at` when `order_by_updated_record=false`, otherwise uses `updated_at`. Format: YYYY-MM-DD.'
            example: '2024-11-10'
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of attendees.'
                  users:
                    -
                      id: 1234995257
                      original_id: 1234995257
                      username: sam.van.hauwaert@secureics.be
                      first_name: Sam
                      last_name: 'Van Hauwaert'
                      type: 8
                      external_id: null
                      qr_url: 'https://vfairs-api.s3.amazonaws.com/user-qr-codes/vfairs_qr17374721581080332676.jpg'
                      resume: null
                      registered_at: '2025-01-21T15:09:17.000000Z'
                      has_paid: false
                      is_active: true
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 36
                    path: 'http://api.vfairs.com/rest/v5/users/attendees'
                    per_page: 1
                    to: 1
                    total: 36
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of attendees.'
                  users:
                    type: array
                    example:
                      -
                        id: 1234995257
                        original_id: 1234995257
                        username: sam.van.hauwaert@secureics.be
                        first_name: Sam
                        last_name: 'Van Hauwaert'
                        type: 8
                        external_id: null
                        qr_url: 'https://vfairs-api.s3.amazonaws.com/user-qr-codes/vfairs_qr17374721581080332676.jpg'
                        resume: null
                        registered_at: '2025-01-21T15:09:17.000000Z'
                        has_paid: false
                        is_active: true
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1234995257
                        original_id:
                          type: integer
                          example: 1234995257
                        username:
                          type: string
                          example: sam.van.hauwaert@secureics.be
                        first_name:
                          type: string
                          example: Sam
                        last_name:
                          type: string
                          example: 'Van Hauwaert'
                        type:
                          type: integer
                          example: 8
                        external_id:
                          type: string
                          example: null
                        qr_url:
                          type: string
                          example: 'https://vfairs-api.s3.amazonaws.com/user-qr-codes/vfairs_qr17374721581080332676.jpg'
                        resume:
                          type: string
                          example: null
                        registered_at:
                          type: string
                          example: '2025-01-21T15:09:17.000000Z'
                        has_paid:
                          type: boolean
                          example: false
                        is_active:
                          type: boolean
                          example: true
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 36
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/users/attendees'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 36
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Attendees
  '/v5/users/attendees/{attendeeId}/resume':
    post:
      summary: 'Upload Attendee Resume'
      operationId: uploadAttendeeResume
      description: 'Uploads a resume file for a specific attendee.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'successfully, Resume uploaded.'
                  resume: 'https://example.com/uploads/resume_001.pdf'
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'successfully, Resume uploaded.'
                  resume:
                    type: string
                    example: 'https://example.com/uploads/resume_001.pdf'
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Attendees
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                resume:
                  type: string
                  format: binary
                  description: 'The resume file to be uploaded. Accepted file formats: PDF and DOCX. Must be a file. Must not be greater than 5120 kilobytes.'
                  nullable: false
              required:
                - resume
    parameters:
      -
        in: path
        name: attendeeId
        description: 'Unique identifier of the attendee. Must correspond to an existing attendee record.'
        example: 123123
        required: true
        schema:
          type: integer
  '/v5/users/attendees/{attendeeId}/delete':
    delete:
      summary: 'Delete Attendee'
      operationId: deleteAttendee
      description: 'Permanently removes an attendee from the event.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Attendee deleted successfully'
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Attendee deleted successfully'
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Attendees
    parameters:
      -
        in: path
        name: attendeeId
        description: 'Unique identifier of the attendee to delete. Must correspond to an existing attendee record.'
        example: 123123
        required: true
        schema:
          type: integer
  /v5/sessions/sessionTracks:
    post:
      summary: 'Create/Update Session Track'
      operationId: createUpdateSessionTrack
      description: 'Creates a new session track or updates an existing one. For multi-language events, create separate tracks for each language to ensure proper localization.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Track(s) created successfully.'
                  track_id: 123213
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Track(s) created successfully.'
                  track_id:
                    type: integer
                    example: 123213
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Tracks'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                track_id:
                  type: integer
                  description: 'Unique identifier of the session track. Use 0 or null when creating a new track. Required when updating an existing track.'
                  example: 0
                  nullable: false
                name:
                  type: string
                  description: 'Display name of the session track (e.g., "Day 1 Sessions", "Poster Presentations").'
                  example: 'New Session'
                  nullable: false
                language_id:
                  type: integer
                  description: 'Language identifier for the track. Must correspond to an existing event language. See `/v5/event/languages` for available languages.'
                  example: 1
                  nullable: false
                webinar_type:
                  type: string
                  description: 'Type of sessions this track will contain. Determines session behavior and display options.'
                  example: Poster
                  nullable: false
                  enum:
                    - Poster
                    - Session
                parent_id:
                  type: integer
                  description: 'Track ID of the parent track to create a hierarchical relationship. Leave null for top-level tracks.'
                  example: 15
                  nullable: false
                default:
                  type: integer
                  description: 'Default track selection flag. Use 1 to automatically select this track in listings and display its sessions, 0 otherwise.'
                  example: 1
                  nullable: false
                sequence:
                  type: integer
                  description: 'Display order of the track in listings. Lower numbers appear first.'
                  example: 1
                  nullable: false
                active:
                  type: integer
                  description: 'Track status flag. Use 1 to activate the track (visible and functional), 0 to deactivate (hidden from users).'
                  example: 1
                  nullable: false
              required:
                - name
                - language_id
                - webinar_type
    get:
      summary: 'Get Session Tracks'
      operationId: getSessionTracks
      description: 'Retrieves a paginated list of `session tracks` for the event. Supports filtering by `track ID`, `session type`, and `status`.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination results.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination results.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page (max 100).'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page (max 100).'
            example: 50
            nullable: false
        -
          in: query
          name: track_id
          description: 'Unique identifier of a specific `session track` to retrieve. When provided, returns details for that `track` only.'
          example: 19824
          required: false
          schema:
            type: integer
            description: 'Unique identifier of a specific `session track` to retrieve. When provided, returns details for that `track` only.'
            example: 19824
            nullable: false
        -
          in: query
          name: session_type
          description: 'Filter `tracks` by `session type`. Determines the type of `sessions` this `track` can contain.'
          example: Session
          required: false
          schema:
            type: string
            description: 'Filter `tracks` by `session type`. Determines the type of `sessions` this `track` can contain.'
            example: Session
            nullable: false
            enum:
              - Session
              - Poster
        -
          in: query
          name: session_status
          description: 'Filter `tracks` by status. Use "active" for enabled `tracks`, "inactive" for disabled `tracks`, or "all" for both.'
          example: active
          required: false
          schema:
            type: string
            description: 'Filter `tracks` by status. Use "active" for enabled `tracks`, "inactive" for disabled `tracks`, or "all" for both.'
            example: active
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of session tracks.'
                  session_tracks:
                    -
                      track_id: 21629
                      track_name: '18 June'
                      is_active_track: true
                      track_session_type: Session
                      is_default_track: false
                      track_sequence: 1
                      track_language:
                        id: 1
                        name: English
                        prefix: en
                      child_tracks: []
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 5
                    path: 'http://api.vfairs.com/rest/v5/sessions/sessionTracks'
                    per_page: 1
                    to: 1
                    total: 5
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of session tracks.'
                  session_tracks:
                    type: array
                    example:
                      -
                        track_id: 21629
                        track_name: '18 June'
                        is_active_track: true
                        track_session_type: Session
                        is_default_track: false
                        track_sequence: 1
                        track_language:
                          id: 1
                          name: English
                          prefix: en
                        child_tracks: []
                    items:
                      type: object
                      properties:
                        track_id:
                          type: integer
                          example: 21629
                        track_name:
                          type: string
                          example: '18 June'
                        is_active_track:
                          type: boolean
                          example: true
                        track_session_type:
                          type: string
                          example: Session
                        is_default_track:
                          type: boolean
                          example: false
                        track_sequence:
                          type: integer
                          example: 1
                        track_language:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 1
                            name:
                              type: string
                              example: English
                            prefix:
                              type: string
                              example: en
                        child_tracks:
                          type: array
                          example: []
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 5
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/sessions/sessionTracks'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 5
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Forbidden track_id!'
                  errors:
                    track_id:
                      - 'Forbidden track_id!'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Forbidden track_id!'
                  errors:
                    type: object
                    properties:
                      track_id:
                        type: array
                        example:
                          - 'Forbidden track_id!'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Tracks'
  '/v5/sessions/sessionTracks/{id}':
    delete:
      summary: 'Delete Session Track'
      operationId: deleteSessionTrack
      description: 'Permanently removes a session track from the event. This action cannot be undone and will affect any sessions associated with this track.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Track deleted successfully'
                  data:
                    track_id: 31892
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Track deleted successfully'
                  data:
                    type: object
                    properties:
                      track_id:
                        type: integer
                        example: 31892
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Tracks'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the sessionTrack.'
        example: magni
        required: true
        schema:
          type: string
      -
        in: path
        name: sessionTrackId
        description: 'Unique identifier of the session track to delete. Must correspond to an existing track owned by the authenticated user.'
        example: 32637
        required: true
        schema:
          type: integer
  /v5/sessions:
    post:
      summary: 'Create/Update Session'
      operationId: createUpdateSession
      description: 'Creates a new session or updates an existing one. For multi-language events, create separate sessions for each language using different language_id values.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session(s) created successfully.'
                  session_id: 192073
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session(s) created successfully.'
                  session_id:
                    type: integer
                    example: 192073
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_id:
                  type: integer
                  description: 'Unique identifier of the session. Use 0 or null for creating new sessions, or provide existing session_id for updates.'
                  example: 0
                  nullable: false
                title:
                  type: string
                  description: 'Title of the session displayed to attendees.'
                  example: 'How Amadeus Uses a Global Event Mesh to Make Travel Work Better'
                  nullable: false
                mode_of_attendance:
                  type: string
                  description: 'Attendance mode determining how participants can join the session.'
                  example: HYBRID
                  nullable: false
                  enum:
                    - VIRTUAL
                    - ON_SITE
                    - HYBRID
                speaker_ids:
                  type: array
                  description: 'Array of speaker identifiers to associate with this session. Obtain valid speaker IDs from the Get Session Speakers endpoint.'
                  example:
                    - 642234153
                  items:
                    type: string
                is_active:
                  type: string
                  description: 'Session status. Use "1" to activate/publish the session, "0" to deactivate/unpublish.'
                  example: '1'
                  nullable: false
                description:
                  type: string
                  description: 'Detailed description of the session content and objectives.'
                  example: 'Seven years ago, Amadeus embarked on the transformative journey of embracing.'
                  nullable: false
                session_type:
                  type: string
                  description: 'Type of session determining the delivery format and platform requirements.'
                  example: ZOOM
                  nullable: false
                  enum:
                    - PREC
                    - ONDEMAND
                    - ZOOM
                    - Poster
                    - CUSTOM_EMBED
                    - IN_PERSON_WEBINAR
                    - Message_Title
                start_time:
                  type: string
                  description: 'Scheduled start time of the session. Format: YYYY-MM-DD HH:mm:ss.'
                  example: '2024-12-11 00:00:00'
                  nullable: false
                duration:
                  type: string
                  description: 'Total duration of the session. Format: HH:mm:ss.'
                  example: '00:00:00'
                  nullable: false
                tracking_duration:
                  type: string
                  description: 'Duration used for attendance tracking purposes. Should match duration value. Format: HH:mm:ss.'
                  example: '00:00:00'
                  nullable: false
                track_id:
                  type: integer
                  description: 'Unique identifier of the session track. Must correspond to an existing track. Obtain valid track IDs from the Get Session Track endpoint.'
                  example: 30408
                  nullable: false
                language_id:
                  type: integer
                  description: 'Unique identifier of the session language. Must correspond to an existing language. Obtain valid language IDs from the Get Languages endpoint.'
                  example: 1
                  nullable: false
                show_in_agenda:
                  type: integer
                  description: 'Controls session visibility in the event agenda. Use 1 to show, 0 to hide.'
                  example: 0
                  nullable: false
                enable_qa:
                  type: integer
                  description: 'Enables Q&A functionality for the session. Use 1 to enable, 0 to disable.'
                  example: 0
                  nullable: false
                url:
                  type: string
                  description: 'External URL for the session content (e.g., YouTube, Vimeo, Zoom link).'
                  example: 'https://www.youtube.com/watch?v=nP731V0bdmM'
                  nullable: false
                url_ali_baba:
                  type: string
                  description: 'Alternative URL for the session content, typically used for regional access or backup streaming.'
                  example: 'https://example.com/session-backup'
                  nullable: false
                early_join_buffer_in_seconds:
                  type: integer
                  description: 'Buffer time in seconds allowing attendees to join before the scheduled start time. Maximum value: 30000 seconds.'
                  example: 120
                  nullable: false
                customer_webinar_id:
                  type: string
                  description: 'External webinar identifier from third-party systems for integration purposes.'
                  example: '12312'
                  nullable: false
                survey_id:
                  type: integer
                  description: 'Unique identifier of the survey to associate with this session. Must correspond to an existing survey for collecting attendee feedback.'
                  example: 123123
                  nullable: false
                keywords:
                  type: string
                  description: 'Keywords or tags associated with the session for search and categorization purposes.'
                  example: 'technology, innovation, digital transformation'
                  nullable: false
                location_name:
                  type: string
                  description: 'Physical location name for hybrid or in-person sessions.'
                  example: 'Conference Room A'
                  nullable: false
                location_url:
                  type: string
                  description: 'URL providing additional location information or directions.'
                  example: 'https://example.com/venue-map'
                  nullable: false
                poster_thumbnail:
                  type: string
                  description: 'URL of the poster or thumbnail image representing the session.'
                  example: 'https://example.com/session-poster.jpg'
                  nullable: false
              required:
                - title
                - mode_of_attendance
                - speaker_ids
                - is_active
                - description
                - session_type
                - start_time
                - language_id
    get:
      summary: 'Get Sessions'
      operationId: getSessions
      description: 'Retrieves a paginated list of event `sessions` with optional filtering capabilities. Use `session_id` parameter to fetch details for a specific `session`.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 50
            nullable: false
        -
          in: query
          name: session_id
          description: 'Unique identifier of the `session` to filter by. Use this to retrieve a specific `session`.'
          example: 2171860
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the `session` to filter by. Use this to retrieve a specific `session`.'
            example: 2171860
            nullable: false
        -
          in: query
          name: session_type
          description: 'Type of `session` to filter by. Determines the `session` format and delivery method.'
          example: ZOOM
          required: false
          schema:
            type: string
            description: 'Type of `session` to filter by. Determines the `session` format and delivery method.'
            example: ZOOM
            nullable: false
            enum:
              - PREC
              - ONDEMAND
              - ZOOM
              - Poster
              - CUSTOM_EMBED
              - IN_PERSON_WEBINAR
              - Message_Title
        -
          in: query
          name: status
          description: '`Session` status filter. Use "active" for published `sessions`, "inactive" for unpublished, or "ALL" for both.'
          example: active
          required: false
          schema:
            type: string
            description: '`Session` status filter. Use "active" for published `sessions`, "inactive" for unpublished, or "ALL" for both.'
            example: active
            nullable: false
            enum:
              - active
              - inactive
              - ALL
        -
          in: query
          name: mode_of_attendance
          description: 'Attendance mode filter. Determines how attendees can participate in the `session`.'
          example: ALL
          required: false
          schema:
            type: string
            description: 'Attendance mode filter. Determines how attendees can participate in the `session`.'
            example: ALL
            nullable: false
            enum:
              - VIRTUAL
              - ON_SITE
              - HYBRID
              - ALL
        -
          in: query
          name: start_date
          description: 'Start date for filtering `sessions` by creation date. Must be used with `end_date`. Format: YYYY-MM-DD.'
          example: '2024-01-01'
          required: false
          schema:
            type: string
            description: 'Start date for filtering `sessions` by creation date. Must be used with `end_date`. Format: YYYY-MM-DD.'
            example: '2024-01-01'
            nullable: false
        -
          in: query
          name: end_date
          description: 'End date for filtering `sessions` by creation date. Must be used with `start_date`. Format: YYYY-MM-DD.'
          example: '2024-01-10'
          required: false
          schema:
            type: string
            description: 'End date for filtering `sessions` by creation date. Must be used with `start_date`. Format: YYYY-MM-DD.'
            example: '2024-01-10'
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of sessions.'
                  sessions:
                    -
                      session_id: 580384
                      app_id: 8995
                      sequence: 1
                      is_active: 0
                      show_in_agenda: 1
                      enable_qa: 1
                      title: 'Incident Command System for Industrial Control Systems Workshop'
                      description: xyz
                      session_type: ZOOM
                      track_id: 25702
                      start_time: '2024-06-17 08:30:00'
                      tracking_duration: null
                      end_time: '08:00:00'
                      language_id: 1
                      url: ''
                      url_ali_baba: ''
                      early_join_buffer_in_seconds: null
                      customer_webinar_id: ''
                      survey_id: null
                      mode_of_attendance: ON_SITE
                      keywords: ''
                      location_name: 'Savoy Place | Flowers Room'
                      location_url: ''
                      poster_thumbnail: ''
                      handouts:
                        -
                          handout_id: 16181
                          handout_title: 'Security by Design - A Communication Problem?'
                          handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/P5Drei3VP0EVTFvz3PT01JAk84IL79I2cIWjJGXk.pdf'
                      speakers: []
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 39
                    path: 'http://api.vfairs.com/rest/v5/sessions'
                    per_page: 1
                    to: 1
                    total: 39
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of sessions.'
                  sessions:
                    type: array
                    example:
                      -
                        session_id: 580384
                        app_id: 8995
                        sequence: 1
                        is_active: 0
                        show_in_agenda: 1
                        enable_qa: 1
                        title: 'Incident Command System for Industrial Control Systems Workshop'
                        description: xyz
                        session_type: ZOOM
                        track_id: 25702
                        start_time: '2024-06-17 08:30:00'
                        tracking_duration: null
                        end_time: '08:00:00'
                        language_id: 1
                        url: ''
                        url_ali_baba: ''
                        early_join_buffer_in_seconds: null
                        customer_webinar_id: ''
                        survey_id: null
                        mode_of_attendance: ON_SITE
                        keywords: ''
                        location_name: 'Savoy Place | Flowers Room'
                        location_url: ''
                        poster_thumbnail: ''
                        handouts:
                          -
                            handout_id: 16181
                            handout_title: 'Security by Design - A Communication Problem?'
                            handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/P5Drei3VP0EVTFvz3PT01JAk84IL79I2cIWjJGXk.pdf'
                        speakers: []
                    items:
                      type: object
                      properties:
                        session_id:
                          type: integer
                          example: 580384
                        app_id:
                          type: integer
                          example: 8995
                        sequence:
                          type: integer
                          example: 1
                        is_active:
                          type: integer
                          example: 0
                        show_in_agenda:
                          type: integer
                          example: 1
                        enable_qa:
                          type: integer
                          example: 1
                        title:
                          type: string
                          example: 'Incident Command System for Industrial Control Systems Workshop'
                        description:
                          type: string
                          example: xyz
                        session_type:
                          type: string
                          example: ZOOM
                        track_id:
                          type: integer
                          example: 25702
                        start_time:
                          type: string
                          example: '2024-06-17 08:30:00'
                        tracking_duration:
                          type: string
                          example: null
                        end_time:
                          type: string
                          example: '08:00:00'
                        language_id:
                          type: integer
                          example: 1
                        url:
                          type: string
                          example: ''
                        url_ali_baba:
                          type: string
                          example: ''
                        early_join_buffer_in_seconds:
                          type: string
                          example: null
                        customer_webinar_id:
                          type: string
                          example: ''
                        survey_id:
                          type: string
                          example: null
                        mode_of_attendance:
                          type: string
                          example: ON_SITE
                        keywords:
                          type: string
                          example: ''
                        location_name:
                          type: string
                          example: 'Savoy Place | Flowers Room'
                        location_url:
                          type: string
                          example: ''
                        poster_thumbnail:
                          type: string
                          example: ''
                        handouts:
                          type: array
                          example:
                            -
                              handout_id: 16181
                              handout_title: 'Security by Design - A Communication Problem?'
                              handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/P5Drei3VP0EVTFvz3PT01JAk84IL79I2cIWjJGXk.pdf'
                          items:
                            type: object
                            properties:
                              handout_id:
                                type: integer
                                example: 16181
                              handout_title:
                                type: string
                                example: 'Security by Design - A Communication Problem?'
                              handout_link:
                                type: string
                                example: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/P5Drei3VP0EVTFvz3PT01JAk84IL79I2cIWjJGXk.pdf'
                        speakers:
                          type: array
                          example: []
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 39
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/sessions'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 39
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Forbidden session_id!'
                  errors:
                    session_id:
                      - 'Forbidden session_id!'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Forbidden session_id!'
                  errors:
                    type: object
                    properties:
                      session_id:
                        type: array
                        example:
                          - 'Forbidden session_id!'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Sessions
  '/v5/sessions/{id}':
    delete:
      summary: 'Delete Session'
      operationId: deleteSession
      description: 'Permanently removes a session from the event.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session deleted successfully.'
                  session_id: 2222386
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session deleted successfully.'
                  session_id:
                    type: integer
                    example: 2222386
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Sessions
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the session.'
        example: non
        required: true
        schema:
          type: string
      -
        in: path
        name: sessionId
        description: 'Unique identifier of the session to be deleted.'
        example: 2222386
        required: true
        schema:
          type: integer
  /v5/sessions/sessionHandouts:
    post:
      summary: 'Create/Update Session Handout'
      operationId: createUpdateSessionHandout
      description: 'Creates a new session handout or updates an existing one. Use handout_id=0 for new handouts.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Handout(s) created successfully.'
                  handout_id: 12345
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Handout(s) created successfully.'
                  handout_id:
                    type: integer
                    example: 12345
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Handouts'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                handout_id:
                  type: integer
                  description: 'Unique identifier of the handout. Use 0 or omit for creating new handouts.'
                  example: 0
                  nullable: false
                session_id:
                  type: integer
                  description: 'Unique identifier of the session. Must correspond to an existing session. See `/v5/sessions` for valid session IDs.'
                  example: 2171860
                  nullable: false
                handout_link:
                  type: string
                  description: 'File path or URL for the handout document. Accepted formats: PDF and DOCX.'
                  example: path/to/file/resume.pdf
                  nullable: false
                handout_title:
                  type: string
                  description: 'Display title for the handout document.'
                  example: 'Handout Title'
                  nullable: false
              required:
                - session_id
                - handout_link
                - handout_title
    get:
      summary: 'Get Session Handouts'
      operationId: getSessionHandouts
      description: 'Retrieves a paginated list of `session handouts`. Supports filtering by `session` or `handout` ID.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 12
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 12
            nullable: false
        -
          in: query
          name: session_id
          description: 'Unique identifier of the `session`. Must correspond to an existing `session`. See `/v5/sessions` for valid `session` IDs.'
          example: 2178341
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the `session`. Must correspond to an existing `session`. See `/v5/sessions` for valid `session` IDs.'
            example: 2178341
            nullable: false
        -
          in: query
          name: handout_id
          description: 'Unique identifier of the `handout` to filter by.'
          example: 17806
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the `handout` to filter by.'
            example: 17806
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of session handouts.'
                  session_handouts:
                    -
                      session_id: 579720
                      handouts:
                        -
                          handout_id: 15322
                          handout_title: 'See and Secure Every Device and Connection in the Industrial Environments'
                          handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/RS51AXTdG1OBOnMaCnALzAOiSTcPMtVrVTatk05m.pdf'
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of session handouts.'
                  session_handouts:
                    type: array
                    example:
                      -
                        session_id: 579720
                        handouts:
                          -
                            handout_id: 15322
                            handout_title: 'See and Secure Every Device and Connection in the Industrial Environments'
                            handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/RS51AXTdG1OBOnMaCnALzAOiSTcPMtVrVTatk05m.pdf'
                    items:
                      type: object
                      properties:
                        session_id:
                          type: integer
                          example: 579720
                        handouts:
                          type: array
                          example:
                            -
                              handout_id: 15322
                              handout_title: 'See and Secure Every Device and Connection in the Industrial Environments'
                              handout_link: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/RS51AXTdG1OBOnMaCnALzAOiSTcPMtVrVTatk05m.pdf'
                          items:
                            type: object
                            properties:
                              handout_id:
                                type: integer
                                example: 15322
                              handout_title:
                                type: string
                                example: 'See and Secure Every Device and Connection in the Industrial Environments'
                              handout_link:
                                type: string
                                example: 'https://vfairs-core-backend-prod.s3.amazonaws.com/8995/sessions/RS51AXTdG1OBOnMaCnALzAOiSTcPMtVrVTatk05m.pdf'
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Handouts'
  '/v5/sessions/sessionHandouts/{id}':
    delete:
      summary: 'Delete Session Handout'
      operationId: deleteSessionHandout
      description: 'Deletes a session handout by its unique identifier.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Handout deleted successfully.'
                  handout_id: 17806
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Handout deleted successfully.'
                  handout_id:
                    type: integer
                    example: 17806
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Session Handouts'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the sessionHandout.'
        example: perspiciatis
        required: true
        schema:
          type: string
      -
        in: path
        name: sessionHandoutId
        description: 'Unique identifier of the session handout to delete.'
        example: 17806
        required: true
        schema:
          type: integer
  /v5/forms/speakerFields:
    get:
      summary: 'Get Speaker Form Fields'
      operationId: getSpeakerFormFields
      description: 'Retrieves the dynamic form configuration for speaker registration. Returns field definitions including validation rules and data types required for speaker creation.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of session speaker registation fields.'
                  collection:
                    -
                      id: 108905
                      title: 'First Name'
                      slug: first_name
                      is_required: true
                      status: true
                      type: text
                    -
                      id: 108906
                      title: 'Last Name'
                      slug: last_name
                      is_required: true
                      status: true
                      type: text
                    -
                      id: 108907
                      title: Email
                      slug: email
                      is_required: true
                      status: true
                      type: text
                    -
                      id: 108917
                      title: Webinar
                      slug: session_ids
                      is_required: true
                      status: true
                      type: select
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of session speaker registation fields.'
                  collection:
                    type: array
                    example:
                      -
                        id: 108905
                        title: 'First Name'
                        slug: first_name
                        is_required: true
                        status: true
                        type: text
                      -
                        id: 108906
                        title: 'Last Name'
                        slug: last_name
                        is_required: true
                        status: true
                        type: text
                      -
                        id: 108907
                        title: Email
                        slug: email
                        is_required: true
                        status: true
                        type: text
                      -
                        id: 108917
                        title: Webinar
                        slug: session_ids
                        is_required: true
                        status: true
                        type: select
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 108905
                        title:
                          type: string
                          example: 'First Name'
                        slug:
                          type: string
                          example: first_name
                        is_required:
                          type: boolean
                          example: true
                        status:
                          type: boolean
                          example: true
                        type:
                          type: string
                          example: text
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
      tags:
        - Speakers
  /v5/users/speakers:
    post:
      summary: 'Create/Update Speaker'
      operationId: createUpdateSpeaker
      description: 'Creates a new speaker profile or updates an existing one. Supports session associations and dynamic form field mapping based on event configuration.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Speaker(s) created successfully.'
                  speaker_details:
                    session_ids:
                      - 123
                    action_type: skipped_speaker_creation
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Speaker(s) created successfully.'
                  speaker_details:
                    type: object
                    properties:
                      session_ids:
                        type: array
                        example:
                          - 123
                        items:
                          type: integer
                      action_type:
                        type: string
                        example: skipped_speaker_creation
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Speakers
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                speaker_id:
                  type: integer
                  description: 'Unique identifier of the speaker. Use `0` or omit for new speaker creation. Required for updating existing speakers.'
                  example: 0
                  nullable: false
                email:
                  type: string
                  description: 'Email address of the speaker. Required when creating a new speaker (speaker_id is null).'
                  example: QA7@vfairs.com
                  nullable: false
                first_name:
                  type: string
                  description: 'First name of the speaker. Required when creating a new speaker (speaker_id is null).'
                  example: QA
                  nullable: false
                last_name:
                  type: string
                  description: 'Last name of the speaker. Required when creating a new speaker (speaker_id is null).'
                  example: '007'
                  nullable: false
                status:
                  type: integer
                  description: 'Activation status of the speaker. Use `1` to activate or `0` to deactivate.'
                  example: 1
                  nullable: false
                external_id:
                  type: string
                  description: 'External system identifier for the speaker.'
                  example: EXT-123
                  nullable: false
                user_image:
                  type: string
                  description: "CDN URL of the speaker's profile image."
                  example: 'https://cdn.example.com/speaker.jpg'
                  nullable: false
                has_paid:
                  type: integer
                  description: 'Payment status indicator. Use `1` if speaker has paid or `0` if not paid.'
                  example: 1
                  nullable: false
                company_name:
                  type: string
                  description: 'Company or organization name of the speaker.'
                  example: VFairs
                  nullable: false
                bio:
                  type: string
                  description: 'Biography or description of the speaker.'
                  example: 'Experienced technology speaker with 10+ years in the industry.'
                  nullable: false
                session_ids:
                  type: array
                  description: 'Array of session identifiers to associate with the speaker. Each ID must correspond to an existing session. See `/sessions` for available sessions.'
                  example:
                    - 123
                    - 456
                  items:
                    type: string
                skip_speaker_creation:
                  type: boolean
                  description: 'Controls speaker creation behavior. If `true`, only associates existing speaker with sessions without creating a new user record. If `false`, creates speaker as a new user and associates with sessions.'
                  example: true
                  nullable: false
    get:
      summary: 'Get Speakers'
      operationId: getSpeakers
      description: 'Retrieves a paginated list of `speakers` for the event. Supports filtering by `speaker` details and `session` associations.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 12
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 12
            nullable: false
        -
          in: query
          name: speaker_email
          description: 'Email address to filter `speakers` by.'
          example: qa5@gmail.com
          required: false
          schema:
            type: string
            description: 'Email address to filter `speakers` by.'
            example: qa5@gmail.com
            nullable: false
        -
          in: query
          name: speaker_id
          description: 'Unique identifier to filter `speakers` by.'
          example: 123654
          required: false
          schema:
            type: integer
            description: 'Unique identifier to filter `speakers` by.'
            example: 123654
            nullable: false
        -
          in: query
          name: session_id
          description: '`Session` identifier to filter `speakers` by. Must correspond to an existing `session`. See `/sessions` for available `sessions`.'
          example: 52675
          required: false
          schema:
            type: integer
            description: '`Session` identifier to filter `speakers` by. Must correspond to an existing `session`. See `/sessions` for available `sessions`.'
            example: 52675
            nullable: false
        -
          in: query
          name: fetch_session_speakers
          description: 'Controls `speaker` filtering by `session` association. If `true`, returns only `speakers` associated with `sessions`. If `false`, returns all `speakers` regardless of `session` association.'
          example: false
          required: false
          schema:
            type: boolean
            description: 'Controls `speaker` filtering by `session` association. If `true`, returns only `speakers` associated with `sessions`. If `false`, returns all `speakers` regardless of `session` association.'
            example: false
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of session speakers.'
                  speakers:
                    -
                      speaker_id: 644447998
                      name: 'NUM Xyz'
                      email: test20+12@vfairs.com
                      first_name: NUM
                      last_name: Xyz
                      biography: Session
                      company_name: VFairs
                      profile_picture: xx
                      sessions:
                        - 2171861
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 1
                    path: 'http://api.vfairs.com/rest/v5/users/speakers'
                    per_page: 10
                    to: 1
                    total: 1
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of session speakers.'
                  speakers:
                    type: array
                    example:
                      -
                        speaker_id: 644447998
                        name: 'NUM Xyz'
                        email: test20+12@vfairs.com
                        first_name: NUM
                        last_name: Xyz
                        biography: Session
                        company_name: VFairs
                        profile_picture: xx
                        sessions:
                          - 2171861
                    items:
                      type: object
                      properties:
                        speaker_id:
                          type: integer
                          example: 644447998
                        name:
                          type: string
                          example: 'NUM Xyz'
                        email:
                          type: string
                          example: test20+12@vfairs.com
                        first_name:
                          type: string
                          example: NUM
                        last_name:
                          type: string
                          example: Xyz
                        biography:
                          type: string
                          example: Session
                        company_name:
                          type: string
                          example: VFairs
                        profile_picture:
                          type: string
                          example: xx
                        sessions:
                          type: array
                          example:
                            - 2171861
                          items:
                            type: integer
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 1
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/users/speakers'
                      per_page:
                        type: integer
                        example: 10
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 1
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Forbidden speaker_id!'
                  errors:
                    speaker_id:
                      - 'Forbidden speaker_id!'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Forbidden speaker_id!'
                  errors:
                    type: object
                    properties:
                      speaker_id:
                        type: array
                        example:
                          - 'Forbidden speaker_id!'
                        items:
                          type: string
      tags:
        - Speakers
    delete:
      summary: 'Delete Speaker'
      operationId: deleteSpeaker
      description: 'Removes a speaker from sessions or deletes them entirely from the event. Supports targeted removal from specific sessions or complete deletion.'
      parameters:
        -
          in: query
          name: delete_user
          description: 'Deletion behavior control. If `1`, removes speaker from all sessions and deletes user record completely. If `0`, removes speaker from sessions but preserves user record.'
          example: 1
          required: true
          schema:
            type: integer
            description: 'Deletion behavior control. If `1`, removes speaker from all sessions and deletes user record completely. If `0`, removes speaker from sessions but preserves user record.'
            example: 1
            nullable: false
        -
          in: query
          name: email
          description: 'Email address of the speaker to delete. Alternative identifier when speaker_id is not available.'
          example: speaker@gmail.com
          required: false
          schema:
            type: string
            description: 'Email address of the speaker to delete. Alternative identifier when speaker_id is not available.'
            example: speaker@gmail.com
            nullable: false
        -
          in: query
          name: speaker_id
          description: 'Unique identifier of the speaker to delete. Takes precedence over email when both are provided.'
          example: 1212
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the speaker to delete. Takes precedence over email when both are provided.'
            example: 1212
            nullable: false
        -
          in: query
          name: session_id
          description: 'Session identifier for targeted removal. If provided, removes speaker only from this specific session. If omitted, removes speaker from all sessions. Must correspond to an existing session.'
          example: 580561
          required: false
          schema:
            type: integer
            description: 'Session identifier for targeted removal. If provided, removes speaker only from this specific session. If omitted, removes speaker from all sessions. Must correspond to an existing session.'
            example: 580561
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Session Speaker deleted successfully.'
                  data: 1212
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Session Speaker deleted successfully.'
                  data:
                    type: integer
                    example: 1212
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Speakers
  /v5/event/languages:
    get:
      summary: 'Get Event Languages'
      operationId: getEventLanguages
      description: 'Retrieves a paginated list of `languages` available for event localization and multi-language configuration.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination. Defaults to 1 if not provided.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Defaults to 1 if not provided.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page. Defaults to 10 if not provided.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page. Defaults to 10 if not provided.'
            example: 10
            nullable: false
        -
          in: query
          name: event_languages_only
          description: 'Filters `language` results. If `true`, returns only `languages` configured for the specific event. If `false`, returns all available system `languages`. Defaults to `true`.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Filters `language` results. If `true`, returns only `languages` configured for the specific event. If `false`, returns all available system `languages`. Defaults to `true`.'
            example: true
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of all languages.'
                  languages:
                    -
                      id: 1
                      name: English
                      prefix: en
                    -
                      id: 2
                      name: All
                      prefix: all
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 21
                    path: 'http://api.vfairs.com/rest/v5/event/languages'
                    per_page: 2
                    to: 2
                    total: 41
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of all languages.'
                  languages:
                    type: array
                    example:
                      -
                        id: 1
                        name: English
                        prefix: en
                      -
                        id: 2
                        name: All
                        prefix: all
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: English
                        prefix:
                          type: string
                          example: en
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 21
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/event/languages'
                      per_page:
                        type: integer
                        example: 2
                      to:
                        type: integer
                        example: 2
                      total:
                        type: integer
                        example: 41
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Event
  /v5/event/getEventDetails:
    get:
      summary: 'Get Event Details'
      operationId: getEventDetails
      description: 'Retrieves comprehensive details for a specific event including metadata, configuration settings, and status information.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Event details retrieved successfully.'
                  data:
                    id: 12345
                    name: 'Tech Conference 2024'
                    description: 'Annual technology conference featuring industry leaders.'
                    start_date: '2024-03-15T09:00:00Z'
                    end_date: '2024-03-17T18:00:00Z'
                    timezone: UTC
                    status: active
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Event details retrieved successfully.'
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 12345
                      name:
                        type: string
                        example: 'Tech Conference 2024'
                      description:
                        type: string
                        example: 'Annual technology conference featuring industry leaders.'
                      start_date:
                        type: string
                        example: '2024-03-15T09:00:00Z'
                      end_date:
                        type: string
                        example: '2024-03-17T18:00:00Z'
                      timezone:
                        type: string
                        example: UTC
                      status:
                        type: string
                        example: active
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Event not found'
                properties:
                  message:
                    type: string
                    example: 'Event not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Event
  /v5/reports/qrScanAnalytics:
    get:
      summary: 'Get QR Scan Analytics'
      operationId: getQRScanAnalytics
      description: 'Retrieves paginated `QR scan analytics` data showing who scanned whom and when during the event.'
      parameters:
        -
          in: query
          name: registration_fields
          description: 'Comma-separated list of `registration field` IDs to include in the report. Used to filter which user registration data fields are returned.'
          example: '1,2,3'
          required: false
          schema:
            type: string
            description: 'Comma-separated list of `registration field` IDs to include in the report. Used to filter which user registration data fields are returned.'
            example: '1,2,3'
            nullable: false
        -
          in: query
          name: user_type
          description: 'Filter results by `user type`. Must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin.'
          example: Attendee
          required: false
          schema:
            type: string
            description: 'Filter results by `user type`. Must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin.'
            example: Attendee
            nullable: false
        -
          in: query
          name: start_date
          description: 'Start date for filtering scan records. Must be in Y-m-d format.'
          example: '2024-01-01'
          required: false
          schema:
            type: string
            description: 'Start date for filtering scan records. Must be in Y-m-d format.'
            example: '2024-01-01'
            nullable: false
        -
          in: query
          name: end_date
          description: 'End date for filtering scan records. Must be in Y-m-d format.'
          example: '2024-12-31'
          required: false
          schema:
            type: string
            description: 'End date for filtering scan records. Must be in Y-m-d format.'
            example: '2024-12-31'
            nullable: false
        -
          in: query
          name: scanned_user_id
          description: 'Filter by the ID of the `user` whose `QR code` was scanned. Use this to see all scans of a specific `user`.'
          example: 1234910710
          required: false
          schema:
            type: integer
            description: 'Filter by the ID of the `user` whose `QR code` was scanned. Use this to see all scans of a specific `user`.'
            example: 1234910710
            nullable: false
        -
          in: query
          name: scanned_by_user_id
          description: 'Filter by the ID of the `user` who performed the scan. Use this to see all scans performed by a specific `user`.'
          example: 1234910702
          required: false
          schema:
            type: integer
            description: 'Filter by the ID of the `user` who performed the scan. Use this to see all scans performed by a specific `user`.'
            example: 1234910702
            nullable: false
        -
          in: query
          name: sort_by_scanned_at
          description: 'Sort order for scan timestamp. Use 0 for ascending (oldest first) or 1 for descending (newest first).'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Sort order for scan timestamp. Use 0 for ascending (oldest first) or 1 for descending (newest first).'
            example: 1
            nullable: false
        -
          in: query
          name: page
          description: 'Page number for pagination. Starts from 1.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Starts from 1.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page. Maximum recommended value is 100.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page. Maximum recommended value is 100.'
            example: 10
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'QR Scan Analytics Report retrieved successfully'
                  qr_scan_analytics:
                    -
                      event_id: 1234
                      event_url: myevent.vfairs.com
                      scan_id: 1121
                      scanned_time: '01:52 PM'
                      scanned_qr_url: ''
                      scanned_user_id: 1234910710
                      scanned_first_name: Driscoll
                      scanned_last_name: Meyers
                      scanned_email: xyz@vfairs.com
                      scanned_user_notes: null
                      scanned_user_type: Visitor
                      scanned_by_user_id: 1234910702
                      scanned_by_first_name: Ralph
                      scanned_by_last_name: Paul
                      scanned_by_email: xya1@vfairs.com
                      scanned_by_user_notes: ''
                      scanned_by_user_type: Visitor
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 9276
                    path: 'http://api.vfairs.com/rest/v5/reports/qrScanAnalytics'
                    per_page: 1
                    to: 1
                    total: 9276
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'QR Scan Analytics Report retrieved successfully'
                  qr_scan_analytics:
                    type: array
                    example:
                      -
                        event_id: 1234
                        event_url: myevent.vfairs.com
                        scan_id: 1121
                        scanned_time: '01:52 PM'
                        scanned_qr_url: ''
                        scanned_user_id: 1234910710
                        scanned_first_name: Driscoll
                        scanned_last_name: Meyers
                        scanned_email: xyz@vfairs.com
                        scanned_user_notes: null
                        scanned_user_type: Visitor
                        scanned_by_user_id: 1234910702
                        scanned_by_first_name: Ralph
                        scanned_by_last_name: Paul
                        scanned_by_email: xya1@vfairs.com
                        scanned_by_user_notes: ''
                        scanned_by_user_type: Visitor
                    items:
                      type: object
                      properties:
                        event_id:
                          type: integer
                          example: 1234
                        event_url:
                          type: string
                          example: myevent.vfairs.com
                        scan_id:
                          type: integer
                          example: 1121
                        scanned_time:
                          type: string
                          example: '01:52 PM'
                        scanned_qr_url:
                          type: string
                          example: ''
                        scanned_user_id:
                          type: integer
                          example: 1234910710
                        scanned_first_name:
                          type: string
                          example: Driscoll
                        scanned_last_name:
                          type: string
                          example: Meyers
                        scanned_email:
                          type: string
                          example: xyz@vfairs.com
                        scanned_user_notes:
                          type: string
                          example: null
                        scanned_user_type:
                          type: string
                          example: Visitor
                        scanned_by_user_id:
                          type: integer
                          example: 1234910702
                        scanned_by_first_name:
                          type: string
                          example: Ralph
                        scanned_by_last_name:
                          type: string
                          example: Paul
                        scanned_by_email:
                          type: string
                          example: xya1@vfairs.com
                        scanned_by_user_notes:
                          type: string
                          example: ''
                        scanned_by_user_type:
                          type: string
                          example: Visitor
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 9276
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/reports/qrScanAnalytics'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 9276
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'User type must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin'
                  errors:
                    user_type:
                      - 'User type must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'User type must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin'
                  errors:
                    type: object
                    properties:
                      user_type:
                        type: array
                        example:
                          - 'User type must be one of: ALL, Attendee, Admin, Event Owner, Booth Admin'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Reports
  /v5/reports/userJourneyAnalytics:
    get:
      summary: 'Get User Journey Analytics'
      operationId: getUserJourneyAnalytics
      description: 'Retrieves detailed user journey analytics showing user interactions, page visits, and engagement patterns throughout the event.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination results.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination results.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 50
            nullable: false
        -
          in: query
          name: user_id
          description: 'Unique identifier of a specific user to track. Must correspond to an existing event user. Required if `email` is not provided.'
          example: 12345
          required: false
          schema:
            type: integer
            description: 'Unique identifier of a specific user to track. Must correspond to an existing event user. Required if `email` is not provided.'
            example: 12345
            nullable: false
        -
          in: query
          name: email
          description: 'Email address of the user to track. Must correspond to an existing event user. Required if `user_id` is not provided.'
          example: john.doe@example.com
          required: false
          schema:
            type: string
            description: 'Email address of the user to track. Must correspond to an existing event user. Required if `user_id` is not provided.'
            example: john.doe@example.com
            nullable: false
        -
          in: query
          name: start_date
          description: 'Start date for filtering user journey data. Format: YYYY-MM-DD.'
          example: '2024-01-01'
          required: false
          schema:
            type: string
            description: 'Start date for filtering user journey data. Format: YYYY-MM-DD.'
            example: '2024-01-01'
            nullable: false
        -
          in: query
          name: end_date
          description: 'End date for filtering user journey data. Format: YYYY-MM-DD.'
          example: '2024-01-31'
          required: false
          schema:
            type: string
            description: 'End date for filtering user journey data. Format: YYYY-MM-DD.'
            example: '2024-01-31'
            nullable: false
        -
          in: query
          name: show_only_live
          description: 'Filter to show only live activities. Use 1 to show only live activities, 0 to show all activities.'
          example: 0
          required: false
          schema:
            type: integer
            description: 'Filter to show only live activities. Use 1 to show only live activities, 0 to show all activities.'
            example: 0
            nullable: false
            enum:
              - 0
              - 1
        -
          in: query
          name: activity_types
          description: 'Comma-separated list of activity types to filter by. Available types: NAVIGATION, CHAT, SCAVENGER_HUNT, WEBINAR, VIDEO, BOOTH_VISIT, BOOTH_LINK_CLICK, DOCUMENT, SWAG_BAG, LOGIN, CMS_PAGE, BOOTH_BANNER. Use "ALL" to include all activity types.'
          example: 'LOGIN,WEBINAR,BOOTH_VISIT'
          required: false
          schema:
            type: string
            description: 'Comma-separated list of activity types to filter by. Available types: NAVIGATION, CHAT, SCAVENGER_HUNT, WEBINAR, VIDEO, BOOTH_VISIT, BOOTH_LINK_CLICK, DOCUMENT, SWAG_BAG, LOGIN, CMS_PAGE, BOOTH_BANNER. Use "ALL" to include all activity types.'
            example: 'LOGIN,WEBINAR,BOOTH_VISIT'
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'User journey analytics fetched successfully.'
                  user_journey_analytics:
                    -
                      user_id: 12345
                      user_name: 'John Doe'
                      user_email: john.doe@example.com
                      journey_events:
                        -
                          event_type: login
                          timestamp: '2024-01-15 09:30:00'
                          location: lobby
                        -
                          event_type: session_join
                          timestamp: '2024-01-15 10:00:00'
                          location: auditorium_1
                          session_name: 'Opening Keynote'
                      total_engagement_time: 3600
                      pages_visited: 15
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'User journey analytics fetched successfully.'
                  user_journey_analytics:
                    type: array
                    example:
                      -
                        user_id: 12345
                        user_name: 'John Doe'
                        user_email: john.doe@example.com
                        journey_events:
                          -
                            event_type: login
                            timestamp: '2024-01-15 09:30:00'
                            location: lobby
                          -
                            event_type: session_join
                            timestamp: '2024-01-15 10:00:00'
                            location: auditorium_1
                            session_name: 'Opening Keynote'
                        total_engagement_time: 3600
                        pages_visited: 15
                    items:
                      type: object
                      properties:
                        user_id:
                          type: integer
                          example: 12345
                        user_name:
                          type: string
                          example: 'John Doe'
                        user_email:
                          type: string
                          example: john.doe@example.com
                        journey_events:
                          type: array
                          example:
                            -
                              event_type: login
                              timestamp: '2024-01-15 09:30:00'
                              location: lobby
                            -
                              event_type: session_join
                              timestamp: '2024-01-15 10:00:00'
                              location: auditorium_1
                              session_name: 'Opening Keynote'
                          items:
                            type: object
                            properties:
                              event_type:
                                type: string
                                example: login
                              timestamp:
                                type: string
                                example: '2024-01-15 09:30:00'
                              location:
                                type: string
                                example: lobby
                        total_engagement_time:
                          type: integer
                          example: 3600
                        pages_visited:
                          type: integer
                          example: 15
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - Reports
  /v5/rabbitMQ/publishQueue:
    post:
      summary: ''
      operationId: postV5RabbitMQPublishQueue
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                queue:
                  type: string
                  description: ''
                  example: quaerat
                  nullable: false
                domain:
                  type: string
                  description: ''
                  example: quo
                  nullable: false
                region:
                  type: string
                  description: ''
                  example: autem
                  nullable: false
                type:
                  type: string
                  description: ''
                  example: ullam
                  nullable: false
              required:
                - queue
                - domain
                - region
                - type
  '/v5/organizations/{organizationId}/groups':
    get:
      summary: ''
      operationId: getV5OrganizationsOrganizationIdGroups
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/organizations/saepe/groups could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/organizations/saepe/groups could not be found.'
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: saepe
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/assets/{id}':
    post:
      summary: ''
      operationId: postV5OrganizationsOrganizationIdAssetsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: sunt
        required: true
        schema:
          type: string
      -
        in: path
        name: id
        description: 'The ID of the asset.'
        example: doloribus
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/assets/{id}/download':
    get:
      summary: ''
      operationId: getV5OrganizationsOrganizationIdAssetsIdDownload
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/organizations/aliquid/assets/eum/download could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/organizations/aliquid/assets/eum/download could not be found.'
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: aliquid
        required: true
        schema:
          type: string
      -
        in: path
        name: id
        description: 'The ID of the asset.'
        example: eum
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/assets':
    get:
      summary: ''
      operationId: getV5OrganizationsOrganizationIdAssets
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/organizations/ducimus/assets could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/organizations/ducimus/assets could not be found.'
      tags:
        - ''
    post:
      summary: ''
      operationId: postV5OrganizationsOrganizationIdAssets
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: ducimus
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/assets/{asset}':
    get:
      summary: ''
      operationId: getV5OrganizationsOrganizationIdAssetsAsset
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/organizations/illum/assets/itaque could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/organizations/illum/assets/itaque could not be found.'
      tags:
        - ''
    put:
      summary: ''
      operationId: putV5OrganizationsOrganizationIdAssetsAsset
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    delete:
      summary: ''
      operationId: deleteV5OrganizationsOrganizationIdAssetsAsset
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: illum
        required: true
        schema:
          type: string
      -
        in: path
        name: asset
        description: 'The asset.'
        example: itaque
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/tags/{id}':
    post:
      summary: ''
      operationId: postV5OrganizationsOrganizationIdTagsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: qui
        required: true
        schema:
          type: string
      -
        in: path
        name: id
        description: 'The ID of the tag.'
        example: est
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/tags':
    get:
      summary: ''
      operationId: getV5OrganizationsOrganizationIdTags
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/organizations/excepturi/tags could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/organizations/excepturi/tags could not be found.'
      tags:
        - ''
    post:
      summary: ''
      operationId: postV5OrganizationsOrganizationIdTags
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: excepturi
        required: true
        schema:
          type: string
  '/v5/organizations/{organizationId}/tags/{tag}':
    put:
      summary: ''
      operationId: putV5OrganizationsOrganizationIdTagsTag
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    delete:
      summary: ''
      operationId: deleteV5OrganizationsOrganizationIdTagsTag
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: organizationId
        description: ''
        example: nihil
        required: true
        schema:
          type: string
      -
        in: path
        name: tag
        description: 'The tag.'
        example: enim
        required: true
        schema:
          type: string
  /v5/packages/validate-package-quantities-by-user-id:
    get:
      summary: ''
      operationId: getV5PackagesValidatePackageQuantitiesByUserId
      description: ''
      parameters: []
      responses:
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The route rest/v5/packages/validate-package-quantities-by-user-id could not be found.'
                properties:
                  message:
                    type: string
                    example: 'The route rest/v5/packages/validate-package-quantities-by-user-id could not be found.'
      tags:
        - ''
  /v5/packages/checkAvailability:
    post:
      summary: 'check availability of sent packages'
      operationId: checkAvailabilityOfSentPackages
      description: "Validates the request data and retrieves the availability information of packages.\nIf validation fails, returns a JSON response with error details.\nHandles exceptions and returns an appropriate response."
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/packages/get-addon-and-package-count:
    post:
      summary: ''
      operationId: postV5PackagesGetAddonAndPackageCount
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/packages/increment-addon-and-package-quantity:
    post:
      summary: ''
      operationId: postV5PackagesIncrementAddonAndPackageQuantity
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/packages/decrement-addon-and-package-quantity:
    post:
      summary: ''
      operationId: postV5PackagesDecrementAddonAndPackageQuantity
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/packages/check-addon-and-package-availability:
    post:
      summary: ''
      operationId: postV5PackagesCheckAddonAndPackageAvailability
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/appMarketplace/integrationApps:
    post:
      summary: ''
      operationId: postV5AppMarketplaceIntegrationApps
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  '/v5/appMarketplace/integrationApps/{slug}/delete':
    delete:
      summary: ''
      operationId: deleteV5AppMarketplaceIntegrationAppsSlugDelete
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the integrationApp.'
        example: sit
        required: true
        schema:
          type: string
  /v5/payment/perform-authorize-payment-actions:
    post:
      summary: 'Perform Authorize Payment Actions'
      operationId: performAuthorizePaymentActions
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: 'Must be a valid URL.'
                  example: 'http://lubowitz.com/voluptatem-sunt-sint-expedita-hic-hic-minus-reiciendis'
                  nullable: false
                obj:
                  type: string
                  description: ''
                  example: iure
                  nullable: false
                app_id:
                  type: string
                  description: ''
                  example: neque
                  nullable: false
              required:
                - url
                - obj
                - app_id
  /v5/webhooks/push:
    post:
      summary: ''
      operationId: postV5WebhooksPush
      description: ''
      parameters: []
      responses: {  }
      tags:
        - ''
  /v5/booths/documents:
    get:
      summary: 'Get Booth Documents'
      operationId: getBoothDocuments
      description: 'Retrieves a paginated list of booth documents from the event with optional filtering capabilities.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 50
            nullable: false
        -
          in: query
          name: document_id
          description: 'Unique identifier of the `document` to filter by.'
          example: doc_123
          required: false
          schema:
            type: string
            description: 'Unique identifier of the `document` to filter by.'
            example: doc_123
            nullable: false
        -
          in: query
          name: title
          description: '`Document` title to filter by (partial match supported).'
          example: 'Sample Document'
          required: false
          schema:
            type: string
            description: '`Document` title to filter by (partial match supported).'
            example: 'Sample Document'
            nullable: false
        -
          in: query
          name: booths
          description: 'Array of `booth` IDs to filter documents by. Must correspond to existing `booths` within the event.'
          example:
            - 292638
            - 292639
          required: false
          schema:
            type: array
            description: 'Array of `booth` IDs to filter documents by. Must correspond to existing `booths` within the event.'
            example:
              - 292638
              - 292639
            items:
              type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of documents.'
                  documents:
                    -
                      document_id: doc_123
                      title: 'Sample Document'
                      description: 'Detailed document description...'
                      document_url: 'https://example.com/doc.pdf'
                      booths:
                        - 292638
                        - 292639
                      add_to_briefcase_default: 1
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 5
                    path: 'http://api.vfairs.com/rest/v5/booths/documents'
                    per_page: 1
                    to: 1
                    total: 5
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of documents.'
                  documents:
                    type: array
                    example:
                      -
                        document_id: doc_123
                        title: 'Sample Document'
                        description: 'Detailed document description...'
                        document_url: 'https://example.com/doc.pdf'
                        booths:
                          - 292638
                          - 292639
                        add_to_briefcase_default: 1
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          example: doc_123
                        title:
                          type: string
                          example: 'Sample Document'
                        description:
                          type: string
                          example: 'Detailed document description...'
                        document_url:
                          type: string
                          example: 'https://example.com/doc.pdf'
                        booths:
                          type: array
                          example:
                            - 292638
                            - 292639
                          items:
                            type: integer
                        add_to_briefcase_default:
                          type: integer
                          example: 1
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 5
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/booths/documents'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 5
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Documents'
    post:
      summary: 'Create/Update Booth Document'
      operationId: createUpdateBoothDocument
      description: 'Creates a new booth document or updates an existing one. Include document_id to update, omit to create new.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Document created successfully.'
                  document_id: doc_123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Document created successfully.'
                  document_id:
                    type: string
                    example: doc_123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Validation failed'
                properties:
                  message:
                    type: string
                    example: 'Validation failed'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Documents'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                document_id:
                  type: string
                  description: 'Unique identifier of the document. Required when updating an existing document, omit or set to null when creating a new document.'
                  example: doc_123
                  nullable: false
                document:
                  type: string
                  format: binary
                  description: 'Document file to upload. Supported formats: pdf, doc, docx, xls, xlsx, ppt, pptx.'
                  nullable: false
                title:
                  type: string
                  description: 'Title of the document that will be displayed to booth visitors.'
                  example: 'Product Brochure'
                  nullable: false
                description:
                  type: string
                  description: 'Detailed description of the document content (minimum 200 characters required).'
                  example: 'Detailed product information and specifications including technical details, pricing, and availability information for our latest product line.'
                  nullable: false
                booths:
                  type: array
                  description: 'Array of booth IDs where this document should be available. Must correspond to existing booths within the event.'
                  example:
                    - 292638
                    - 292639
                  items:
                    type: string
                add_to_briefcase_default:
                  type: integer
                  description: 'Whether to automatically add document to visitor briefcases. Use 1 to add by default, 0 to require manual addition.'
                  example: 1
                  nullable: false
              required:
                - document
                - title
                - description
                - booths
                - add_to_briefcase_default
  '/v5/booths/documents/{documentId}':
    delete:
      summary: 'Delete Booth Document'
      operationId: deleteBoothDocument
      description: 'Permanently deletes a booth document by its unique identifier.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Document deleted successfully.'
                  document_id: doc_123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Document deleted successfully.'
                  document_id:
                    type: string
                    example: doc_123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Not Found'
                  message: 'Resource not found'
                properties:
                  error:
                    type: string
                    example: 'Not Found'
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Documents'
    parameters:
      -
        in: path
        name: documentId
        description: 'Unique identifier of the document to delete. Must correspond to an existing document.'
        example: doc_123
        required: true
        schema:
          type: string
  /v5/forms/boothRepFields:
    get:
      summary: 'Get Registration Fields'
      operationId: getRegistrationFields
      description: 'Retrieves the available registration fields configuration for booth representatives.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Registration fields fetched successfully.'
                  fields: []
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Registration fields fetched successfully.'
                  fields:
                    type: array
                    example: []
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Representatives'
  /v5/users/boothReps:
    post:
      summary: 'Create/Update Booth Representative'
      operationId: createUpdateBoothRepresentative
      description: 'Creates a new booth representative or updates an existing one based on whether user_id is provided.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booth representative created/updated successfully.'
                  booth_rep_id: 123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booth representative created/updated successfully.'
                  booth_rep_id:
                    type: integer
                    example: 123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Representatives'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user_id:
                  type: integer
                  description: 'Unique identifier of the booth representative. Required when updating an existing representative. If provided, the representative will be updated; if omitted, a new representative will be created.'
                  example: 123
                  nullable: false
                first_name:
                  type: string
                  description: 'First name of the booth representative.'
                  example: John
                  nullable: false
                last_name:
                  type: string
                  description: 'Last name of the booth representative.'
                  example: Doe
                  nullable: false
                email:
                  type: string
                  description: 'Email address of the booth representative. Must be a valid email format.'
                  example: john.doe@example.com
                  nullable: false
                booth_id:
                  type: integer
                  description: 'Unique identifier of the booth to assign the representative to. Must correspond to an existing booth.'
                  example: 456
                  nullable: false
              required:
                - first_name
                - last_name
                - email
                - booth_id
    get:
      summary: 'Get Booth Representatives'
      operationId: getBoothRepresentatives
      description: 'Retrieves a paginated list of booth representatives with optional filtering by `booth`.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination. Defaults to 1 if not specified.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Defaults to 1 if not specified.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page. Defaults to 10 if not specified.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page. Defaults to 10 if not specified.'
            example: 10
            nullable: false
        -
          in: query
          name: booth_id
          description: 'Unique identifier of the `booth`. Filters results to show only representatives assigned to this specific `booth`. Must correspond to an existing `booth`.'
          example: 123
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the `booth`. Filters results to show only representatives assigned to this specific `booth`. Must correspond to an existing `booth`.'
            example: 123
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booth representatives fetched successfully.'
                  booth_reps:
                    -
                      user_id: 123
                      first_name: John
                      last_name: Doe
                      email: john.doe@example.com
                      booth_id: 456
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 5
                    path: 'http://api.vfairs.com/rest/v5/booths/reps'
                    per_page: 1
                    to: 1
                    total: 5
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booth representatives fetched successfully.'
                  booth_reps:
                    type: array
                    example:
                      -
                        user_id: 123
                        first_name: John
                        last_name: Doe
                        email: john.doe@example.com
                        booth_id: 456
                    items:
                      type: object
                      properties:
                        user_id:
                          type: integer
                          example: 123
                        first_name:
                          type: string
                          example: John
                        last_name:
                          type: string
                          example: Doe
                        email:
                          type: string
                          example: john.doe@example.com
                        booth_id:
                          type: integer
                          example: 456
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 5
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/booths/reps'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 5
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Representatives'
  '/v5/users/boothReps/{boothRepId}':
    delete:
      summary: 'Delete Booth Representative'
      operationId: deleteBoothRepresentative
      description: 'Removes a booth representative from the system permanently.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booth representative deleted successfully.'
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booth representative deleted successfully.'
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Resource not found'
                properties:
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Representatives'
    parameters:
      -
        in: path
        name: boothRepId
        description: 'Unique identifier of the booth representative to delete. Must correspond to an existing booth representative.'
        example: 123
        required: true
        schema:
          type: integer
  /v5/booths/videos:
    get:
      summary: 'Get Booth Videos'
      operationId: getBoothVideos
      description: 'Retrieves a paginated list of booth videos for the event.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of records to return per page.'
          example: 50
          required: false
          schema:
            type: integer
            description: 'Number of records to return per page.'
            example: 50
            nullable: false
        -
          in: query
          name: video_id
          description: 'Unique identifier of the `video` to filter by.'
          example: vid_123
          required: false
          schema:
            type: string
            description: 'Unique identifier of the `video` to filter by.'
            example: vid_123
            nullable: false
        -
          in: query
          name: title
          description: '`Video` title to filter by (partial match supported).'
          example: 'Product Demo'
          required: false
          schema:
            type: string
            description: '`Video` title to filter by (partial match supported).'
            example: 'Product Demo'
            nullable: false
        -
          in: query
          name: booths
          description: 'Array of `booth` IDs to filter videos by. Must correspond to existing `booths`.'
          example:
            - 292638
            - 292639
          required: false
          schema:
            type: array
            description: 'Array of `booth` IDs to filter videos by. Must correspond to existing `booths`.'
            example:
              - 292638
              - 292639
            items:
              type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Successful retrieval of videos.'
                  videos:
                    -
                      video_id: vid_123
                      title: 'Product Demo'
                      description: 'Detailed product demonstration video...'
                      video_url: 'https://example.com/video.mp4'
                      thumbnail: 'https://example.com/thumbnail.jpg'
                      booths:
                        - 292638
                        - 292639
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 5
                    path: 'http://api.vfairs.com/rest/v5/booths/videos'
                    per_page: 1
                    to: 1
                    total: 5
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Successful retrieval of videos.'
                  videos:
                    type: array
                    example:
                      -
                        video_id: vid_123
                        title: 'Product Demo'
                        description: 'Detailed product demonstration video...'
                        video_url: 'https://example.com/video.mp4'
                        thumbnail: 'https://example.com/thumbnail.jpg'
                        booths:
                          - 292638
                          - 292639
                    items:
                      type: object
                      properties:
                        video_id:
                          type: string
                          example: vid_123
                        title:
                          type: string
                          example: 'Product Demo'
                        description:
                          type: string
                          example: 'Detailed product demonstration video...'
                        video_url:
                          type: string
                          example: 'https://example.com/video.mp4'
                        thumbnail:
                          type: string
                          example: 'https://example.com/thumbnail.jpg'
                        booths:
                          type: array
                          example:
                            - 292638
                            - 292639
                          items:
                            type: integer
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 5
                      path:
                        type: string
                        example: 'http://api.vfairs.com/rest/v5/booths/videos'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 5
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Videos'
    post:
      summary: 'Create/Update Booth Video'
      operationId: createUpdateBoothVideo
      description: 'Creates a new booth video or updates an existing one.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Video created successfully.'
                  video_id: vid_123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Video created successfully.'
                  video_id:
                    type: string
                    example: vid_123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Validation failed'
                  errors:
                    title:
                      - 'The title field is required.'
                properties:
                  message:
                    type: string
                    example: 'Validation failed'
                  errors:
                    type: object
                    properties:
                      title:
                        type: array
                        example:
                          - 'The title field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Videos'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                video_id:
                  type: string
                  description: 'Unique identifier of the video. If provided, updates existing video; if null or omitted, creates new video.'
                  example: vid_123
                  nullable: false
                video:
                  type: string
                  format: binary
                  description: 'Video file to upload. Supported formats: mp4, mov, wmv, avi, flv. Maximum file size varies by plan.'
                  nullable: false
                thumbnail:
                  type: string
                  format: binary
                  description: 'Thumbnail image for the video. Supported formats: png, jpeg, jpg. Recommended dimensions: 1280x720px.'
                  nullable: false
                title:
                  type: string
                  description: 'Title of the video. Will be displayed to booth visitors.'
                  example: 'Product Demo Video'
                  nullable: false
                description:
                  type: string
                  description: 'Description of the video content. Minimum 200 characters required.'
                  example: 'Detailed product demonstration showing all features and benefits of our latest innovation...'
                  nullable: false
                booths:
                  type: array
                  description: 'Array of booth IDs where this video should be available. Must correspond to existing booths that the user has access to.'
                  example:
                    - 292638
                    - 292639
                  items:
                    type: string
              required:
                - video
                - thumbnail
                - title
                - description
                - booths
  '/v5/booths/videos/{videoId}':
    delete:
      summary: 'Delete Booth Video'
      operationId: deleteBoothVideo
      description: 'Deletes a booth video by its unique identifier.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Video deleted successfully.'
                  video_id: vid_123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Video deleted successfully.'
                  video_id:
                    type: string
                    example: vid_123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token is Expired'
                properties:
                  message:
                    type: string
                    example: 'Token is Expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: 'Not Found'
                  message: 'Resource not found'
                properties:
                  error:
                    type: string
                    example: 'Not Found'
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Internal Server Error'
                properties:
                  message:
                    type: string
                    example: 'Internal Server Error'
      tags:
        - 'Booth Videos'
    parameters:
      -
        in: path
        name: videoId
        description: 'Unique identifier of the video to delete. Must correspond to an existing video that the user has permission to delete.'
        example: vid_123
        required: true
        schema:
          type: string
  /v5/booths:
    get:
      summary: 'Get Booths'
      operationId: getBooths
      description: 'Retrieves a paginated list of exhibition booths with optional filtering capabilities.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination results.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination results.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of booth records to return per page (default: 10).'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of booth records to return per page (default: 10).'
            example: 10
            nullable: false
        -
          in: query
          name: floor_id
          description: 'Unique identifier of the `floor` to filter booths. Must correspond to an existing `floor` within the event.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the `floor` to filter booths. Must correspond to an existing `floor` within the event.'
            example: 1
            nullable: false
        -
          in: query
          name: booth_id
          description: 'Unique identifier of a specific `booth` to retrieve.'
          example: 123
          required: false
          schema:
            type: integer
            description: 'Unique identifier of a specific `booth` to retrieve.'
            example: 123
            nullable: false
        -
          in: query
          name: active
          description: 'Filter booths by active status. When `true`, returns only active booths; when `false`, returns only inactive booths.'
          example: true
          required: false
          schema:
            type: boolean
            description: 'Filter booths by active status. When `true`, returns only active booths; when `false`, returns only inactive booths.'
            example: true
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booths fetched successfully.'
                  booths:
                    -
                      booth_id: 292638
                      booth_name: 'Booth B'
                      booth_company_profile: 'Test Description'
                      booth_company_url: ''
                      booth_type: Both
                      keywords: ''
                      booth_external_id: null
                      active: 1
                      hide: 0
                      floor_id: 16990
                      address: ''
                      country: null
                      state: ''
                      city: ''
                      pobox: ''
                      booth_setup_url: 'https://demo.vfairs.com/backend/index.php/booths/setup/292638'
                      booth_images:
                        booth_logo_url: 'https://vepimg.b8cdn.com/uploads/uploads/vjfnew/15032/content/images/1741726352coming-soon-png1741726352.png'
                        booth_logo_url_thumbnail: 'https://vepimg.b8cdn.com/contents/showcase/logo/1220193418s-logo.png'
                        booth_large_background_url: 'https://vepimg.b8cdn.com/uploads/vjfnew/15032/content/images/1741726446coming-soon-png1741726446.png'
                      contacts: []
                      booth_reps: []
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 11
                    path: 'http://demo.vfairs.com/rest/v5/booths'
                    per_page: 1
                    to: 1
                    total: 11
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booths fetched successfully.'
                  booths:
                    type: array
                    example:
                      -
                        booth_id: 292638
                        booth_name: 'Booth B'
                        booth_company_profile: 'Test Description'
                        booth_company_url: ''
                        booth_type: Both
                        keywords: ''
                        booth_external_id: null
                        active: 1
                        hide: 0
                        floor_id: 16990
                        address: ''
                        country: null
                        state: ''
                        city: ''
                        pobox: ''
                        booth_setup_url: 'https://demo.vfairs.com/backend/index.php/booths/setup/292638'
                        booth_images:
                          booth_logo_url: 'https://vepimg.b8cdn.com/uploads/uploads/vjfnew/15032/content/images/1741726352coming-soon-png1741726352.png'
                          booth_logo_url_thumbnail: 'https://vepimg.b8cdn.com/contents/showcase/logo/1220193418s-logo.png'
                          booth_large_background_url: 'https://vepimg.b8cdn.com/uploads/vjfnew/15032/content/images/1741726446coming-soon-png1741726446.png'
                        contacts: []
                        booth_reps: []
                    items:
                      type: object
                      properties:
                        booth_id:
                          type: integer
                          example: 292638
                        booth_name:
                          type: string
                          example: 'Booth B'
                        booth_company_profile:
                          type: string
                          example: 'Test Description'
                        booth_company_url:
                          type: string
                          example: ''
                        booth_type:
                          type: string
                          example: Both
                        keywords:
                          type: string
                          example: ''
                        booth_external_id:
                          type: string
                          example: null
                        active:
                          type: integer
                          example: 1
                        hide:
                          type: integer
                          example: 0
                        floor_id:
                          type: integer
                          example: 16990
                        address:
                          type: string
                          example: ''
                        country:
                          type: string
                          example: null
                        state:
                          type: string
                          example: ''
                        city:
                          type: string
                          example: ''
                        pobox:
                          type: string
                          example: ''
                        booth_setup_url:
                          type: string
                          example: 'https://demo.vfairs.com/backend/index.php/booths/setup/292638'
                        booth_images:
                          type: object
                          properties:
                            booth_logo_url:
                              type: string
                              example: 'https://vepimg.b8cdn.com/uploads/uploads/vjfnew/15032/content/images/1741726352coming-soon-png1741726352.png'
                            booth_logo_url_thumbnail:
                              type: string
                              example: 'https://vepimg.b8cdn.com/contents/showcase/logo/1220193418s-logo.png'
                            booth_large_background_url:
                              type: string
                              example: 'https://vepimg.b8cdn.com/uploads/vjfnew/15032/content/images/1741726446coming-soon-png1741726446.png'
                        contacts:
                          type: array
                          example: []
                        booth_reps:
                          type: array
                          example: []
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 11
                      path:
                        type: string
                        example: 'http://demo.vfairs.com/rest/v5/booths'
                      per_page:
                        type: integer
                        example: 1
                      to:
                        type: integer
                        example: 1
                      total:
                        type: integer
                        example: 11
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Resource not found'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Booths
    post:
      summary: 'Create or Update Booth'
      operationId: createOrUpdateBooth
      description: 'Creates a new booth or updates an existing booth based on whether booth_id is provided.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booth created successfully.'
                  booth_id: 292638
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booth created successfully.'
                  booth_id:
                    type: integer
                    example: 292638
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Validation failed'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Validation failed'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Booths
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                booth_id:
                  type: integer
                  description: 'Unique identifier of the booth. Required when updating an existing booth; omit when creating a new booth.'
                  example: 292638
                  nullable: false
                booth_name:
                  type: string
                  description: 'Display name of the booth as shown to visitors.'
                  example: 'Tech Innovation Showcase'
                  nullable: false
                booth_company_profile:
                  type: string
                  description: 'Company description and profile information displayed in the booth.'
                  example: 'Leading technology company specializing in AI solutions'
                  nullable: false
                booth_company_url:
                  type: string
                  description: 'Company website URL for external links from the booth.'
                  example: 'https://techcompany.com'
                  nullable: false
                address:
                  type: string
                  description: 'Physical address of the company or booth location.'
                  example: '123 Innovation Drive'
                  nullable: false
                pobox:
                  type: string
                  description: 'Postal box number for company correspondence.'
                  example: 'PO Box 456'
                  nullable: false
                city:
                  type: string
                  description: 'City where the company is located.'
                  example: 'San Francisco'
                  nullable: false
                state:
                  type: string
                  description: 'State or province where the company is located.'
                  example: California
                  nullable: false
                country:
                  type: string
                  description: 'Country where the company is located.'
                  example: 'United States'
                  nullable: false
                exhibitor_name:
                  type: string
                  description: 'Full name of the primary exhibitor or booth contact person.'
                  example: 'John Smith'
                  nullable: false
                exhibitor_email:
                  type: string
                  description: 'Email address of the primary exhibitor for booth-related communications.'
                  example: john.smith@techcompany.com
                  nullable: false
                booth_type:
                  type: string
                  description: 'Type of booth interface. Determines how the booth is displayed and accessed.'
                  example: web
                  nullable: false
                  enum:
                    - web
                    - mobile
                    - both
                keywords:
                  type: string
                  description: 'Comma-separated keywords for booth search and categorization.'
                  example: 'technology, AI, innovation, software'
                  nullable: false
                booth_external_id:
                  type: integer
                  description: 'External system identifier for booth integration purposes.'
                  example: 789
                  nullable: false
                active:
                  type: boolean
                  description: 'Booth visibility status. When `true`, booth is visible to visitors; when `false`, booth is hidden.'
                  example: true
                  nullable: false
                hide:
                  type: boolean
                  description: 'Additional visibility control. When `true`, booth is completely hidden from all listings.'
                  example: false
                  nullable: false
                floor_id:
                  type: integer
                  description: 'Unique identifier of the floor where this booth is located. Must correspond to an existing floor within the event.'
                  example: 16990
                  nullable: false
                booth_logo:
                  type: string
                  format: binary
                  description: 'Company logo image file for the booth (JPG, PNG formats supported).'
                  nullable: false
                booth_thumbnail:
                  type: string
                  format: binary
                  description: 'Thumbnail image for booth preview in listings (JPG, PNG formats supported).'
                  nullable: false
                booth_background:
                  type: string
                  format: binary
                  description: 'Background image for the booth display (JPG, PNG formats supported).'
                  nullable: false
                accessible_for:
                  type: array
                  description: 'Array of accessibility options defining who can access this booth.'
                  example:
                    - Physical
                    - Virtual
                  items:
                    type: string
                booth_rep_ids:
                  type: array
                  description: 'Array of booth representative IDs to associate with this booth. Representatives must exist in the system.'
                  example:
                    - 101
                    - 102
                    - 103
                  items:
                    type: string
              required:
                - booth_name
                - booth_company_profile
                - booth_company_url
                - address
                - pobox
                - city
                - state
                - country
                - exhibitor_name
                - exhibitor_email
                - keywords
                - active
                - hide
                - floor_id
                - booth_logo
                - booth_background
    delete:
      summary: 'Delete Booth'
      operationId: deleteBooth
      description: 'Permanently removes a booth and optionally its associated representatives.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Booth deleted successfully.'
                  booth_id: 292638
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Booth deleted successfully.'
                  booth_id:
                    type: integer
                    example: 292638
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Booth not found'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Booth not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Booths
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                booth_id:
                  type: integer
                  description: 'Unique identifier of the booth to delete. Must correspond to an existing booth.'
                  example: 292638
                  nullable: false
                delete_reps:
                  type: boolean
                  description: 'Whether to also delete associated booth representatives. When `true`, removes all representatives; when `false`, keeps representatives for potential reassignment.'
                  example: true
                  nullable: false
              required:
                - booth_id
                - delete_reps
  /v5/floors:
    get:
      summary: 'Get Floors'
      operationId: getFloors
      description: 'Retrieves a paginated list of `floors` for the current event.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination. Defaults to 1 if not provided.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination. Defaults to 1 if not provided.'
            example: 1
            nullable: false
        -
          in: query
          name: limit
          description: 'Number of `floors` to return per page. Defaults to 10 if not provided.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of `floors` to return per page. Defaults to 10 if not provided.'
            example: 10
            nullable: false
        -
          in: query
          name: floor_id
          description: 'Unique identifier of the floor to filter by. Must correspond to an existing floor within the event.'
          example: 123
          required: false
          schema:
            type: integer
            description: 'Unique identifier of the floor to filter by. Must correspond to an existing floor within the event.'
            example: 123
            nullable: false
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Floors fetched successfully.'
                  floors:
                    -
                      id: 1
                      floor_name: 'Main Floor'
                      created_at: '2024-01-15T10:30:00Z'
                      updated_at: '2024-01-15T10:30:00Z'
                  meta:
                    current_page: 1
                    per_page: 10
                    total: 25
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Floors fetched successfully.'
                  floors:
                    type: array
                    example:
                      -
                        id: 1
                        floor_name: 'Main Floor'
                        created_at: '2024-01-15T10:30:00Z'
                        updated_at: '2024-01-15T10:30:00Z'
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        floor_name:
                          type: string
                          example: 'Main Floor'
                        created_at:
                          type: string
                          example: '2024-01-15T10:30:00Z'
                        updated_at:
                          type: string
                          example: '2024-01-15T10:30:00Z'
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      per_page:
                        type: integer
                        example: 10
                      total:
                        type: integer
                        example: 25
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Resource not found'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Resource not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Floors
    post:
      summary: 'Create or Update Floor'
      operationId: createOrUpdateFloor
      description: 'Creates a new floor or updates an existing floor based on whether floor_id is provided.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Floor created successfully.'
                  data:
                    floor_id: 123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Floor created successfully.'
                  data:
                    type: object
                    properties:
                      floor_id:
                        type: integer
                        example: 123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Resource not found'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Resource not found'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Validation failed'
                  errors:
                    floor_name:
                      - 'The floor name field is required.'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Validation failed'
                  errors:
                    type: object
                    properties:
                      floor_name:
                        type: array
                        example:
                          - 'The floor name field is required.'
                        items:
                          type: string
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Floors
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                floor_id:
                  type: integer
                  description: 'Unique identifier of the floor to update. If provided, updates existing floor; if omitted, creates a new floor.'
                  example: 123
                  nullable: false
                floor_name:
                  type: string
                  description: 'Display name for the floor. Must be unique within the event.'
                  example: 'Main Exhibition Floor'
                  nullable: false
                floor_background_image:
                  type: string
                  format: binary
                  description: 'Background image file for the floor. Supported formats: jpeg, png, jpg, gif, svg. Maximum file size: 2MB.'
                  nullable: false
              required:
                - floor_name
                - floor_background_image
  '/v5/floors/{floorId}':
    delete:
      summary: 'Delete Floor'
      operationId: deleteFloor
      description: 'Permanently removes a floor and all associated data.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Floor deleted successfully.'
                  floor_id: 123
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Floor deleted successfully.'
                  floor_id:
                    type: integer
                    example: 123
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Token is expired'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Token is expired'
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Floor not found'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Floor not found'
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Internal server error'
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Internal server error'
      tags:
        - Floors
    parameters:
      -
        in: path
        name: floorId
        description: 'Unique identifier of the floor to delete. Must correspond to an existing floor.'
        example: 123
        required: true
        schema:
          type: integer
tags:
  -
    name: 'OAuth Access Token'
    description: 'Endpoints for obtaining and managing OAuth access tokens for API authentication.'
  -
    name: Attendees
    description: 'Manages attendee data for events, including registration, profile updates, resume uploads, and form field configuration. These endpoints enable comprehensive attendee lifecycle management from registration through event participation.'
  -
    name: 'Session Tracks'
    description: 'Manages `session tracks` for multi-language events. `Session tracks` organize `sessions` by categories, dates, or themes and support localization through language-specific configurations.'
  -
    name: Sessions
    description: 'Manages event `sessions` including creation, updates, retrieval, and deletion. `Sessions` can be linked to `tracks` and `speakers`, support multi-language configurations, and offer various session types for different event formats.'
  -
    name: 'Session Handouts'
    description: 'Endpoints for managing `session handouts` - documents associated with `sessions` that attendees can view or download.'
  -
    name: Speakers
    description: 'Endpoints for managing `speaker` profiles and their `session` associations. `Speakers` can be created, updated, retrieved, and deleted, with support for dynamic form configurations and `session` linking.'
  -
    name: Event
    description: 'This section provides endpoints to retrieve event metadata, including available `languages` for multi-language configuration and detailed event information. These endpoints are essential for localizing content such as `sessions` and `tracks` and integrating event-specific settings to ensure a seamless and customized event experience.'
  -
    name: Reports
    description: 'Endpoints for retrieving event analytics and reporting data including `QR scan analytics` and `user journey reports`.'
  -
    name: ''
    description: ''
  -
    name: 'Booth Documents'
    description: 'Manage booth documents including `PDFs`, `Word documents`, `Excel spreadsheets`, and `PowerPoint presentations`. Exhibitors can share these documents with booth visitors, and documents can be automatically added to visitor briefcases.'
  -
    name: 'Booth Representatives'
    description: 'Manages booth representatives who interact with visitors in virtual exhibition booths. Representatives can be assigned to multiple `booths` and have specific roles and permissions.'
  -
    name: 'Booth Videos'
    description: 'Manages booth videos for events. Videos can showcase products, provide demonstrations, or share company information. Supported formats include `MP4`, `MOV`, `WMV`, `AVI`, and `FLV`.'
  -
    name: Booths
    description: 'Manages virtual exhibition booths where exhibitors showcase products, services, and company information. Booths are organized within `floors` and can include `representatives`, `videos`, `documents`, and interactive features with customizable layouts and access permissions.'
  -
    name: Floors
    description: 'Manages virtual `floors` within events. `Floors` organize `booths` in a virtual event space and can be customized with different layouts and themes.'
x-tagGroups:
  -
    name: Authentication
    tags:
      - 'OAuth Access Token'
  -
    name: 'Attendee Management'
    tags:
      - Attendees
  -
    name: 'Session Management'
    tags:
      - 'Session Tracks'
      - Sessions
      - 'Session Handouts'
      - Speakers
  -
    name: 'Exhibitor Management'
    tags:
      - Booths
      - 'Booth Reps'
      - 'Booth Documents'
      - 'Booth Videos'
      - Floors
  -
    name: 'Event Management'
    tags:
      - Event
  -
    name: 'Reports Management'
    tags:
      - Reports
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'You can retrieve your token by calling the [OAuth Access Token](/apis/oauth-access-token/getaccesstoken) endpoint.'
security:
  -
    default: []
