# Modify Book Book[cancel] new[existing] legs into an existing pnr using the selected rate option from airModifySearch operation. Endpoint: POST /v2/air/modify-book Version: v2 Security: Bearer ## Request fields (application/json): - `bookingId` (string, required) Booking id returned in successful response of air-revalidate-itin api call in the booking flow. Example: "ChBlMTFmOTVkZTcwZmZjMmI2EhAwZjVkNDhhNGJjNWExZTMw" - `tripData` (object, required) Trip data to book a PNR. Example: {"tripId":{"id":"9527251668"}} - `tripData.approverEmail` (string) Email address of the approver who should receives approval email for the current booking. - `tripData.approverName` (string) Name of the approver. - `tripData.hardApprovalRequired` (boolean) Whether the current booking requires hard approval or soft approval. This flag should be used only if valid approver is present. - `tripData.outOfPolicy` (boolean) If the given booking is out of policy. - `tripData.policyId` (string) Policy Id for which violation is done. - `tripData.policyVersion` (integer) Version of policy. - `tripData.tripId` (object, required) Id of the trip. Example: {"id":"9527251668"} - `tripData.tripId.id` (string, required) Id. Example: "9527251668" - `skipTicketing` (boolean) If this is true, the PNR is not set up for ticketing. Example: true - `postPaymentVerificationInfo` (any) - `customFieldV3Responses` (array) Custom field responses for the booking. - `customFieldV3Responses.fieldId` (string, required) Custom field id - `customFieldV3Responses.fieldName` (string) Name of the custom field - `customFieldV3Responses.armId` (string, required) Arm id which is applicable - `customFieldV3Responses.includeLocations` (array) Enum: "BOOKING_CONFIRMATION_EMAILS", "APPROVAL_EMAILS", "COMPANY_REPORTS", "CONSOLIDATED_ITINERARY_EMAILS" - `customFieldV3Responses.selectedOptions` (array, required) The list of options that are selected by user or auto populated. - `customFieldV3Responses.selectedOptions.name` (string, required) Value of the selection - `customFieldV3Responses.selectedOptions.description` (string) Description of the selection - `customFieldV3Responses.selectedOptions.additionalUserInput` (string) Additional user input - `customFieldV3Responses.selectedOptions.additionalInfos` (array) Actual values of the additional infos - `customFieldV3Responses.selectedOptions.additionalInfoConfigs` (array) Additional info configs for the selected option - `waiveOffInfo` (object) Waive off info. - `waiveOffInfo.waiveOffInfoPerModules` (array) Waive off info per module. - `waiveOffInfo.waiveOffInfoPerModules.moduleId` (string) Module id Enum: "BOOKING", "AGENT" - `waiveOffInfo.waiveOffInfoPerModules.waiveOffFeeReason` (object) Fee waive off reason info. - `waiveOffInfo.waiveOffInfoPerModules.waiveOffFeeReason.reasonCode` (string) Fee waive off reason code. Example: "WA05" - `waiveOffInfo.waiveOffInfoPerModules.waiveOffFeeReason.reason` (string) Fee waive off reason description. Example: "Customer goodwill" ## Response 200 fields (application/json): - `pnrNumber` (string) Example: "AXKJDF" - `pnrStatus` (string) Status of PNR Enum: "UNKNOWN", "INITIATED", "CANCELLED", "CONFIRMED", "GROUP_BOOKING_ON_REQUEST", "WAITLISTED", "PENDING", "AIRLINE_UPGRADE", "WAITLIST_CONFIRMED", "BOOKING_DENIED_CONTACT_SUPPORT", "NO_SHOW", "CONTACT_SUPPORT", "STATUS_CHANGED_CONTACT_SUPPORT", "SCHEDULE_CHANGE", "SEGMENT_REQUEST", "SCHEDULE_CHANGE_WAITLISTED_BOOKING", "REQUEST_PENDING", "WAITLISTED_NOT_CONFIRMED", "SCHEDULE_CHANGE_NOT_CONFIRMED", "SCHEDULE_CHANGE_PENDING_STATUS", "MIS_CONNECTION", "REQUESTED", "TICKETED", "VOIDED", "CANCELLED_BY_VENDOR", "CANCELLATION_IN_PROGRESS", "REINSTATED", "BOOKING_ON_HOLD", "AIRLINE_CONTROL", "MODIFIED", "PAYMENT_DECLINED", "INOPERATIVE", "UNCONFIRMED" - `pnrId` (string) Spotnana PNR ID Example: "1213124111" - `paymentVerificationInfo` (any) ## Response 401 fields (application/json): - `debugIdentifier` (string) Link to debug the error internally. - `errorMessages` (array) - `errorMessages.errorCode` (string) Error code to identify the specific errors. - `errorMessages.message` (string) Message containing details of error. - `errorMessages.errorParameters` (array) Error message parameters. - `errorMessages.errorParameters.name` (string) Parameter name - `errorMessages.errorParameters.value` (string) Parameter value - `errorMessages.errorDetail` (string) More details about the error. ## Response 403 fields (application/json): - `debugIdentifier` (string) Link to debug the error internally. - `errorMessages` (array) - `errorMessages.errorCode` (string) Error code to identify the specific errors. - `errorMessages.message` (string) Message containing details of error. - `errorMessages.errorParameters` (array) Error message parameters. - `errorMessages.errorParameters.name` (string) Parameter name - `errorMessages.errorParameters.value` (string) Parameter value - `errorMessages.errorDetail` (string) More details about the error. ## Response 404 fields (application/json): - `debugIdentifier` (string) Link to debug the error internally. - `errorMessages` (array) - `errorMessages.errorCode` (string) Error code to identify the specific errors. - `errorMessages.message` (string) Message containing details of error. - `errorMessages.errorParameters` (array) Error message parameters. - `errorMessages.errorParameters.name` (string) Parameter name - `errorMessages.errorParameters.value` (string) Parameter value - `errorMessages.errorDetail` (string) More details about the error.