openapi: 3.2.0 info: title: Oracle Hospitality Hotels API contact: email: hospitality_apis_ww_grp@oracle.com license: name: UPL url: https://opensource.org/licenses/upl termsOfService: https://www.oracle.com/legal/terms.html version: '1.0' description: 'Operations tagged Hotels across 2 of this provider''s published API definitions: oracle-hospitality-property-v1-ecommtokenization.json, oracle-hospitality-property-v1-tokenexchange.json. Each path carries the servers of the definition it was published in.' servers: - url: /eComm/eToken/v1 - url: /tokenExchange/v1 tags: - name: Hotels description: Operations related to e-commerce tokenization for OPERA Cloud Properties. paths: /hotels/{hotelCode}/tokenizations: post: operationId: postEcommTokenization summary: Initiate e-commerce tokenization transaction description: 'Use this operation to initiate the processing of a tokenization transaction via e-commerce token form.

OperationId:postEcommTokenization

' tags: - Hotels parameters: - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/hotelCode' responses: '200': description: Successful tokenization transaction creation content: application/json: schema: $ref: '#/components/schemas/EcommTokenizationResponse' '400': description: The request received was invalid content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: There are validation errors for the object in the request o:errorCode: OPICS-BAD_REQUEST o:errorDetails: - o:errorCode: OPICS-0300 o:errorPath: locale title: locale value is not allowed type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 status: 400 title: Bad Request type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' '503': $ref: '#/components/responses/503' requestBody: content: application/json: schema: $ref: '#/components/schemas/EcommTokenizationRequest' required: true servers: - url: /eComm/eToken/v1 /hotels/{hotelCode}/tokenizations/{transactionId}: get: operationId: getEcommTokenizationDetails summary: Fetch e-commerce tokenization transaction status and details description: "Use this operation to fetch the final status and details of a \ntokenization transaction once it has been processed by e-commerce token form.\n

OperationId:getEcommTokenizationDetails

" tags: - Hotels parameters: - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/hotelCode' - $ref: '#/components/parameters/transactionId' responses: '200': description: Response message containing the transaction status and details. content: application/json: schema: $ref: '#/components/schemas/EcommTokenizationStatusResponse' '400': description: The request received was invalid content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: There are validation errors for the object in the request o:errorCode: OPICS-BAD_REQUEST o:errorDetails: - o:errorCode: OPICS-0300 o:errorPath: hotelId title: Invalid Hotel Code type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 status: 400 title: Bad Request type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' '503': $ref: '#/components/responses/503' servers: - url: /eComm/eToken/v1 /hotels/{hotelCode}/tokens: post: parameters: - description: OPERA Hotel Code in: path name: hotelCode required: true x-example: Hotel123 schema: type: string - $ref: '#/components/parameters/authKey_2' - $ref: '#/components/parameters/x-app-key' responses: '200': description: Successful Operation content: application/json: schema: description: TokenResponse object properties: cardType: description: OPERA Card Type example: VA type: string expiryDate: description: Expiration Date, YYMM format example: '2312' type: string pan: description: Masked Primary Account Number (PAN) example: XXXXXXXXXXXX4444 type: string token: description: Card Token example: '483204890324827' type: string required: - cardType - expiryDate - pan - token type: object '400': description: The request received was invalid content: application/json: schema: description: Problem Details for HTTP APIs example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: There are validation errors for the object in the request o:errorCode: OPICS-BAD_REQUEST o:errorDetails: - o:errorCode: OPICS-0300 o:errorPath: expiryDate title: expiryDate must be in the form of YYMM type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 status: 400 title: Bad Request type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction example: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 type: string detail: description: Detailed error message example: There are validation errors for the object type: string o:errorCode: description: Application specific error code example: OPICS-BAD_REQUEST type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail_2' type: array o:errorPath: description: JSON path to indicate where the error occurs example: cards[1] type: string status: description: HTTP status code example: 400 format: int32 type: integer title: description: Summary error message example: Bad Request type: string type: description: HTTP error code page example: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 type: string required: - title - type type: object '401': description: Client request lacks valid authentication credentials for the requested resource '403': description: Client request lacks permissions for the requested resource '404': description: The target resouce was not found '405': description: Method not allowed for the target resource '406': description: The Server cannot produce a response matching the values in the request's content headers '415': description: The server refuses to accept the request because the payload is in an unsupported format '422': description: The server received a decline response from the upstream server it accessed in attempting to complete the request content: application/json: schema: description: Problem Details for HTTP APIs example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: 'Transaction declined by Payment Service Provider. Decline code: 05 - Do Not Honor' o:errorCode: OPICS-0204 status: 422 title: Unprocessable Entity type: https://webconcepts.info/specs/IETF/RFC/4918 properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction example: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 type: string detail: description: Detailed error message example: There are validation errors for the object type: string o:errorCode: description: Application specific error code example: OPICS-BAD_REQUEST type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail_2' type: array o:errorPath: description: JSON path to indicate where the error occurs example: cards[1] type: string status: description: HTTP status code example: 400 format: int32 type: integer title: description: Summary error message example: Bad Request type: string type: description: HTTP error code page example: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 type: string required: - title - type type: object '500': description: The server encountered an internal error or misconfiguration and was unable to complete the request content: application/json: schema: description: Problem Details for HTTP APIs example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: The server encountered an internal error or misconfiguration and was unable to complete your request o:errorCode: OPICS-INTERNAL_SERVER_ERROR status: 500 title: Internal Server Error type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1 properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction example: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 type: string detail: description: Detailed error message example: There are validation errors for the object type: string o:errorCode: description: Application specific error code example: OPICS-BAD_REQUEST type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail_2' type: array o:errorPath: description: JSON path to indicate where the error occurs example: cards[1] type: string status: description: HTTP status code example: 400 format: int32 type: integer title: description: Summary error message example: Bad Request type: string type: description: HTTP error code page example: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 type: string required: - title - type type: object '502': description: The server received an invalid response from the upstream server it accessed in attempting to complete the request '503': description: The server is not ready to handle the request '504': description: The server did not receive a timely response from an upstream server it needed to access in order to complete the request content: application/json: schema: description: Problem Details for HTTP APIs example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: The server did not receive a timely response from an upstream server it needed to access in order to complete your request o:errorCode: OPICS-0100 status: 504 title: Gateway Timeout type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.5 properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction example: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 type: string detail: description: Detailed error message example: There are validation errors for the object type: string o:errorCode: description: Application specific error code example: OPICS-BAD_REQUEST type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail_2' type: array o:errorPath: description: JSON path to indicate where the error occurs example: cards[1] type: string status: description: HTTP status code example: 400 format: int32 type: integer title: description: Summary error message example: Bad Request type: string type: description: HTTP error code page example: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 type: string required: - title - type type: object security: - jwt: [] tags: - Hotels description: Converts Primary Account Number (PAN) into Token issued by Payment Service Providers operationId: openPaymentTokenExchange summary: Card Tokenization requestBody: content: application/json: schema: description: JSON object containing the card information properties: expiryDate: description: Expiration Date, YYMM format example: '2312' pattern: ^[0-9]{2}(0[1-9]|1[0-2])$ type: string pan: description: Primary Account Number (PAN) example: '1111222233334444' pattern: ^[0-9]{8,19}$ type: string required: - expiryDate - pan type: object description: TokenRequest object required: true servers: - url: /tokenExchange/v1 components: responses: '406': description: The Server cannot produce a response matching the the values in the request's content headers '503': description: The server is not ready to handle the request content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: Server is temporarily unavailable or busy o:errorCode: OPICS-SERVICE_UNAVAILABLE status: 503 title: Service Unavailable type: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4 '404': description: The target resouce was not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: title: Not Found type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5 correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: Resource not found o:errorCode: OPICS-NOT_FOUND status: 404 '500': description: The server encountered an internal error or misconfiguration and was unable to complete the request content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: The server encountered an internal error or misconfiguration and was unable to complete your request o:errorCode: OPICS-INTERNAL_SERVER_ERROR status: 500 title: Internal Server Error type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1 '401': description: Authentication header was not present in request '403': description: The Bearer Token is invalid/expired '415': description: The server refuses to accept the request because the payload format is in an unsupported format '405': description: Method not allowed for the target resource content: application/json: schema: $ref: '#/components/schemas/ProblemDetail' example: correlationId: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 detail: Method not allowed for the resource o:errorCode: OPICS-METHOD_NOT_ALLOWED status: 405 title: Method Not Allowed type: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6 schemas: EcommTokenizationRequest: type: object required: - originDomain - locale properties: originDomain: type: string pattern: ^https://[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\:\d{2,5})?$ maxLength: 600 description: The domain of the website that will load the token form. Must be a valid HTTPS domain. example: https://www.website-domain-example.com locale: type: string enum: - ar - da - de - en - es - fi - fr - it - ja - ko - nl - 'no' - pt-BR - pt - ru - sv - th - tr - zh-CN - zh-TW description: The language to be used in token form. example: en ProblemDetail: description: Problem Details for HTTP APIs properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction type: string detail: description: Detailed error message type: string o:errorCode: description: Application specific error code type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail' type: array o:errorPath: description: JSON path to indicate where the error occurs type: string status: description: HTTP status code format: int32 type: integer title: description: Summary error message type: string type: description: HTTP error code page type: string required: - title - type type: object EcommTokenizationStatusResponse: type: object required: - status properties: status: type: string enum: - INITIATED - CANCELED_BY_USER - APPROVED - DECLINED - ERROR description: The transaction status example: APPROVED tokenInfo: $ref: '#/components/schemas/TokenInfo' declineDetail: type: string description: Message containing the details of a transaction that was declined. Present when status is DECLINED. example: Declined by Payment Service Provider errorDetail: type: string description: Message containing the details of a transaction that failed to be processed. Present when status is ERROR. example: Payment Service Provider was unavailable EcommTokenizationResponse: type: object required: - tokenPageUrl - transactionId - sessionId - sessionToken - expiresAt properties: tokenPageUrl: type: string format: uri description: The URL of the ECommerce token form for completing the tokenization transaction. example: https://opi-devcorp.oraclehospitality.us-phoenix-1.ocs.oc-test.com/tokenizationPage/widget.html?lang=en transactionId: type: string description: ECommerce Transaction Identifier example: 5ad81936-1cb9-4a41-a52f-2f8a08ef520c sessionId: type: string description: ECommerce Session Identifier example: c52a1cf9-acc8-4c81-9c03-448bf206fbd2 sessionToken: type: string description: ECommerce Session Token example: eyJraWQiOiIzNmRhZTU4Yi05ZDg..3MiOiJodHRwcz expiresAt: type: string description: Session expiration date in ISO8601 format example: '2025-11-06T13:44:28-05:00' TokenInfo: type: object description: Token information. Present when status is APPROVED. required: - cardType - expiryDate - pan - token properties: cardType: type: string description: OPERA Card Type maxLength: 16 minLength: 2 example: VA expiryDate: type: string description: Expiration Date, YYMM format example: '3012' pan: type: string description: Masked Primary Account Number (PAN) maxLength: 19 minLength: 13 example: XXXXXXXXXXXX4444 token: type: string description: Card Token maxLength: 42 example: '483204890324827' ProblemDetail_2: description: Problem Details for HTTP APIs properties: correlationId: description: Unique identifier value that is attached to the request that allows reference to a particular transaction example: MzdhODNkZmMtNzk5YS00OTYxLTg3YTMtM2ZkYTE4YjJlMzc0 type: string detail: description: Detailed error message example: There are validation errors for the object type: string o:errorCode: description: Application specific error code example: OPICS-BAD_REQUEST type: string o:errorDetails: description: Drill down to the details items: $ref: '#/components/schemas/ProblemDetail_2' type: array o:errorPath: description: JSON path to indicate where the error occurs example: cards[1] type: string status: description: HTTP status code example: 400 format: int32 type: integer title: description: Summary error message example: Bad Request type: string type: description: HTTP error code page example: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 type: string required: - title - type type: object parameters: authKey: name: Authorization description: Bearer token in: header required: true schema: type: string transactionId: name: transactionId description: ECommerce Transaction Identifier in: path required: true schema: type: string maxLength: 36 minLength: 36 x-app-key: name: x-app-key description: Client or Partner Application Key in: header required: true schema: type: string pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$ hotelCode: name: hotelCode description: OPERA Hotel Code in: path required: true schema: type: string maxLength: 50 minLength: 1 authKey_2: name: authorization description: Bearer token that needs to be passed which is generated post user authentication in: header required: true schema: type: string securitySchemes: jwt: in: header name: Authorization type: apiKey externalDocs: description: Find out more about Oracle Hospitality url: https://docs.oracle.com/en/industries/hospitality/integration_platforms.html x-refined-from: - oracle-hospitality-property-v1-ecommtokenization.json - oracle-hospitality-property-v1-tokenexchange.json