Spotnana Events API

APIs to create and manage events.

OpenAPI Specification

spotnana-events-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Air Events API
  version: v2
  description: APIs to perform search, checkout and book an air pnr
servers:
- url: https://api-ext-sboxmeta.partners.spotnana.com
  description: Sandbox URL
security:
- Bearer: []
tags:
- name: Events
  description: APIs to create and manage events.
paths:
  /v2/events:
    post:
      tags:
      - Events
      summary: Create event
      description: 'Create a draft event. Optionally pass newTraveler to create a new traveler and add them to the event. If the traveler already exists, the request fails — use the travellers field with the existing userId.

        '
      operationId: createEvent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEventResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    get:
      tags:
      - Events
      summary: Get event
      description: Get event details for the specified event ID.
      operationId: getEvent
      parameters:
      - name: type
        in: query
        description: EventType of the event.
        schema:
          $ref: '#/components/schemas/EventType'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
      - Events
      summary: Delete a draft event
      description: Delete a draft (i.e., unpublished) event. A deleted event cannot be accessed or viewed again.
      operationId: deleteEvent
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/events/read-by-external-id:
    parameters:
    - name: externalId
      in: query
      description: External ID
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: companyId
      in: query
      description: Company ID
      required: true
      schema:
        type: string
        format: uuid
        example: f49d00fe-1eda-4304-ba79-a980f565281d
    get:
      tags:
      - Events
      summary: Get event by external ID
      description: 'Get event details using the event''s `externalId`. External IDs are unique identifiers which can be set based on the company''s preference.

        '
      operationId: getEventByExternalID
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/events/{eventId}/travelers/add:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Add travelers to an event
      description: Add the list of travelers to be invited to the event.
      operationId: addTravelersToEvent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTravelersToEventRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddTravelersToEventResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/travelers/remove:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Remove travelers from an event
      description: Remove travelers from an event. This endpoint allows you to remove up to 10 travelers per API call.
      operationId: removeTravelersFromEvent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveTravelersFromEventRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveTravelersFromEventResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/list:
    post:
      tags:
      - Events
      summary: List events
      description: List all the events that match the specified criteria in the request.
      operationId: listEvents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListEventsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEventsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/publish:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Publish event
      description: Publish a draft event.
      operationId: publishEvent
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
                example:
                  id: 1234567890
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/edit-basic-info:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Edit basic details of an event
      description: Edit the basic information of an event such as the event name, description, date and time, location, and contacts.
      operationId: updateEventBasicInfo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEventBasicInfoRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
                example:
                  id: 1234567890
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/edit-booking-guidelines:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Update event booking guidelines
      description: "Update the booking guidelines for an event.\nYou can update booking guidelines such as maximum number of guests allowed to accompany a traveler, \narrival and departure window for the event, payment methods, and allowed travel types.\n"
      operationId: updateEventBookingGuidelines
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEventBookingGuidelinesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
                example:
                  id: 1234567890
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/travelers/{travelerId}/rsvp:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: travelerId
      in: path
      description: Traveler User ID
      required: true
      schema:
        type: string
        format: uuid
        example: f49d00fe-1eda-4304-ba79-a980f565281d
    post:
      tags:
      - Events
      summary: Set traveler RSVP
      description: Update the RSVP status and the RSVP response for a traveler.
      operationId: setUserEventRsvp
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUserEventRsvpRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
      - Events
      summary: Get traveler RSVP
      description: Get the RSVP status and the RSVP response for a traveler.
      operationId: getUserEventRsvp
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventUserRsvp'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/invite/send:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Send invite
      description: "Send event invites to the travelers via email. \nThe invites can be sent to all travelers using a single API call, or you can send invites to specific travelers.\n"
      operationId: sendInvite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendInviteRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/invite/test:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Send a test invite
      description: Send a test event invite to the API caller. This endpoint can be used to preview the invite before sending it to the travelers.
      operationId: testInvite
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/summaries:
    post:
      tags:
      - Events
      summary: Get event summaries
      description: View summaries of specific events. This endpoint retrieves a list of traveler event summaries based on specified `userId`, `companyId`, and `tripIds`.
      operationId: getEventSummaries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetEventSummariesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventSummariesResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/payment-sources:
    parameters:
    - name: userId
      in: query
      description: ID of the event coordinator
      required: true
      schema:
        type: string
        format: uuid
        example: f49d00fe-1eda-4304-ba79-a980f565281d
    get:
      tags:
      - Events
      summary: Get allowed payment sources
      description: Get the payment sources that are associated with the `userId` of the event coordinator.
      operationId: getAllowedPaymentSources
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventsPaymentSourcesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/events/{eventId}/cancel:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: type
      in: query
      description: 'EventType of the event.

        '
      schema:
        $ref: '#/components/schemas/EventType'
    post:
      tags:
      - Events
      summary: Cancel event
      description: "Cancel a published event. \nAfter you've canceled the event, it's recommended that you cancel the bookings using the Cancel PNR API.\n"
      operationId: cancelEvent
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/events/{eventId}/travelers-list:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Events
      summary: Get travelers list
      description: 'Get a paginated list of travelers for an event, including each traveler''s RSVP status, RSVP response, and `tripId`.

        '
      operationId: listEventTravelers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventTravelersRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventTravelersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/{eventId}/custom-field-responses:
    parameters:
    - name: eventId
      in: path
      description: Event ID
      required: true
      schema:
        type: string
        example: '6926658168'
    put:
      tags:
      - Events
      summary: Update event custom field responses
      description: Update the response to a custom field question.
      operationId: updateCustomFieldResponses
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventCustomFieldResponsesRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/bulk-publish:
    post:
      tags:
      - Events
      summary: Bulk publish events
      description: API to bulk publish events and has a support for sending invite to selective users
      operationId: bulkPublishEvents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkPublishEventRequest'
      responses:
        '200':
          description: Bulk publish response with event statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkPublishResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/bulk-edit:
    post:
      tags:
      - Events
      summary: Bulk edit/modify events.
      description: Edit the basic info and booking guidelines in bulk for events.
      operationId: bulkEditEvents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpdateEventsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpdateEventsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/bulk-delete:
    post:
      tags:
      - Events
      summary: Bulk delete draft events
      description: API to bulk delete draft events.
      operationId: bulkDeleteEvents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDeleteEventRequest'
      responses:
        '200':
          description: Bulk delete response with event statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteEventResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/bulk-cancel:
    post:
      tags:
      - Events
      summary: Bulk cancel events
      description: API to bulk cancel events.
      operationId: bulkCancelEvents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkCancelEventRequest'
      responses:
        '200':
          description: Bulk cancel response with event statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkCancelEventResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/events/jobs/status:
    post:
      tags:
      - Events
      summary: Get current details of an async event job.
      description: Get current details of an async event job
      operationId: getAsyncEventJobDetails
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncJobDetailRequest'
      responses:
        '200':
          description: Async job details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncJobDetailResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  schemas:
    SetUserEventRsvpRequest:
      title: SetUserEventRsvpRequest
      description: Set user's event rsvp request object
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EventType'
        eventRsvpState:
          $ref: '#/components/schemas/EventRsvpState'
        eventRsvpResponse:
          $ref: '#/components/schemas/EventRsvpResponse'
    EventUserRsvp:
      title: EventUserRsvp
      type: object
      description: User rsvp for the event
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        eventRsvpState:
          $ref: '#/components/schemas/EventRsvpState'
        eventRsvpResponse:
          $ref: '#/components/schemas/EventRsvpResponse'
        invitedAt:
          $ref: '#/components/schemas/DateTimeOffset'
        airBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        railBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        carBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        hotelBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
    AdhocUserInfo:
      type: object
      title: AdhocUserInfo
      description: Basic information related to ad-hoc traveler profile.
      required:
      - profileOwner
      properties:
        profileOwner:
          $ref: '#/components/schemas/ProfileOwner'
        isSaved:
          type: boolean
          description: "A boolean flag to show if ad-hoc traveler is visible in search. While updating the user \nif client tries to update this field, it will throw exception.\n"
          default: false
    UpdateEventBasicInfoRequest:
      title: UpdateEventBasicInfoRequest
      description: Update Event basic info request object
      type: object
      required:
      - name
      - location
      properties:
        name:
          type: string
          description: Name of the event
        type:
          $ref: '#/components/schemas/EventType'
        description:
          type: string
          description: Description of the event
        documents:
          type: array
          description: Documents attached for an event
          items:
            $ref: '#/components/schemas/Document'
        startDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        endDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        location:
          $ref: '#/components/schemas/EventLocation'
        contacts:
          type: array
          description: Contacts for the event
          items:
            $ref: '#/components/schemas/UserId'
        referenceUsers:
          type: array
          description: Event group reference user ids
          items:
            $ref: '#/components/schemas/UserId'
        travelerTypes:
          type: array
          description: Allowed traveler types for the event
          items:
            $ref: '#/components/schemas/Persona'
        bookingStyle:
          description: Whether the event bookings will be self served by the traveler or would be arranged by an agent for the traveler.
          $ref: '#/components/schemas/EventBookingStyle'
        policyId:
          type: string
          format: uuid
          description: Policy associated with the event.
          example: f7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b
        allowTravelersPolicy:
          $ref: '#/components/schemas/AllowTravelersPolicy'
        emailPreferences:
          $ref: '#/components/schemas/BucketEmailPreferences'
        allowTravelersToRsvp:
          $ref: '#/components/schemas/AllowTravelersToRsvp'
        internalNotes:
          type: string
          description: Internal notes of the event
          example: Use travelers default as payment method.
        tripOverrides:
          $ref: '#/components/schemas/TripOverrides'
        tripContacts:
          type: array
          description: Trip contacts for the event. These are passed through to created trips.
          items:
            $ref: '#/components/schemas/TripContact'
        inheritedCustomFieldIds:
          type: array
          description: List of custom field IDs that were inherited from parent
          items:
            type: string
            format: uuid
            example: f7b3b3b3-7b3b-4b3b-8b3b-3b3b3b3b3b3b
        eventCustomFieldV3Responses:
          type: array
          description: List of custom field responses for an event.
          items:
            $ref: '#/components/schemas/CustomFieldPrefilledResponse'
        eventCustomFieldResponses:
          deprecated: true
          x-sunset: '2026-07-01'
          type: array
          description: List of custom field responses for the event.
          items:
            $ref: '#/components/schemas/CustomFieldResponse'
        inviteEmailConfig:
          $ref: '#/components/schemas/InviteEmailConfig'
    CreateEventResponse:
      title: CreateEventResponse
      description: Response for create event
      type: object
      required:
      - id
      properties:
        id:
          type: string
          description: Id of the created event
        userId:
          description: Id of the newly created user, if a new traveler was created
          $ref: '#/components/schemas/UserId'
    DirectBillingWrapper:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling'
    BulkDeleteEventResponse:
      title: BulkDeleteEventResponse
      type: object
      description: Response payload for the bulk event deletion.
      required:
      - deleteEventResponses
      properties:
        deleteEventResponses:
          type: array
          description: List of events delete response.
          items:
            $ref: '#/components/schemas/DeleteEventResponse'
    AdditionalInfo:
      type: object
      title: AdditionalInfo
      description: Additional data need to be sent along with the custom field response.
      discriminator:
        propertyName: type
        mapping:
          VARIABLE: '#/components/schemas/Variable'
          EXPRESSION: '#/components/schemas/Expression'
      oneOf:
      - $ref: '#/components/schemas/Variable'
      - $ref: '#/components/schemas/Expression'
    AirlineInfo:
      title: AirlineInfo
      type: object
      required:
      - airlineCode
      - airlineName
      properties:
        airlineCode:
          type: string
          description: IATA code for airline.
          example: AA
        airlineName:
          type: string
          description: Airline name
          example: American Airlines
    UnusedCreditDescriptor:
      type: object
      title: UnusedCreditDescriptor
      description: Descriptor for unused credits.
      required:
      - unusedCreditInfo
      - userId
      - companyId
      properties:
        unusedCreditInfo:
          $ref: '#/components/schemas/UnusedCreditInfo'
        userId:
          description: The user Id of the user who owns the credit.
          $ref: '#/components/schemas/UserId'
        companyId:
          description: The company Id of the user who owns the credit.
          $ref: '#/components/schemas/CompanyId'
    CarPref:
      type: object
      title: CarPref
      description: Travel preferences related to car.
      properties:
        vendors:
          type: array
          description: A list of car vendors.
          items:
            $ref: '#/components/schemas/CarVendor'
        carTypes:
          type: array
          description: A list of types of car.
          items:
            $ref: '#/components/schemas/CarType'
        engineTypes:
          type: array
          description: A list of types of engine.
          items:
            $ref: '#/components/schemas/EngineType'
        transmissionTypes:
          type: array
          description: A list of types of transmission.
          items:
            $ref: '#/components/schemas/TransmissionSearchFilter'
        conditionalRates:
          type: array
          description: A list of conditional rates for rail.
          items:
            $ref: '#/components/schemas/ConditionalRate'
    ThirdPartyHotelCode:
      title: ThirdPartyHotelCode
      type: object
      required:
      - hotelCode
      - hotelCodeType
      properties:
        hotelCode:
          type: string
          description: Third party hotel code.
        hotelCodeType:
          type: string
          description: Type of the third party.
          enum:
          - SABRE_CSL
          - SABRE_TN
          - EXPEDIA_RAPID
          - MARRIOTT
          - GIATA
          - BCD
    RailItinerary:
      type: object
      title: RailItinerary
      properties:
        railItineraryId:
          $ref: '#/components/schemas/RailItineraryId'
    UnusedCreditFop:
      type: object
      title: UnusedCreditFop
      description: Form of payment information associated with an unused credit.
      properties:
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used for the original booking.
        paymentSourceType:
          $ref: '#/components/schemas/PaymentSourceType'
          description: Type of payment source used.
        card:
          $ref: '#/components/schemas/Card'
          description: Card information if the payment source type is a card.
    UserTripGroup:
      type: object
      title: UserTripGroup
      description: Definition of a group to combine users and their trips.
      required:
      - ownerId
      properties:
        id:
          type: string
          description: ID of the group.
          format: uuid
          example: f49d00fe-1eda-4304-ba79-a980f565281d
        name:
          type: string
          description: Name of the group.
          example: Sample group name
        userGroupInfo:
          $ref: '#/components/schemas/UserGroupInfo'
        userTripInfos:
          type: array
          description: Details of the users and their trips in the group.
          items:
            $ref: '#/components/schemas/UserTripInfo'
        ownerId:
          $ref: '#/components/schemas/UserId'
        status:
          $ref: '#/components/schemas/UserFacingStatus'
        startDate:
          $ref: '#/components/schemas/DateModel'
        endDate:
          $ref: '#/components/schemas/DateModel'
        createdAt:
          $ref: '#/components/schemas/DateTimeOffset'
    BulkCancelEventRequest:
      title: BulkCancelEventRequest
      type: object
      description: Request payload for bulk event cancellation.
      required:
      - cancelEventRequests
      properties:
        cancelAsync:
          type: boolean
          description: Flag to indicate if the cancellation should be processed asynchronously.
          default: false
          example: false
        cancelEventRequests:
          type: array
          description: List of events to be cancelled.
          items:
            $ref: '#/components/schemas/CancelEventRequest'
          minItems: 1
          maxItems: 100
    PaymentSourceMapping:
      type: object
      title: PaymentSourceMapping
      properties:
        accessType:
          description: Access Type of the Payment Source
          $ref: '#/components/schemas/AccessType'
        accessTypeEntityId:
          type: string
          description: Entity ID corresponding to the Access Type being created
        filter:
          description: Applicable access information for this payment_source
     

# --- truncated at 32 KB (235 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spotnana/refs/heads/main/openapi/spotnana-events-api-openapi.yml