Spotnana Users API

APIs to onboard and manage users.

Operations 26

POST /v2/users Create user #
GET /v2/users Query user #
POST /v3/users/list List users #
GET /v2/users/{userId} Get user #
DELETE /v2/users/{userId} Delete user #
PUT /v2/users/{userId} Update user #
GET /v2/users/{userId}/business-info Get user business info #
PUT /v2/users/{userId}/business-info Update user business info #
GET /v2/users/{userId}/personal-info Get user personal info #
PUT /v2/users/{userId}/personal-info Update user personal info #
GET /v2/users/{userId}/travel-preferences Get user travel preferences #
PUT /v2/users/{userId}/travel-preferences Update user travel preferences #
GET /v2/users/{userId}/membership-info Get user membership info #
PUT /v2/users/{userId}/membership-info Update user membership info #
PUT /v2/users/{userId}/roles Update user roles #
GET /v2/users/{userId}/roles Get user roles #
GET /v2/users/{userId}/notification-preferences Get notification preferences #
PUT /v2/users/{userId}/notification-preferences Update notification preferences #
GET /v2/users/{userId}/travel-arrangers Get user travel arrangers #
GET /v2/users/{userId}/external-id Get user's external ID #
PUT /v2/users/{userId}/external-id Update user's external ID #
POST /v2/users/{userId}/activate Activate a user #
POST /v2/users/{userId}/favorites Add favorite #
GET /v2/users/{userId}/favorites List favorites #
DELETE /v2/users/{userId}/favorites/{favoriteId} Remove favorite #
GET /v2/users/{userId}/applicable-policies Get user policies #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/spotnana-users-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

spotnana-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Air Users 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: Users
  description: APIs to onboard and manage users.
paths:
  /v2/users:
    post:
      tags:
      - Users
      summary: Create user
      description: 'This endpoint is used to create user profiles in Spotnana. This is typically used by

        partner companies to onboard user profiles of their customer organizations.

        '
      operationId: createUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreateRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      parameters:
      - name: companyId
        in: query
        description: Identifier for company to search user for. Please specify one of the companyId or tmcId.
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: tmcId
        in: query
        description: Identifier for TMC to search user for. Please specify one of the companyId or tmcId.
        schema:
          type: string
          format: uuid
        example: b83e9704-2e8e-4256-90bf-2e59c1bcf9f2
      - name: email
        in: query
        description: Email ID of the user.
        schema:
          type: string
          format: email
        example: user@example.com
      - name: externalId
        in: query
        description: The partner-assigned user identifier.
        schema:
          type: string
        example: '123456'
      - name: employeeId
        in: query
        description: Employee ID of the user.
        schema:
          type: string
        example: EMP123456
      - name: includeInactive
        in: query
        description: If true, include inactive users in the response.
        schema:
          type: boolean
          default: false
        example: true
      tags:
      - Users
      summary: Query user
      description: 'This endpoint queries user of given company based on given identifier like email or external ID.

        In case includeInactive is true, inactive users are also included in the response.'
      operationId: queryUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSummaryList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/users/list:
    post:
      tags:
      - Users
      summary: List users
      description: List users of a specific TMC or a company.
      operationId: listUsersV3
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListUsersV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUsersV3Response'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get user
      description: This endpoint gets user details for user ID.
      operationId: getUserInfo
      parameters:
      - name: includeInactive
        in: query
        description: Include inactive users in the response.
        schema:
          type: boolean
          default: false
          example: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfile'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
      - Users
      summary: Delete user
      description: This endpoint deletes a user by user ID.
      operationId: deleteUser
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    put:
      tags:
      - Users
      summary: Update user
      operationId: updateUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRequest'
      responses:
        '200':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/business-info:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    - name: includeInactive
      in: query
      description: Include inactive users.
      schema:
        type: boolean
        default: false
        example: true
    get:
      tags:
      - Users
      summary: Get user business info
      description: This endpoint gets user business info by user ID.
      operationId: getBusinessInfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update user business info
      description: This endpoint updates user business info by user ID.
      operationId: updateBusinessInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessInfo'
      responses:
        '204':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/personal-info:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    - name: includeInactive
      in: query
      description: Include inactive users.
      schema:
        type: boolean
        default: false
        example: true
    get:
      tags:
      - Users
      summary: Get user personal info
      description: This endpoint gets user personal info by user ID.
      operationId: getPersonalInfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPersonalInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update user personal info
      description: This endpoint updates user personal info by user ID.
      operationId: updatePersonalInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPersonalInfo'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/travel-preferences:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get user travel preferences
      operationId: getUserTravelPreferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelPreferences'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update user travel preferences
      operationId: updateTravelPreferences
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelPreferences'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/membership-info:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get user membership info
      operationId: getMembershipInfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MembershipInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update user membership info
      operationId: updateMembershipInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MembershipInfo'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/roles:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
      - Users
      summary: Update user roles
      description: This endpoint updates user roles.
      operationId: updateUserRoles
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RolesConfig'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
      - Users
      summary: Get user roles
      description: This endpoint gets user roles.
      operationId: getUserRoles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RolesConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/notification-preferences:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get notification preferences
      description: This endpoint gets notification preferences for a user.
      operationId: getNotificationPreferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationPreferences'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update notification preferences
      description: This endpoint updates notification preferences for a user.
      operationId: updateNotificationPreferences
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationPreferences'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/travel-arrangers:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get user travel arrangers
      operationId: getUserTravelArrangers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserTravelArrangers'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/external-id:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    - name: includeInactive
      in: query
      description: Include inactive users.
      schema:
        type: boolean
        default: false
        example: true
    get:
      tags:
      - Users
      summary: Get user's external ID
      description: This endpoint gets user's external ID by user ID.
      operationId: getExternalId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalIdObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Users
      summary: Update user's external ID
      description: This endpoint updates user's external ID by user ID.
      operationId: updateExternalId
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalIdObject'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/activate:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Users
      summary: Activate a user
      description: This endpoint activates a deactivated user.
      operationId: activateUser
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/favorites:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Users
      summary: Add favorite
      description: Add a favorite item for a user.
      operationId: addFavorite
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddFavoriteRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddFavoriteResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      parameters:
      - name: types
        in: query
        description: Filter by favorite types. If empty, returns all types.
        schema:
          type: array
          items:
            type: string
      - name: query
        in: query
        description: Search query to filter favorites by display name.
        schema:
          type: string
      tags:
      - Users
      summary: List favorites
      description: List favorite items for a user, optionally filtered by type and search query.
      operationId: listFavorites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListFavoritesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/users/{userId}/favorites/{favoriteId}:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    - name: favoriteId
      in: path
      description: Identifier for the favorite item.
      required: true
      schema:
        type: string
    delete:
      tags:
      - Users
      summary: Remove favorite
      description: Remove a favorite item for a user.
      operationId: removeFavorite
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/users/{userId}/applicable-policies:
    parameters:
    - name: userId
      in: path
      description: Identifier for user.
      required: true
      schema:
        type: string
        format: uuid
      example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
      - Users
      summary: Get user policies
      operationId: getUserApplicablePolicies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserApplicablePolicies'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    UserCreateRequest:
      type: object
      description: Traveler details.
      required:
      - persona
      x-ignoreBreakingChanges:
      - personalInfo
      - UsersApi.yaml->UserCreateRequest->personalInfo
      properties:
        personalInfo:
          $ref: '#/components/schemas/UserPersonalInfo'
          x-optionalFrom: '2025-05-19'
        businessInfo:
          $ref: '#/components/schemas/BusinessInfo'
        persona:
          $ref: '#/components/schemas/Persona'
        relativeOf:
          deprecated: true
          x-sunset: '2026-07-01'
          $ref: '#/components/schemas/RelativeOf'
        billingCurrency:
          type: string
          description: Preferred billing currency of the user
          example: INR
        tier:
          $ref: '#/components/schemas/Tier'
        stealthType:
          $ref: '#/components/schemas/StealthType'
        externalId:
          type: string
          description: 'A partner-assigned user identifier. This value must be unique for all travelers within a PNR.

            '
        travelPreferences:
          $ref: '#/components/schemas/TravelPreferences'
        membershipInfo:
          $ref: '#/components/schemas/MembershipInfo'
        notificationPreferences:
          $ref: '#/components/schemas/NotificationPreferences'
        travelArrangers:
          deprecated: true
          x-sunset: '2026-07-01'
          $ref: '#/components/schemas/UserTravelArrangers'
        adhocUserInfo:
          $ref: '#/components/schemas/AdhocUserInfo'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/RoleConfig'
    BusinessDetail:
      type: object
      title: BusinessDetail
      description: Business details of the user
      required:
      - legalEntity
      properties:
        legalEntity:
          description: The legal entity associated with the user.
          $ref: '#/components/schemas/Reference'
        office:
          description: The office associated with the user.
          $ref: '#/components/schemas/Reference'
        department:
          description: The department associated with the user.
          $ref: '#/components/schemas/Reference'
        costCenter:
          description: The cost center associated with the user.
          $ref: '#/components/schemas/Reference'
        businessEmail:
          description: Business email of the user.
          type: string
        designation:
          description: Designation or job title of the user.
          type: string
        employeeId:
          description: Employee ID of the user.
          type: string
    NationalDocWrapper:
      type: object
      title: NationalDocWrapper
      properties:
        nationalDoc:
          $ref: '#/components/schemas/NationalDoc'
    NameSuffix:
      title: NameSuffix
      description: Suffix for name
      type: string
      enum:
      - NAME_SUFFIX_UNKNOWN
      - SR
      - JR
      - MD
      - PHD
      - II
      - III
      - IV
      - DO
      - ATTY
      - V
      - VI
      - ESQ
      - DC
      - DDS
      - VM
      - JD
      - SECOND
      - THIRD
      example: SR
    SecondaryServiceProviderTmc:
      type: object
      title: SecondaryServiceProviderTmc
      description: Secondary service provider TMC info
      required:
      - tmcId
      - supplier
      - travelType
      properties:
        tmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Id of the service provider TMC.
        supplier:
          $ref: '#/components/schemas/SupplierType'
          description: Supplier for which this service provider should be used.
        travelType:
          $ref: '#/components/schemas/TravelType'
          description: Travel type for which this service provider should be used.
    SeatPref:
      type: object
      title: SeatPref
      description: Preference about seat of rail.
      properties:
        hasAccessibility:
          type: boolean
          description: Whether or not requires assistance for disability.
          default: false
          example: false
        seatTypes:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefType'
        seatLocations:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefLocation'
        deckLevels:
          type: array
          items:
            $ref: '#/components/schemas/DeckLevel'
        seatDirections:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefDirection'
    UserPersonalInfo:
      type: object
      title: UserPersonalInfo
      description: User details.
      properties:
        addresses:
          type: array
          x-pii: SENSITIVE
          items:
            $ref: '#/components/schemas/PostalAddress'
        dob:
          $ref: '#/components/schemas/DateModel'
          x-pii: SENSITIVE
        email:
          type: string
          format: email
          example: example@email.com
          x-pii: IDENTIFIER
        emergencyContactInfo:
          deprecated: true
          x-sunset: '2026-07-01'
          $ref: '#/components/schemas/EmergencyContactInfo'
        gender:
          $ref: '#/components/schemas/Gender'
          x-pii: SENSITIVE
        identityDocs:
          type: array
          description: List of user identity documents.
          items:
            $ref: '#/components/schemas/IdentityDocument'
          example:
          - passport:
              docId: PASSPORTID
              expiryDate:
                iso8601: '2017-07-21'
              issueCountry: IN
              issuedDate:
                iso8601: '2017-07-21'
              nationalityCountry: IN
              type: REGULAR
          - ktn:
              number: '123456'
              issueCountry: US
        name:
          $ref: '#/components/schemas/Name'
        phoneNumbers:
          type: array
          x-pii: IDENTIFIER
          items:
            $ref: '#/components/schemas/PhoneNumber'
        profilePicture:
          $ref: '#/components/schemas/Image'
          x-pii: SENSITIVE
        nationality:
          type: string
          example: Indian
          description: Nationality of user
          x-pii: SENSITIVE
        title:
          $ref: '#/components/schemas/UserTitle'
        preferredLanguage:
          type: string
          description: Language preferred by user.
          example: en-US
        preferredPronoun:
          description: Pronoun preferred by user.
          $ref: '#/components/schemas/PreferredPronoun'
        travelerName:
          description: A name of user that does not contain special characters.
          $ref: '#/components/schemas/Name'
        emergencyContact:
          $ref: '#/components/schemas/EmergencyContact'
    TmcInfo:
      type: object
      title: TmcInfo
      description: TMC config information.
      required:
      - id
      - primaryServiceProviderTmc
      properties:
        id:
          $ref: '#/components/schemas/CompanyId'
          description: TMC id.
        primaryServiceProviderTmc:
          $ref: '#/components/schemas/PrimaryServiceProviderTmc'
          description: Primary service provider TMC for the TMC.
        secondaryServiceProviderTmcs:
          type: array
          description: Secondary service provider TMCs for the TMC.
          items:
            $ref: '#/components/schemas/SecondaryServiceProviderTmc'
        partnerTmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Useful to identify the clients onboarded by a PARTNER_TMC
    NotificationPreferences:
      type: object
      title: NotificationPreferences
      description: Notification preferences of a user for different notification types.
      properties:
        preferences:
          type: array
          items:
            $ref: '#/components/schemas/NotificationPreferencePerType'
    AddFavoriteResponse:
      type: object
      title: AddFavoriteResponse
      description: Response after adding a favorite item.
      properties:
        favorite:
          $ref: '#/components/schemas/FavoriteItem'
    MembershipInfo:
      type: object
      description: User's loyalty program membership details.
      properties:
        membershipInfos:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyInfo'
        isLoyaltyBlocked:
          type: boolean
          description: Whether user is blocked to use loyalty programs. This is a read only field.
          example: false
    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'
    RoomPreference:
      type: object
      title: RoomPreference
      description: Room options and stay preference.
      properties:
        isMobilityAccessible:
          type: boolean
          description: Whether or not mobility accessible room, tub.
          default: false
          example: false
        bedCount:
          type: string
          description: The number of bed in the room.
          enum:
          - ONE_BED
          - TWO_BEDS
          example: ONE_BED
        roomType:
          type: string
          description: Single selection of type of room.
          enum:
          - SMOKING
          - NON_SMOKING
          example: SMOKING
        mostImportantFact:
          type: string
          description: Single selection of the most import fact.
          enum:
          - ROOM_TYPE
          - BED_COUNT
          - ROOM_LOCATION
          example: BED_COUNT
        roomLocation:
          type: string
          description: Location of the hotel room
          enum:
          - HIGH_FLOOR
          - LOW_FLOOR
          - NEAR_ELEVATOR
          example: HIGH_FLOOR
        pillowType:
          type: string
          description: The type of pillow in hotel room.
          enum:
          - FOAM
          - EXTRA_FOAM
          - EXTRA_FEATHER
          example: FOAM
        roomAmenityPrefs:
          type: array
          items:
            type: string
            description: Amenity preference of the room.
            enum:
            - FEATHER_FREE_ROOM
            - EXTRA_TOWELS
            - REFRIGERATOR
            example: EXTRA_TOWELS
    PreferredLocationLabel:
      type: string
      title: PreferredLocationLabel
      description: The label of preferred airport or rail station.
      enum:
      - HOME
      - WORK
      - OTHER
      example: HOME
    PreferredRailStation:
      type: object
      title: PreferredRailStation
      description: Rail station preferred by traveler.
      required:
      - stationCode
      - label
      properties:
        stationName:
          type: string
          description: Rail station name.
          example: Chicago Union Station
        stationCode:
          type: string
          description: Rail station code.
          example: CHI
        cityName:
          type: string
          description: Name of city where the rail station is located.
          example: Chicago
        countryCode:
          type: string
     

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