Skip to content

Air API (v2)

Download OpenAPI description
Languages
Servers
Sandbox URL
https://api-ext-sboxmeta.partners.spotnana.com
Spotnana mock server
https://developer-docs.redocly.app/docs/_mock/openapi/airapi

Air

APIs to perform search, checkout and book an air pnr

Operations

Modify Book

Request

Book[cancel] new[existing] legs into an existing pnr using the selected rate option from airModifySearch operation.

Security
Bearer
Bodyapplication/jsonrequired
bookingIdstringrequired

Booking id returned in successful response of air-revalidate-itin api call in the booking flow.

Example: "ChBlMTFmOTVkZTcwZmZjMmI2EhAwZjVkNDhhNGJjNWExZTMw"
tripDataobject(TripData)required

Trip data to book a PNR.

Example: {"tripId":{"id":"9527251668"}}
tripData.​approverEmailstring

Email address of the approver who should receives approval email for the current booking.

tripData.​approverNamestring

Name of the approver.

tripData.​hardApprovalRequiredboolean

Whether the current booking requires hard approval or soft approval. This flag should be used only if valid approver is present.

tripData.​outOfPolicyboolean

If the given booking is out of policy.

tripData.​policyIdstring

Policy Id for which violation is done.

tripData.​policyVersioninteger(int32)

Version of policy.

tripData.​tripIdobject(TripId)required

Id of the trip.

Example: {"id":"9527251668"}
tripData.​tripId.​idstringrequired

Id.

Example: "9527251668"
skipTicketingboolean

If this is true, the PNR is not set up for ticketing.

Example: true
postPaymentVerificationInfoPostStripeVerificationInfoWrapper (object) or PostUrlBasedVerificationInfoWrapper (object) or AmadeusCheckoutVerificationInfoWrapper (object) or ThreeDSecure2PostVerificationInfoWrapper (object) or RazorpayPostVerificationInfoWrapper (object)(PostPaymentVerificationInfo)
One of:

Payment information sent after the verification of payment method.

customFieldV3ResponsesArray of objects(CustomFieldV3Response)

Custom field responses for the booking.

waiveOffInfoobject(WaiveOffInfo)

Waive off info.

callbackUrlVerificationInfoobject(CallbackUrlVerificationInfo)

Callback URL information for post-verification redirect.

curl -i -X POST \
  https://api-ext-sboxmeta.partners.spotnana.com/v2/air/modify-book \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "bookingId": "ChBlMTFmOTVkZTcwZmZjMmI2EhAwZjVkNDhhNGJjNWExZTMw",
    "tripData": {
      "tripId": {
        "id": "9527251668"
      }
    }
  }'

Responses

OK

Bodyapplication/json
pnrNumberstring(Source PNR ID)
Example: "AXKJDF"
pnrStatusstring(PnrStatus)

Status of PNR

Enum ValueDescription
UNKNOWN

PNR status could not be determined or mapped from the supplier.

INITIATED

Default status when a PNR entity is first created in our database. The booking may not yet be confirmed by the supplier, and we may not have a vendor confirmation ID.

CANCELLED

The booking or flight is cancelled. Terminal status.

CONFIRMED

Booking confirmed by the supplier. For Air PNRs, confirmed but not yet ticketed (no active tickets).

GROUP_BOOKING_ON_REQUEST

Group booking requested but not yet confirmed. Air only

WAITLISTED

Booking is on a waitlist, pending confirmation by the supplier.

PENDING

Booking is awaiting confirmation or action. Used across all PNR types as a catch-all for not-yet-confirmed states.

AIRLINE_UPGRADE

Passenger upgraded by the airline. Not directly mapped by any supplier.

WAITLIST_CONFIRMED

Previously waitlisted booking confirmed by the supplier. Air only

BOOKING_DENIED_CONTACT_SUPPORT

Booking denied by the supplier, requires support intervention. Air only

Example: "CONFIRMED"
pnrIdstring

Spotnana PNR ID

Example: "1213124111"
paymentVerificationInfoStripeVerificationInfoWrapper (object) or UrlVerificationInfoWrapper (object) or ThreeDSecure2VerificationInfoWrapper (object) or RazorpayVerificationInfoWrapper (object)(PaymentVerificationInfo)
One of:

VerificationInfo required for the payment operation.

processingWarningstring

Optional warning message if processing is taking longer than expected

Example: "Modification is successful but update is taking longer than expected"
Response
application/json
{ "pnrNumber": "AXKJDF", "pnrStatus": "CONFIRMED", "pnrId": "1213124111" }

Edit PNR

Request

Edit specific traveler information in an existing PNR. This API allows you to edit and modify Special Service Requests (SSR), seat selection, loyalty number, ancillaries, redress number, Known Traveler Number (KTN), check-in preferences, and Other Service Information (OSI).

Security
Bearer
Path
pnrIdstringrequired

PNR ID created by Spotnana for the booking.

Example: 1213124111
Bodyapplication/jsonrequired
pnrRemarksArray of objects(PnrNoteRemark)

Note remarks to be added for pnr at time of pnr update

pnrIdstringrequired

PNR ID created by Spotnana for the booking.

Example: "1234567890"
travelerInfoArray of objects(TravelerUpdateInfo)required

Traveler information.

Example: [{"traveler":{"travelerId":"1","travelerInfo":{"userOrgId":{"userId":{"id":"8ec7ef81-e314-4b2a-ad62-9157262aeb11"},"organizationId":{"id":"5ec7ef81-e314-4b2a-ad62-9157262aeb11"},"organizationAgencyId":{"id":"2ec7ef81-e314-4b2a-ad62-9157262aeb11"},"tmcInfo":{"id":{"id":"2ec7ef81-e314-4b2a-ad62-9157262aeb11"},"primaryServiceProviderTmc":{"tmcId":{"id":"2ec7ef81-e314-4b2a-ad62-9157262aeb11"}},"secondaryServiceProviderTmcs":[]},"tmcBasicInfo":{"contractingTmc":{"id":{"id":"2ec7ef81-e314-4b2a-ad62-9157262aeb11"}},"bookingTmc":{"id":{"id":"2ec7ef81-e314-4b2a-ad62-9157262aeb11"}}}}}},"seats":[{"flightIndex":1,"seatNumber":"10A"}],"specialServiceRequests":[{"flightIndex":1,"code":"SPML","info":"Special meal without egg."}],"updateTypes":["SPECIAL_SERVICE_REQUEST","SEAT"]}]
travelerInfo[].​travelerobject(AirTravelerInfo)required

Traveler details

travelerInfo[].​traveler.​travelerIdstring

Unique ID for traveler

Example: "1"
travelerInfo[].​traveler.​adhocTravelerInfoUserIdWrapper (object) or AdhocTravelerInfoWrapper (object)(TravelerInfoResponse)
One of:

Adhoc Traveler info for this traveler

travelerInfo[].​traveler.​travelerInfoobject(Traveler)Deprecated

Traveler Information

travelerInfo[].​seatsArray of objects(SeatDetail)
travelerInfo[].​seatPreferencestring

In case seat is not selected for the traveler, this field can be used to set the seat preference and reserve seat if it is free of cost

Enum"AISLE""WINDOW"
travelerInfo[].​otherAncillariesArray of objects(OtherAncillaryDetail)
travelerInfo[].​specialServiceRequestsArray of objects(SpecialServiceRequestInfo)

List of all Special Service Requests (SSR) for the traveler.

travelerInfo[].​editSpecialServiceRequestsobject(SpecialServiceRequestOperations)

Supports targeted addition and deletion of Special Service Requests (SSR) for the traveler. Mutually exclusive with the specialServiceRequests field; both must not be provided in the same request.

travelerInfo[].​updateTypesArray of stringsuniquerequired
Items Enum"LOYALTY_INFO""REDRESS_NUMBER""KNOWN_TRAVELER_NUMBER""SEAT""SPECIAL_SERVICE_REQUEST""OTHER_ANCILLARY""UNDO_CHECK_IN""CHECK_IN""SEAT_PREFERENCE""PASSPORT"
seatMapResponseIdstring

The seatMapResponseId generated using the Get flight seat map API. This field is only required if the seat selection is being changed for the traveler.

Example: "8bc4ec0e1839aabc"
preSearchAnswersobject

Contains a list of custom fields or pre search answers.

pnrUpdateTypesArray of strings
Items Value"OTHER_SERVICE_INFO"
Example: ["OTHER_SERVICE_INFO"]
otherServiceInformationItemsArray of objects(OtherServiceInformation)

The list of all Other Service Information (OSI) to be included in the PNR.

bookingPaymentDetailsobject(BookingPaymentDetails)

Payment details used for booking.

postPaymentVerificationInfoPostStripeVerificationInfoWrapper (object) or PostUrlBasedVerificationInfoWrapper (object) or AmadeusCheckoutVerificationInfoWrapper (object) or ThreeDSecure2PostVerificationInfoWrapper (object) or RazorpayPostVerificationInfoWrapper (object)(PostPaymentVerificationInfo)
One of:

Payment information sent after the verification of payment method.

waiveOffInfoobject(WaiveOffInfo)

Waive off info.

curl -i -X POST \
  https://api-ext-sboxmeta.partners.spotnana.com/v2/air/pnrs/1213124111/update \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "pnrId": "1234567890",
    "seatMapResponseId": "8bc4ec0e1839aabc",
    "pnrUpdateTypes": [
      "OTHER_SERVICE_INFO"
    ],
    "travelerInfo": [
      {
        "traveler": {
          "travelerId": "1",
          "travelerInfo": {
            "userOrgId": {
              "userId": {
                "id": "8ec7ef81-e314-4b2a-ad62-9157262aeb11"
              },
              "organizationId": {
                "id": "5ec7ef81-e314-4b2a-ad62-9157262aeb11"
              },
              "organizationAgencyId": {
                "id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
              },
              "tmcInfo": {
                "id": {
                  "id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
                },
                "primaryServiceProviderTmc": {
                  "tmcId": {
                    "id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
                  }
                },
                "secondaryServiceProviderTmcs": []
              },
              "tmcBasicInfo": {
                "contractingTmc": {
                  "id": {
                    "id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
                  }
                },
                "bookingTmc": {
                  "id": {
                    "id": "2ec7ef81-e314-4b2a-ad62-9157262aeb11"
                  }
                }
              }
            }
          }
        },
        "seats": [
          {
            "flightIndex": 1,
            "seatNumber": "10A"
          }
        ],
        "specialServiceRequests": [
          {
            "flightIndex": 1,
            "code": "SPML",
            "info": "Special meal without egg."
          }
        ],
        "updateTypes": [
          "SPECIAL_SERVICE_REQUEST",
          "SEAT"
        ]
      }
    ]
  }'

Responses

Success

Bodyapplication/json
paymentVerificationInfoStripeVerificationInfoWrapper (object) or UrlVerificationInfoWrapper (object) or ThreeDSecure2VerificationInfoWrapper (object) or RazorpayVerificationInfoWrapper (object)(PaymentVerificationInfo)
One of:

VerificationInfo required for the payment operation.

Response
application/json
{ "paymentVerificationInfo": { "gatewayIdentifier": {}, "paymentKey": "string", "stripeVerificationInfo": {} } }

Get Special Service Requests (SSR)

Request

Returns the list of all Special Service Requests (SSR) supported by Spotnana. This API doesn't require a request payload or a query parameter. You can use this endpoint anytime during the air booking or exchange workflow to view the list of SSRs currently supported by Spotnana.

Security
Bearer
curl -i -X GET \
  https://api-ext-sboxmeta.partners.spotnana.com/v2/air/special-service-requests \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
specialServiceRequestsArray of objects(SpecialServiceRequest)
Response
application/json
{ "specialServiceRequests": [ {} ] }

Credits

Manage airline credits including company credit pools, credit transfers, and credit redemptions.

Operations

Autocomplete

Operations

Loyalty Programs

Operations