info: title: Convenient Checkout Api contact: name: Karthik S. Balaram email: balaramk@optum.com version: v1 description: Convenient Checkout Gateway API - Prod termsOfService: >- https://legacy.optumdeveloper.com/content/odv-optumdev/optum-developer/en/legal-terms/terms-of-use.html x-shortDescription: Convenient Checkout Gateway API paths: /sessions: post: tags: - Merchant summary: Draft - Create session for initializing the convenient checkout widget description: >- This api is used for creating the session id that is required to load the convenient checkout widget. Refer [docs]( /docs/developers/convenient-checkout-ui/Integration-Options/Embedded-Experience/ ) for widget setup. When Customer information is not present or insufficient, the checkout will be a guest experience. security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant parameters: - in: header description: >- Merchant Identifier [More info]( /docs/developers/API-Terminology/#merchant-id ) name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - in: header description: Specify the Source System Identifier name: X-source schema: type: string format: string required: false requestBody: content: application/json: schema: $ref: '#/components/schemas/SessionRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SessionResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResource' /sessions/{sessionId}: get: tags: - Merchant summary: Draft - Get session details for the convenient checkout widget description: >- This api is used for getting the session details that is required to get the status of convenient checkout widget. Refer [docs]( /docs/developers/convenient-checkout-ui/Integration-Options/Embedded-Experience/ ) for widget setup. When Customer information is not present or insufficient, the checkout will be a guest experience. security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant parameters: - in: header description: >- Merchant Identifier [More info]( /docs/developers/API-Terminology/#merchant-id ) name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - in: path name: sessionId schema: type: string format: uuid required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResourceMerchantSessionResponse' '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourceMerchantSessionResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '410': description: Gone content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResource' /payments: get: tags: - Merchant summary: Draft - Get Payment by Merchant Transaction Id security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResourceWithErrorDetails' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: >- Internal Server Error (If you received a 500, this indicates a non-recoverable issue happened and that this payment has failed) parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - in: query name: merchantTransactionId schema: type: string maxLength: 50 description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. required: true operationId: getPaymentByMerchantTransactionId post: tags: - Merchant summary: Draft - Create Payment security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: >- Internal Server Error (If you received a 500, this indicates a non-recoverable issue happened and that this payment has failed) parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true operationId: createPayment requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentRequest' required: true /payments/{paymentId}: get: tags: - Merchant summary: Draft - Get Payment by PaymentId security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: >- Internal Server Error (If you received a 500, this indicates a non-recoverable issue happened and that this payment has failed) parameters: - in: path name: paymentId schema: type: string format: uuid required: true - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true operationId: getPayment /payments/{paymentId}/capture: patch: tags: - Merchant summary: Capture partial or full amount in Auth operations by PaymentId operationId: capturePayment parameters: - name: X-Merchant-Id description: >- Merchant Identifier [More info]( /docs/developers/API-Terminology/#merchant-id ) in: header required: true schema: type: string format: uuid - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - name: paymentId description: PaymentId for the authorized payment in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CaptureRequest' responses: '202': description: ACCEPTED content: '*/*': schema: $ref: '#/components/schemas/ResourcePaymentResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' /payments/{paymentId}/cancel: patch: tags: - Merchant summary: Cancel payment by PaymentId operationId: cancelPayment parameters: - name: X-Merchant-Id description: >- Merchant Identifier [More info]( /docs/developers/API-Terminology/#merchant-id ) in: header required: true schema: type: string format: uuid - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - name: paymentId description: PaymentId for the payment in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CancelRequest' responses: '202': description: ACCEPTED content: '*/*': schema: $ref: '#/components/schemas/ResourcePaymentResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' /payment-methods/search: post: tags: - Merchant-Wallet-Management security: - gateway: - financial/commerce/checkout:merchant-wallet-management - financial/commerce/nonprodcheckout:merchant-wallet-management - financial/commerce/checkout:user - financial/commerce/nonprodcheckout:user summary: Find Payment Methods for customer parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentMethodSearchRequest' responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentMethod' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResource' /payment-methods/{payment-method-id}: get: tags: - Merchant-Wallet-Management security: - gateway: - financial/commerce/checkout:merchant-wallet-management - financial/commerce/nonprodcheckout:merchant-wallet-management - financial/commerce/checkout:user - financial/commerce/nonprodcheckout:user summary: Get details of Payment Method by payment-method-id parameters: - in: path name: payment-method-id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiResponsePaymentMethod' description: OK '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: tags: - Merchant-Wallet-Management security: - gateway: - financial/commerce/checkout:merchant-wallet-management - financial/commerce/nonprodcheckout:merchant-wallet-management - financial/commerce/checkout:user - financial/commerce/nonprodcheckout:user summary: Update Payment Method by payment-method-id parameters: - in: path name: payment-method-id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true requestBody: content: application/json: schema: $ref: '#/components/schemas/WalletManagementPaymentMethodUpdateRequest' responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiResponsePaymentMethod' description: OK '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ApiResponsePaymentMethod' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: tags: - Merchant-Wallet-Management security: - gateway: - financial/commerce/checkout:merchant-wallet-management - financial/commerce/nonprodcheckout:merchant-wallet-management - financial/commerce/checkout:user - financial/commerce/nonprodcheckout:user summary: Delete Payment Method by payment-method-id parameters: - in: path name: payment-method-id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - in: header name: Content-Type schema: type: string enum: - application/json required: true requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/Agent' responses: '204': description: Deleted successfully. '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResource' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResource' /refunds: post: tags: - Merchant summary: Create Refund security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourceRefundResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Internal Server Error parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true operationId: createRefund requestBody: content: application/json: schema: $ref: '#/components/schemas/RefundRequest' required: true description: >- Refund request can only processed either by paymentId or by valid paymentMethodId associated with customer. /refunds/{refund-id}: get: tags: - Merchant security: - gateway: - financial/commerce/checkout:merchant - financial/commerce/nonprodcheckout:merchant summary: Get Refund by RefundId operationId: getRefund parameters: - name: X-Merchant-Id in: header required: true schema: type: string format: uuid - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true - name: refund-id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: '*/*': schema: $ref: '#/components/schemas/ResourceRefundResponse' '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourceRefundResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Internal Server Error /token/setup-payment-methods: post: tags: - Merchant - PCI summary: Draft - Create Payment Method security: - gateway: - financial/commerce/nonprodcheckout:merchant-pci - financial/commerce/checkout:merchant-pci parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true operationId: setupPaymentMethod requestBody: content: application/json: schema: $ref: '#/components/schemas/SetupPaymentMethodRequest' required: true responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourceSetupPaymentMethodResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Internal Server Error /token/setup-payment-methods/{setupPaymentMethodId}: get: tags: - Merchant - PCI summary: Draft - Get Payment Method security: - gateway: - financial/commerce/nonprodcheckout:merchant-pci - financial/commerce/checkout:merchant-pci parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true responses: '200': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourceSetupPaymentMethodResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Internal Server Error /token/payments: post: tags: - Merchant - PCI summary: Draft - Create Payment security: - gateway: - financial/commerce/nonprodcheckout:merchant-pci - financial/commerce/checkout:merchant-pci parameters: - in: header name: X-Merchant-Id schema: type: string format: uuid required: true - in: header description: Specify the env value, Only required for Non-Prod name: X-Upstream-Env schema: type: string format: string enum: - dev - stage - test required: true operationId: createPaymentWithToken requestBody: content: application/json: schema: $ref: '#/components/schemas/TokenPaymentRequest' required: true responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ResourcePaymentResponse' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Bad Request '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorAuthorizationResource' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResource' description: Internal Server Error x-slug: checkout openapi: 3.0.1 servers: - url: https://api-stg.uhg.com/api/financial/commerce/nonprodcheckout/v1 description: Stage CCG Api Server - url: https://api.uhg.com/api/financial/commerce/checkout/v1 description: CCG Api Server security: - gateway: - financial/commerce/checkout:all - financial/commerce/nonprodcheckout:all x-package: package: financial subpackage: commerce components: schemas: ErrorAuthorizationResource: type: object properties: message: type: string WalletManagementPaymentMethodUpdateRequest: type: object properties: isDefault: type: boolean nickname: type: string maxLength: 30 description: >- can only contain letters and numbers (cannot contain card number applicable only for cards) card: type: object deprecated: true description: Deprecated in favour of paymentMethodDetails. properties: expiryYear: type: integer format: int32 description: expiry year cannot be past and cannot be greater than 50yrs expiryMonth: type: integer format: int32 nameOnCard: type: string description: cannot contain card number required: true zipCode: type: string description: allowed only 5 digits pattern: ^\d{5}$ example: '99950' manufacturerCard: description: >- Only Agents can flag certain cards as manufacturer cards. Cards flagged as manufacturer cards cannot be default card. type: boolean agent: $ref: '#/components/schemas/Agent' paymentMethodDetails: oneOf: - $ref: '#/components/schemas/UpdateCard' - $ref: '#/components/schemas/UpdateUSBankAccountDetails' ErrorResponse: type: object properties: error: type: string status: type: integer format: int32 ApiResponsePaymentMethod: type: object properties: url: type: string data: $ref: '#/components/schemas/PaymentMethod' Card: type: object properties: type: type: string enum: - CARD last4: type: string status: enum: - ACTIVE - EXPIRED type: string readOnly: true cardBrand: enum: - VISA - AMEX - DINERS - DISCOVER - JCB - MASTERCARD - UNIONPAY - UNKNOWN type: string expiryYear: type: integer format: int64 description: expiry year cannot be past and cannot be greater than 50yrs nameOnCard: type: string description: cannot contain card number required: true expiryMonth: type: integer format: int64 zipCode: type: string description: allowed only 5 digits pattern: ^\d{5}$ example: '99950' manufacturerCard: type: boolean DeprecatedCard: deprecated: true description: Deprecated in favour of paymentMethodDetails. type: object displayName: false properties: type: type: string enum: - CARD last4: type: string status: enum: - ACTIVE - EXPIRED type: string readOnly: true cardBrand: enum: - VISA - AMEX - DINERS - DISCOVER - JCB - MASTERCARD - UNIONPAY - UNKNOWN type: string expiryYear: type: integer format: int64 description: expiry year cannot be past and cannot be greater than 50yrs nameOnCard: type: string expiryMonth: type: integer format: int64 zipCode: type: string description: allowed only 5 digits pattern: ^\d{5}$ example: '99950' manufacturerCard: type: boolean UpdateCard: type: object properties: type: type: string enum: - CARD last4: type: string status: enum: - ACTIVE - EXPIRED type: string readOnly: true cardBrand: enum: - VISA - AMEX - DINERS - DISCOVER - JCB - MASTERCARD - UNIONPAY - UNKNOWN type: string expiryYear: type: integer format: int64 description: expiry year cannot be past and cannot be greater than 50yrs nameOnCard: type: string description: cannot contain card number required: true expiryMonth: type: integer format: int64 zipCode: type: string description: allowed only 5 digits pattern: ^\d{5}$ example: '99950' manufacturerCard: type: boolean ErrorResource: type: object properties: title: type: string detail: type: string status: type: integer format: int32 ErrorResourceWithErrorDetails: type: object properties: title: type: string detail: type: string status: type: integer format: int32 errorDetails: $ref: '#/components/schemas/ErrorDetails' ErrorDetails: type: object properties: code: type: string message: type: string declineCode: type: string networkDeclineCode: type: string networkAdviceCode: type: string PaymentMethod: type: object properties: id: type: string format: uuid card: $ref: '#/components/schemas/DeprecatedCard' default: type: boolean paymentMethodType: enum: - CARD - BANK_ACCOUNT type: string nickname: type: string maxLength: 30 description: >- can only contain letters and numbers (cannot contain card number applicable only for cards) paymentMethodDetails: oneOf: - $ref: '#/components/schemas/Card' - $ref: '#/components/schemas/USBankAccountDetails' AbstractPaymentMethodDetails: type: object properties: type: type: string discriminator: propertyName: type USBankAccountDetails: type: object allOf: - $ref: '#/components/schemas/AbstractPaymentMethodDetails' - type: object properties: type: type: string enum: - BANK_ACCOUNT accountHolderType: type: string accountType: type: string status: enum: - ACTIVE - INVALIDATED type: string readOnly: true bankName: type: string last4: type: string routingNumber: type: string nameOnAccount: type: string UpdateUSBankAccountDetails: type: object allOf: - $ref: '#/components/schemas/AbstractPaymentMethodDetails' - type: object properties: type: type: string enum: - BANK_ACCOUNT nameOnAccount: type: string accountType: type: string enum: - checking - savings PaymentRequest: type: object required: - amount - paymentMethodId - merchantTransactionId properties: amount: type: integer format: int64 description: Amount in Cents (United States) minimum: 1 maximum: 100000000 customer: $ref: '#/components/schemas/Customer' paymentDetails: $ref: '#/components/schemas/IIASPaymentDetails' metadata: type: object additionalProperties: type: string description: >- Payment metadata key value pairs. Example - Order Id, Invoice date etc. Max 20 metadata entries. Max key length is 40. Max value length is 100. paymentType: type: string deprecated: true enum: - SALE - PRE_AUTH authorizeCard: description: >- When authorizeCard is set as true, the credit card will be authorized for the amount supplied. Later we need to call the Capture API to complete the transaction. The authorization is valid only for 7 days. Applicable payment method types = [CARD] type: boolean default: false partialAuthorization: description: >- When true, card issuers will consider the payment for partial authorization. This flag shall be provided in combination with authorizeCard flag. Applicable payment method types = [CARD] type: boolean default: false paymentMethodId: type: string format: uuid description: >- Payment method Id of the saved card/bankAccount. To get the payment method Id refer [/payment-methods/search API](/api-reference/#tag/Merchant-Wallet-Management/paths/~1payment-methods~1search/post). paymentDescription: type: string maxLength: 100 description: >- Payment description that will be useful for user to identify the payment. merchantTransactionId: description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. type: string maxLength: 50 statementDescriptorSuffix: type: string description: >- Must contain a letter. Learn more about statement descriptors in [docs]( /docs/developers/API-Terminology/#statement-descriptors ). maxLength: 10 pattern: ^(?=.*[a-zA-Z])[a-zA-Z0-9 \-.]{0,10}$ agent: $ref: '#/components/schemas/Agent' consent: $ref: '#/components/schemas/Consent' authRequired: type: boolean PaymentResponse: type: object properties: id: type: string format: uuid amount: description: Amount requested for payment type: integer format: int64 authorizedAmount: description: >- Maximum amount approved for capture; Starting R27, pre-authorization and partial-authorization, should infer this field to consider authorized amount; Prior to R27, infer `amount` field; type: integer format: int64 capturedAmount: description: >- Amount immediately settled (or) successfully captured; All payments (sale, pre-authorization, partial-authorization) should infer this field for the final settled or captured amount; type: integer format: int64 description: type: string merchantTransactionId: description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. type: string maxLength: 50 merchantId: type: string format: uuid paymentType: type: string deprecated: true enum: - SALE - PRE_AUTH authorizeCard: type: boolean default: false partialAuthorization: description: >- When true, indicates the payment could have been partially authorized based on the card issuer and the maximum amount available for capture can be referred from `authorizedAmount` field. type: boolean default: false currencyCode: type: string customerId: type: string format: UUID status: description: >- The status of the payment. Note that INITIATED, PROCESSING, PENDING_FOR_CUSTOMER_CREATION, and PENDING_FOR_PAYMENT_METHOD_CREATION are deprecated and will be removed in future versions. Please use PENDING for all cases that previously used these statuses. type: string enum: - PENDING - INITIATED - PROCESSING - PENDING_FOR_CUSTOMER_CREATION - PENDING_FOR_PAYMENT_METHOD_CREATION - CANCEL_FAILED - PAYMENT_METHOD_FAILED - CAPTURE_INITIALIZED - CANCEL_INITIALIZED - CONFIRMATION_INITIALIZED - AUTH_REQUIRED - CONFIRMATION_REQUIRED - ACCEPTED - AUTHORIZED - COMPLETED - CANCELED - FAILED vendor: type: string enum: - STRIPE vendorPaymentId: type: string vendorPaymentSecret: type: string vendorMerchantId: type: string statementDescriptorSuffix: type: string paymentMethodId: type: string format: uuid paymentMethodType: type: string enum: - CARD - CARD_PRESENT - UNKNOWN - BANK_ACCOUNT checkoutId: type: string format: uuid metadata: type: object additionalProperties: type: string customer: $ref: '#/components/schemas/Customer' paymentCancellationReason: enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - ABANDONED type: string paymentCancellationMessage: type: string error: $ref: '#/components/schemas/ErrorResponse' paymentDetails: $ref: '#/components/schemas/IIASPaymentDetails' consent: $ref: '#/components/schemas/Consent' paymentMethod: $ref: '#/components/schemas/PaymentMethod' ResourcePaymentResponse: type: object properties: url: type: string data: $ref: '#/components/schemas/PaymentResponse' SessionResponse: type: object properties: url: type: string data: $ref: '#/components/schemas/SessionData' error: type: string SessionData: properties: sessionId: type: string description: Session Id that can be used to load the Convenient Checkout Widget format: uuid hostedUrl: type: string PaymentDetail: type: object description: payment details properties: merchantTransactionId: description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. type: string maxLength: 50 amount: description: Amount in Cents (United States) minimum: 1 maximum: 100000000 type: integer format: int64 paymentDetails: $ref: '#/components/schemas/IIASPaymentDetails' authorizeCard: description: >- When authorizeCard is set as true, the credit card will be authorized for the amount supplied. Later we need to call the Capture API to complete the transaction. The authorization is valid only for 7 days. type: boolean default: false partialAuthorization: description: >- When true, card issuers will consider the payment for partial authorization. This flag shall be provided in combination with authorizeCard flag. Applicable payment method types = [CARD] type: boolean default: false statementDescriptorSuffix: type: string description: >- Must contain a letter. Learn more about statement descriptors in [docs]( /docs/developers/API-Terminology/#statement-descriptors ). maxLength: 10 pattern: ^(?=.*[a-zA-Z])[a-zA-Z0-9 \-.]{0,10}$ paymentDescription: type: string maxLength: 100 description: >- Payment description that will be useful for user to identify the payment. metadata: type: object description: >- Payment metadata key value pairs. Example - Order Id, Invoice date etc. Max 20 metadata entries. Max key length is 40. Max value length is 100. additionalProperties: type: string Customer: type: object description: customer details properties: name: type: string deprecated: true firstName: type: string lastName: type: string email: type: string format: email ssnLastFour: type: string phoneNumber: $ref: '#/components/schemas/PhoneNumber' dateOfBirth: type: string format: date example: '2000-12-30' zip5: type: string pattern: ^\d{5}$ example: '99950' hsid: type: string format: uuid description: >- HealthSafeId of the customer. [More info](https://console.hcp.uhg.com/api-catalog/apis/uhgrg-69c07db0-9b7b-4c81-9f50-580d26097a78-ns%2Fstargate.api.v1%2Findividuals-iqdh#tag/hs-id) enterpriseId: type: string description: >- EnterpriseId of the customer. [More info](https://console.hcp.uhg.com/api-catalog/apis/uhgrg-69c07db0-9b7b-4c81-9f50-580d26097a78-ns%2Fstargate.api.v1%2Findividuals-iqdh#tag/enterprise-id) metadata: description: >- Merchant specific customer identifiers as key value pairs. These could be internal customer ids. Example MemberId, CustomerId etc. Max 20 metadata entries. Max key length is 40. Max value length is 100. type: object additionalProperties: type: string SessionPaymentMethod: type: object properties: id: type: string format: uuid description: >- Payment method Id of the card/bankAccount we want to retrieved. This field should not be empty if mode is *__PAYMENT_METHOD_DISPLAY__*. To get the payment method Id refer [/payment-methods/search API](/api-reference/#tag/Merchant-Wallet-Management/paths/~1payment-methods~1search/post). Appearance: type: object description: >- Custom Styling [More info](/docs/developers/convenient-checkout-ui/Theming-and-Styling) properties: font: $ref: '#/components/schemas/FontDetails' palette: $ref: '#/components/schemas/PaletteDetails' visibility: $ref: '#/components/schemas/Visibility' border: $ref: '#/components/schemas/Border' height: $ref: '#/components/schemas/Height' merchantLogo: $ref: '#/components/schemas/MerchantLogo' FontDetails: type: object description: Font config properties: fontFamily: type: string example: Dosis, 'Optum Sans' description: >- Prioritized list of one or more custom and fallback font family names. This field is `required` when `fontSources` is provided fontSources: type: array items: $ref: '#/components/schemas/FontSources' FontSources: type: object description: Specifies a custom font that can be loaded from remote server. properties: cssSrc: type: string description: >- Link to custom font. Supports only [google font](https://fonts.google.com/) example: >- https://fonts.googleapis.com/css2?family=Dosis:wght@300;700&display=swap src: type: string description: Link to merchant owned custom font example: >- url('https://walletprod.healthsafepay.com/wallet/assets/fonts/OptumSans-Regular.woff2') family: type: string description: >- Specifies a name that will be used as the font face value for font referenced in `appearance.font.fontSources.src`. example: Optum Sans style: type: string description: >- font style that will tied to the font face value referenced in `appearance.font.fontSources.src` enum: - normal - italic - oblique weight: description: >- font weight that will tied to the font face value referenced in `appearance.font.fontSources.src` type: string enum: - 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 example: '400' PaletteDetails: type: object description: Color details for the UI elements properties: primary: $ref: '#/components/schemas/PaletteConfig' secondary: $ref: '#/components/schemas/PaletteConfig' PaletteConfig: type: object properties: main: description: Default - Background color of the element type: string example: '#110022' light: description: Light Theme - Background color of the element type: string example: '#808080' dark: description: Dark Theme - Background color of the element type: string example: '#4f1919' contrastText: description: Text Color of the element type: string example: '#ff0022' Visibility: type: object properties: headerLogo: description: >- If `headerLogo` is false then the logo will be hidden in the header. **Note: If all header elements are hidden then the header will be hidden as well.** `header element` type: boolean default: true Border: type: object properties: alertBoxBorderRadius: description: >- Should the alertBoxBorderRadius parameter be assigned a custom value (e.g., 8px), this will be utilized as the border-radius for the Alert Notification container. Default `border-radius` of alert notification container is set at 12px. type: string buttonBorderRadius: description: >- Should the buttonBorderRadius parameter be assigned a custom value (e.g., 10px), this will be utilized as the border-radius for the GooglePay/ApplePay buttons. Default `border-radius` of GooglePay/ApplePay buttons is set at 8px. type: string Height: type: object properties: button: description: >- Should the button parameter be assigned a custom value (e.g., 50), this will be utilized as the height for the GooglePay/ApplePay buttons. Default `height` of GooglePay/ApplePay buttons is set at 48. The allowed range is from 40 to 55, if outside this range session creation will fail. type: integer minimum: 40 maximum: 55 MerchantLogo: type: string description: URL pointing to the logo to be displayed in the email templates example: >- https://www.optum.com/content/dam/optum4/images/logos/optum-logo-ora-rgb1.svg SessionConfig: type: object properties: modes: type: array items: enum: - PAYMENT - PAYMENT_WITH_WALLET - PAYMENT_METHOD_ENTRY - WALLET - PAYMENT_METHOD_SELECT - PAYMENT_METHOD_DISPLAY description: > *Defaults to __PAYMENT__ for guest* \ *Defaults to __PAYMENT_WITH_WALLET__ for customer* \ The supported modes are explained here [Widget Capabilities](https://docs.healthsafepay.com/docs/developers/convenient-checkout-ui/widget-capabilities/) paymentMethodChannel: $ref: '#/components/schemas/PaymentMethodChannel' privacyPolicyUrl: type: string description: Privacy Policy URL senderEmailAddress: type: string description: >- used for populating email's `from` field when sending email; Validated against merchant configured SenderEmailAddresses, failing which, defaults to no-reply@ccg.optum.com options: type: object description: options properties: saveDisabled: description: > if saveDisabled is true, this will hide save payment check box from Widget. Not supported Modes are below | Mode | saveDisabled | ResponseCode | | --------------------- |--------------|--------------| | `PAYMENT_WITH_WALLET` | true | 400 | | `PAYMENT_METHOD_ENTRY` | true | 400 | | `PAYMENT_METHOD_DISPLAY` | true | 400 | | `PAYMENT_METHOD_SELECT` | true | 400 | | `WALLET` | true | 400 | type: boolean default: false preferredLanguage: items: enum: - en - es description: > This field is optional and will automatically default to English ("*__en__*") if left null, blank, or if any languages other than "*__en__*" or "*__es__*" are specified in the request. Supported Languages are below | Code | Language | | ------|----------| | `en` | ENGLISH | | `es` | SPANISH | type: string default: en PaymentMethodChannel: type: object properties: card: type: array items: enum: - TERMINAL - TEXT - EMAIL - WEBFORM - GOOGLE_PAY - APPLE_PAY - TELEPHONIC_ENTRY bankAccount: type: array items: enum: - TERMINAL - TEXT - EMAIL - WEBFORM PaymentMethodSearchRequest: type: object properties: customer: $ref: '#/components/schemas/Customer' SessionRequest: type: object properties: payment: $ref: '#/components/schemas/PaymentDetail' customer: $ref: '#/components/schemas/Customer' appearance: $ref: '#/components/schemas/Appearance' config: $ref: '#/components/schemas/SessionConfig' agent: $ref: '#/components/schemas/Agent' consent: $ref: '#/components/schemas/Consent' paymentMethod: $ref: '#/components/schemas/SessionPaymentMethod' CaptureRequest: type: object properties: amount: type: integer description: >- Amount in Cents (United States). Max Capture amount is limited by the original authorized amount. If no amount is specified, it attempts to capture the full authorized amount minimum: 1 maximum: 100000000 format: int64 metadata: type: object description: >- Additional payment metadata. This metadata will be merged with the original payment metadata used for authorizing this payment. Max 20 metadata entries. Max key length is 40. Max value length is 100. additionalProperties: type: string CancelRequest: type: object required: - paymentCancellationReason properties: paymentCancellationReason: enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - ABANDONED type: string description: Payment Cancellation Reason paymentCancellationMessage: type: string PhoneNumber: type: object required: - countryCode - number properties: countryCode: type: string pattern: \d{1-3} number: type: string pattern: \d{4-11} ConsentPhoneNumber: type: object properties: countryCode: type: string pattern: \d{1-3} number: type: string pattern: \d{4-11} RefundRequest: required: - merchantTransactionId type: object properties: paymentId: type: string format: uuid description: paymentId of the payment that needs refund paymentMethodId: type: string format: uuid description: >- paymentMethodId that receives the refund. This is not applicable when paymentId is specified. amount: type: integer description: >- Amount in Cents (United States) and required when paymentMethodId is present. For refund associated with payments, if amount not provided full amount will be refunded. minimum: 1 maximum: 100000000 format: int64 reason: type: string enum: - REQUESTED_BY_CUSTOMER - DUPLICATE - FRAUDULENT merchantTransactionId: maxLength: 50 minLength: 0 type: string metadata: type: object description: >- Additional payment metadata. Max 20 metadata entries. Max key length is 40. Max value length is 100. additionalProperties: type: string customer: $ref: '#/components/schemas/Customer' agent: $ref: '#/components/schemas/Agent' RefundResponse: type: object properties: id: type: string format: uuid paymentId: type: string format: uuid paymentMethodId: type: string format: uuid merchantId: type: string format: uuid amount: type: integer format: int64 reason: type: string enum: - REQUESTED_BY_CUSTOMER - DUPLICATE - FRAUDULENT merchantTransactionId: type: string maxLength: 50 description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. metadata: type: object additionalProperties: type: string description: >- Refund metadata key value pairs. Example - Order Id, Invoice date etc. Max 20 metadata entries. Max key length is 40. Max value length is 100. status: type: string enum: - INITIATED - COMPLETED - FAILED error: $ref: '#/components/schemas/ErrorResponse' ResourceRefundResponse: type: object properties: data: $ref: '#/components/schemas/RefundResponse' ResourceMerchantSessionResponse: type: object properties: sessionId: type: string format: uuid data: $ref: '#/components/schemas/MerchantSessionResponse' MerchantSessionResponse: type: object properties: paymentMethodResponse: $ref: '#/components/schemas/PaymentMethod' payment: $ref: '#/components/schemas/PaymentResponse' agent: $ref: '#/components/schemas/Agent' status: type: string enum: - INITIATED - COMPLETED - FAILED SetupPaymentMethodRequest: type: object properties: requestId: type: string format: uuid customer: $ref: '#/components/schemas/Customer' paymentMethod: $ref: '#/components/schemas/SavePaymentMethodToken' SavePaymentMethodToken: type: object properties: type: type: string deprecated: true enum: - CARD vendorPaymentMethodId: type: string vendor: type: string enum: - STRIPE default: type: boolean description: is applicable only when savePaymentMethod is true. card: type: object deprecated: true description: Deprecated in favour of paymentMethodDetails. properties: nameOnCard: type: string description: cannot contain card number required: true paymentMethodDetails: oneOf: - $ref: '#/components/schemas/PCICard' - $ref: '#/components/schemas/USBankAccountDTO' PCICard: type: object allOf: - $ref: '#/components/schemas/BasePCIPaymentMethodDetailsDTO' - type: object properties: type: type: string enum: - CARD nameOnCard: type: string description: cannot contain card number required: true BasePCIPaymentMethodDetailsDTO: type: object discriminator: propertyName: type USBankAccountDTO: required: - accountNumber - accountType - nameOnAccount - routingNumber type: object properties: type: type: string enum: - BANK_ACCOUNT allOf: - $ref: '#/components/schemas/BasePCIPaymentMethodDetailsDTO' - type: object properties: routingNumber: pattern: '[\d]{9}' type: string accountNumber: maxLength: 17 minLength: 0 pattern: ^[0-9]*$ type: string accountType: pattern: checking|savings type: string nameOnAccount: type: string PaymentMethodToken: type: object properties: type: type: string deprecated: true enum: - CARD vendorPaymentMethodId: type: string vendor: type: string enum: - STRIPE savePaymentMethod: type: boolean description: >- when true(PayAndStore), the payment method will be saved upon successful completion of the payment. If set to false(OneTimePay), the payment method will not be saved. The default value is false. default: type: boolean description: >- when true, this sets the paymentMethod as the default in the wallet, unsetting any previous default. The default value is false; applicable only when savePaymentMethod is set to true. nickname: type: string maxLength: 30 description: >- can only contain letters and numbers (cannot contain card number applicable only for cards) nameOnCard: type: string description: cannot contain card number required: true paymentMethodDetails: oneOf: - $ref: '#/components/schemas/PCICard' - $ref: '#/components/schemas/USBankAccountDTO' SetupPaymentMethodResponse: type: object properties: id: type: string format: uuid paymentMethod: $ref: '#/components/schemas/PaymentMethod' status: type: string enum: - INITIALIZED - COMPLETED - FAILED ResourcePostSetupPaymentMethodResponse: type: object properties: data: $ref: '#/components/schemas/PostSetupPaymentMethodResponse' warning: $ref: '#/components/schemas/Warning' Warning: type: object properties: code: description: Error Message Code type: string enum: - DUPLICATE_ENTRY - PAYMENT_METHOD_ERROR title: description: Error Message Title ex "Payment method already exists" type: string description: description: Error Description for the action type: string PostSetupPaymentMethodResponse: type: object properties: id: type: string format: uuid paymentMethod: $ref: '#/components/schemas/PaymentMethod' status: type: string enum: - INITIALIZED - COMPLETED - FAILED ResourceSetupPaymentMethodResponse: type: object properties: url: type: string data: $ref: '#/components/schemas/SetupPaymentMethodResponse' warning: $ref: '#/components/schemas/Warning' TokenPaymentRequest: type: object required: - amount - merchantTransactionId properties: amount: type: integer format: int64 description: Amount in Cents (United States) minimum: 1 maximum: 100000000 customer: $ref: '#/components/schemas/Customer' paymentDetails: $ref: '#/components/schemas/IIASPaymentDetails' paymentMethod: $ref: '#/components/schemas/PaymentMethodToken' metadata: type: object additionalProperties: type: string description: >- Payment metadata key value pairs. Example - Order Id, Invoice date etc. Max 20 metadata entries. Max key length is 40. Max value length is 100. paymentType: type: string deprecated: true enum: - SALE - PRE_AUTH authorizeCard: description: >- When authorizeCard is set as true, the credit card will be authorized for the amount supplied. Later we need to call the Capture API to complete the transaction. The authorization is valid only for 7 days. type: boolean default: false partialAuthorization: description: >- When true, card issuers will consider the payment for partial authorization. This flag shall be provided in combination with authorizeCard flag. Applicable payment method types = [CARD] type: boolean default: false paymentMethodId: type: string format: uuid description: >- Payment method Id of the saved card/bankAccount. To get the payment method Id refer [/payment-methods/search API](/api-reference/#tag/Merchant-Wallet-Management/paths/~1payment-methods~1search/post). paymentDescription: type: string maxLength: 100 description: >- Payment description that will be useful for user to identify the payment. merchantTransactionId: description: >- Unique identifier that can be used to track this transaction. This identifier will make sure that there wont be any duplicate transaction. type: string maxLength: 50 statementDescriptorSuffix: type: string description: >- Must contain a letter. Learn more about statement descriptors in [docs]( /docs/developers/API-Terminology/#statement-descriptors ). maxLength: 10 pattern: ^(?=.*[a-zA-Z])[a-zA-Z0-9 \-.]{0,10}$ agent: $ref: '#/components/schemas/Agent' consent: $ref: '#/components/schemas/Consent' IIASPaymentDetails: type: object properties: healthcare: $ref: '#/components/schemas/HealthCare' HealthCare: type: object properties: iias: $ref: '#/components/schemas/IIAS' visionAmount: type: integer IIAS: type: object properties: qualifiedAmount: type: integer qualifiedAmountDetails: $ref: '#/components/schemas/QualifiedAmountDetail' QualifiedAmountDetail: type: object properties: prescriptionAmount: type: integer Agent: type: object properties: firstName: description: first name of the agent. This field is required for Agent flow. type: string maxLength: 50 lastName: description: last name of the agent. This field is required for Agent flow. type: string maxLength: 50 userId: description: msid of the agent. This field is required for Agent flow. type: string maxLength: 50 isAccessVerified: description: >- when merchant verifies access for the agent to allow entry of 16 digit card number, this can be set to true. type: boolean Consent: type: object properties: merchantConsentId: type: string description: Consent id of the consent collected by the merchant. merchantConsentText: type: string description: Consent text to display to the user or agent. collectionTimestamp: type: string description: >- Formatted date-time following ISO_DATE_TIME yyyy-MM-dd'T'HH:mm:ss.SSSXXX, e.g. 2023-11-03T10:15:30.100+01:00 collectionDetails: $ref: '#/components/schemas/CollectionDetails' CollectionDetails: type: object properties: type: $ref: '#/components/schemas/ConsentCollectionType' web: $ref: '#/components/schemas/ConsentCollectionWeb' tel: $ref: '#/components/schemas/ConsentCollectionTel' ConsentCollectionType: enum: - WEB - TEL - PPD type: string ConsentCollectionWeb: type: object properties: ipAddress: type: string userAgent: type: string description: Browser User-Agent ConsentCollectionTel: type: object properties: inboundPhoneNumber: $ref: '#/components/schemas/ConsentPhoneNumber' securitySchemes: gateway: type: oauth2 flows: clientCredentials: scopes: https://api.uhg.com/.default: Default scope assigned to all clients financial/commerce/checkout:all: (Production) Full scope financial/commerce/checkout:merchant: (Production) Merchant scope financial/commerce/checkout:merchant-wallet-management: (Production) Merchant wallet management scope financial/commerce/checkout:merchant-pci: (Production) Merchant PCI scope financial/commerce/nonprodcheckout:all: (Non prod) Full scope financial/commerce/nonprodcheckout:merchant: (Non prod) Merchant scope financial/commerce/nonprodcheckout:merchant-wallet-management: (Non prod) Merchant wallet management scope financial/commerce/nonprodcheckout:merchant-pci: (Non prod) Merchant PCI scope tokenUrl: https://api.uhg.com/oauth2/token x-instances: - env: prod path: / probe: path: / method: GET backends: - host: api.healthsafepay.com port: 443 weight: 100 location: azure-centralus protocol: https timeouts: read: 1000 connect: 500 x-catalogEnabled: false x-serviceLevelObjectives: x-throughput: '10' x-availability: '99.99' x-responseTime: '1000' x-maxMsgsPerHour: '500' x-maxPayloadSize: '10' x-expectedMsgsPerDay: '10000'