openapi: 3.2.0 info: version: 1.7.57 title: Shift4 Payment Devices API contact: url: https://www.shift4.com/contact-us/ servers: - url: https://api.shift4test.com/api/rest/v1 description: Host Direct Test URL - url: https://api.shift4api.net/api/rest/v1 description: Host Direct Production URL tags: - name: Devices paths: /devices/promptsignature: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL - url: https://192.168.1.20:8085/api/rest/v1 description: Commerce Engine For On Premise URL - url: https://api.shift4test.com/api/rest/v1 description: Commerce Engine For Cloud Test URL - url: https://api.shift4api.net/api/rest/v1 description: Commerce Engine For Cloud Production URL post: tags: - Devices summary: Request Signature operationId: devicessignatures security: - AccessToken: [] description: 'This function is used to request a prompt for signature on a UTG or Commerce Engine controlled PIN pad and returns the signature. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. See the [JSON Body Schemas](/guides/quickstart#json-body-schemas) for more details on the various JSON body formats. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_promptsignature_comengdevice' - $ref: '#/components/schemas/devices_promptsignature_comengcloud' - $ref: '#/components/schemas/devices_promptsignature_utgdevice' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceOnlyTIDResponse' server: $ref: '#/components/schemas/Server' signature: $ref: '#/components/schemas/Signature' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/promptconfirmation: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Prompt Confirmation operationId: devicespromptconfirmation security: - AccessToken: [] description: 'This function is used to display text for a consumer’s confirmation on a UTG-controlled PIN pad. **Integration Methods:** - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' promptConfirmation: $ref: '#/components/schemas/DevicePromptConfirmation' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' promptConfirmation: $ref: '#/components/schemas/DevicePromptConfirmation' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/termsandconditions: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Prompt Terms and Conditions operationId: devicestermsandconditions security: - AccessToken: [] description: 'This function is used to display terms and conditions for a consumer to accept or decline on a Commerce Engine or UTG-controlled PIN pad. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_termsandconditions_comengdevice' - $ref: '#/components/schemas/devices_termsandconditions_comengcloud' - $ref: '#/components/schemas/devices_termsandconditions_utgdevice' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' promptTermsAndConditions: $ref: '#/components/schemas/DevicePromptTermsAndConditions' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/lineitems: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Display Line Items operationId: deviceslineitems security: - AccessToken: [] description: 'This function is used to display up to 10 line items on a UTG-controlled PIN pad. In additional Display Line Items requests, if the API Option APPENDLINEITEM is sent, the UTG will append the new line item(s) to the existing line item(s) displayed. **Integration Methods:** - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' apiOptions: $ref: '#/components/schemas/ApiOptions' device: type: object required: - terminalId - lineItems properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' lineItems: $ref: '#/components/schemas/DeviceLineItemsArray' example: dateTime: '2021-04-15T09:18:23.283-07:00' device: lineItems: - Hamburger - Fries - Soda - Cookie terminalId: '1742' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' delete: tags: - Devices summary: Clear Line Items operationId: devicesdeletelineitems security: - AccessToken: [] description: 'This function is used to clear the line items displayed on a UTG-controlled PIN pad. *Note: The DELETE request does not support a request body. Sending an empty request body may result in an error.* **Integration Methods:** - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/TerminalID' - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/info: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL get: tags: - Devices summary: Device Information operationId: devicesinfo security: - AccessToken: [] description: 'This function is used to request information regarding the status of a specific Commerce Engine or UTG-controlled PIN pad. Depending on the type of device in use, this request may return a variety of device information in the response, including the types of encryption keys injected on the device. *Note: The GET request does not support a request body. Sending an empty request body may result in an error.* **Integration Methods:** - Commerce Engine For On Premise - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/TerminalIDDevicesInfo' - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' responses: '200': description: Request was processed content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_info_comeng' - $ref: '#/components/schemas/devices_info_utgingenico' - $ref: '#/components/schemas/devices_info_utgverifone' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/initializereaders: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Initialize Readers operationId: devicesinitializereaders security: - AccessToken: [] description: 'This function is used to request a card swipe, insert, tap (if applicable), etc. on a UTG-controlled PIN pad before an [Authorization](/apis/payments-platform-rest/openapi/transactions/transactionsauthorization) or [Sale/Purchase](/apis/payments-platform-rest/openapi/transactions/transactionssale) request. **Integration Methods:** - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/reset: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Reset Device operationId: devicesreset security: - AccessToken: [] description: 'This function is used to reset a Commerce Engine or UTG-controlled PIN pad to idle. When there is pending consumer input (e.g., waiting for the consumer to confirm the amount, swipe their card, select credit or debit, etc.), sending this request will cancel the request. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_reset_comengdevice' - $ref: '#/components/schemas/devices_reset_utgdevice' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/promptcardread: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Prompt Card Read operationId: devicespromptcardread security: - AccessToken: [] description: 'This function is used to prompt a P2PE-enabled, Commerce Engine or UTG controlled PIN pad to request a pass-through card swipe, causing the output of the swipe to be returned directly to the interface without any action or validation by Shift4 or the processor. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_promptcardread_comengdevice' - $ref: '#/components/schemas/devices_promptcardread_comengcloud' - $ref: '#/components/schemas/devices_promptcardread_utgdevice' responses: '200': description: Request was processed content: application/json: schema: oneOf: - title: Unencrypted Gift, Loyalty, or Employee Badge Data properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' card: type: object properties: entryMode: $ref: '#/components/schemas/CardEntryModeResponseTrackOnly' expirationDate: type: integer minLength: 3 maxLength: 4 format: MMYY description: 'Card expiration date in MMYY format. This will only be returned for non-card brand cards such as gift cards and employee badge cards. This field will not be returned if the swipe data received is in a non-standard format. ' number: type: string maxLength: 32 description: 'The unencrypted card number. This will only be returned for non-card brand cards such as gift cards and employee badge cards. This field will not be returned if the swipe data received is in a non-standard format. ' trackData: type: string description: 'The raw track data read from the card swipe. This can contain track 1 data, track 2 data, or both. This will only be returned for non-card brand cards such as gift cards and employee badge cards. ' server: $ref: '#/components/schemas/Server' - title: Encrypted Card Brand Data properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' card: type: object properties: entryMode: $ref: '#/components/schemas/CardEntryModeResponseTrackOnly' number: $ref: '#/components/schemas/CardMaskedNumber' type: $ref: '#/components/schemas/CardTypeResp' p2pe: $ref: '#/components/schemas/P2PE' server: $ref: '#/components/schemas/Server' examples: unencryptedgiftcard: summary: Unencrypted Gift Card value: result: - dateTime: '2024-05-21T09:18:23.283-07:00' card: entryMode: '2' expirationDate: 643 number: 0001366477393106 trackData: ;0001366477393106=430692960042575? server: name: Commerce Engine K unencryptedemployeecard: summary: Unencrypted Employee Badge Data Card value: result: - dateTime: '2024-05-21T09:18:23.283-07:00' card: entryMode: '2' trackData: ;:<>4114952129? server: name: Commerce Engine K encryptedcard: summary: Encrypted Card Brand Data value: result: - dateTime: '2024-05-21T09:18:23.283-07:00' card: entryMode: '1' number: XXXXXXXXXXXX6186 type: NS p2pe: data: a%B369989****6186^DC/TRACK1 ONLY^2212101**************************??b?c;FFFF49003614954000BB:1:0072:8B997BF3896636D43593897B86C58A4C7B684B69C5DC150FF53882A15C34C3FCBCEBCFEA0FA68FAC3F0148431B3C6470514A20A5104AF853BDF4D1BD8EBD0E9FAB493176BD2614DC format: '03' server: name: U2API01CE '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/promptinput: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Prompt for Input operationId: devicespromptinput security: - AccessToken: [] description: 'This function is used to prompt a Commerce Engine or UTG-controlled PIN pad to collect a specified value from a consumer. The interface will specify the value based on the `device.promptInput.index` field. Each request will collect one specified value; when multiple values need to be collected, separate requests must be sent. **Integration Methods:** - Commerce Engine For On Premise - Commerce Engine For Cloud - Locally Installed UTG See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_promptinput_comengdevice' - $ref: '#/components/schemas/devices_promptinput_comengcloud' - $ref: '#/components/schemas/devices_promptinput_utgdevice' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' promptInput: $ref: '#/components/schemas/DevicePromptInput' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/processform: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Display Custom Form operationId: devicesprocessform security: - AccessToken: [] description: 'This function is used to display a custom form and text for a consumer’s input on a Commerce Engine or UTG controlled PIN pad. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_processform_comengdevice' - $ref: '#/components/schemas/devices_processform_comengcloud' - $ref: '#/components/schemas/devices_processform_utgdevice' responses: '200': description: Request was processed content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_processform_response_utg' - $ref: '#/components/schemas/devices_processform_response_comeng_message' - $ref: '#/components/schemas/devices_processform_response_comeng_multiButtonScrollingText' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/print: servers: - url: https://192.168.1.10:277/api/rest/v1 description: Locally Installed UTG URL post: tags: - Devices summary: Print Receipts operationId: devicesprint security: - AccessToken: [] description: 'This function is used to print a receipt using a device’s built-in printer. The receipt may include a scannable bar code. **Integration Methods:** - Locally Installed UTG - Commerce Engine For On Premise - Commerce Engine For Cloud Commerce Engine for On Premise and Commerce Engine For Cloud support both the legacy printing format for backwards compability with UTG integrations as well as a new structured printing format. With the new structured printing format you can format an entire receipt as a bmp image including text, QR codes, and images. In future Commerce Engine releases we will be enhancing the structured format to support handling text and bar codes. See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. See the [JSON Body Schemas](/guides/quickstart#json-body-schemas) for more details on the various JSON body formats. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_print_comengdevice_structured' - $ref: '#/components/schemas/devices_print_comengcloud_structured' - $ref: '#/components/schemas/devices_print_comengdevice_legacy' - $ref: '#/components/schemas/devices_print_comengcloud_legacy' - $ref: '#/components/schemas/devices_print_utgdevice' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceOnlyTIDResponse' server: $ref: '#/components/schemas/Server' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/getstatus: servers: - url: https://192.168.1.20:8085/api/rest/v1 description: Commerce Engine For On Premise URL - url: https://api.shift4test.com/api/rest/v1 description: Commerce Engine For Cloud Test URL - url: https://api.shift4api.net/api/rest/v1 description: Commerce Engine For Cloud Production URL post: tags: - Devices summary: Get Device Status operationId: devicesgetstatus security: - AccessToken: [] description: 'This function is used to get the status of the device. **Integration Methods:** - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_getstatus_comengdevice' - $ref: '#/components/schemas/devices_getstatus_comengcloud' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: cloudRegistered: $ref: '#/components/schemas/CloudRegistered' cloudConnected: $ref: '#/components/schemas/CloudConnected' offlineMode: $ref: '#/components/schemas/OfflineMode' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' /devices/prompttip: servers: - url: https://192.168.1.20:8085/api/rest/v1 description: Commerce Engine For On Premise URL - url: https://api.shift4test.com/api/rest/v1 description: Commerce Engine For Cloud Test URL - url: https://api.shift4api.net/api/rest/v1 description: Commerce Engine For Cloud Production URL post: tags: - Devices summary: Prompt Tip operationId: devicesprompttip security: - AccessToken: [] description: 'This function is used to prompt for tip outside of a payment transaction. **Integration Methods:** - Commerce Engine For On Premise - Commerce Engine For Cloud See the [Integration Methods](/guides/quickstart#integration-methods) and [URLs Section](/guides/quickstart#urls) sections of the Development Quick Start guide for details regarding each processing option. ' parameters: - $ref: '#/components/parameters/InterfaceVersion' - $ref: '#/components/parameters/InterfaceName' - $ref: '#/components/parameters/CompanyName' - $ref: '#/components/parameters/AccessToken' requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/devices_prompttip_comengdevice' - $ref: '#/components/schemas/devices_prompttip_comengcloud' responses: '200': description: Request was processed content: application/json: schema: properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' amount: type: object properties: tip: $ref: '#/components/schemas/AmountTipResponse' total: $ref: '#/components/schemas/AmountTotal' tip: type: object properties: selectedOption: $ref: '#/components/schemas/TipSelectedOption' server: $ref: '#/components/schemas/ServerComEng' '400': $ref: '#/components/responses/TerminalIDErrorResponse' '504': $ref: '#/components/responses/TimeoutResponse' components: schemas: AmountPromptTip: type: object required: - total properties: total: type: number maxLength: 14 example: 100 description: 'The total transaction amount. Used as the seed for calculating the tip amount when using preset percentages. ' tipBasis: $ref: '#/components/schemas/AmountTipBasis' FirmwareFirmwareVersion: type: string example: PayDroid_10.0.0_Eucalyptus_V20.1.28_20250915/4.11.00_20250120 description: 'The firmware version. ' DevicePromptConfirmationValue: type: string maxLength: 4096 writeOnly: true example: Would you like to join our rewards program? description: 'This field displays text, such as an email address or legal text, for a consumer’s confirmation. ' devices_processform_response_utg: title: UTG Controlled Device properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalId' form: $ref: '#/components/schemas/DeviceFormResponse' server: $ref: '#/components/schemas/Server' UIRequest: type: object properties: language: $ref: '#/components/schemas/UILanguageRequest' mode: $ref: '#/components/schemas/UIMode' DeviceOnlyTID: type: object required: - terminalId properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' DeviceNextStep: type: object description: 'An optional object used to control the device behavior after processing the request. If included in the request, the `type` sub-field is required ' properties: type: $ref: '#/components/schemas/DeviceNextStepType' header: $ref: '#/components/schemas/DeviceFormHeader' subHeader: $ref: '#/components/schemas/DeviceFormSubHeader' text: $ref: '#/components/schemas/DeviceFormText' devices_promptsignature_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: displayText: $ref: '#/components/schemas/DeviceDisplayText' nextStep: $ref: '#/components/schemas/DeviceNextStep' terminalId: $ref: '#/components/schemas/DeviceTerminalIdComEng' ui: $ref: '#/components/schemas/UIRequest' example: dateTime: '2024-05-21T09:18:23.283-07:00' DevicePromptInput: type: object required: - index properties: index: $ref: '#/components/schemas/DevicePromptInputIndex' result: $ref: '#/components/schemas/DevicePromptInputResult' Error: type: object properties: code: $ref: '#/components/schemas/ErrorCode' severity: $ref: '#/components/schemas/ErrorSeverity' shortText: $ref: '#/components/schemas/ErrorShortText' longText: $ref: '#/components/schemas/ErrorLongText' primaryCode: $ref: '#/components/schemas/ErrorPrimaryCode' secondaryCode: $ref: '#/components/schemas/ErrorSecondaryCode' DeviceDisplayText: type: string maxLength: 72 example: Please Sign description: 'Optional field that specifies the text to display on the device. ' devices_reset_utgdevice: title: UTG Controlled Device type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' AmountTipBasis: type: number maxLength: 14 example: 130 description: "The amount Commerce Engine will use to calclulate the tip percentage amounts on the tip screen. This is an optional field that will be used instead of `amount.total` in a scenario where the percentage calculations must be made on an amount other than the total amount. \n\nFor example, you have a $130 check and you make an initial payment of $30 using a gift card leaving a $100 remaining balance. When you process the remaining balance and you want to calculate the tip percentages based on the original $130 check total you would send `amount.total = 100` and `amount.tipBaiss = 130`\n" DevicePromptTermsAndConditionsAckText: type: string maxLength: 100 writeOnly: true example: I agree to the End User Agreement description: 'Contains the text to display in the acknowledgement check box. If not sent, the acknowledgement check box will display `I agree to the terms and conditions`. ' devices_print_comengcloud_structured: title: Commerce Engine For Cloud - Structured type: object required: - dateTime - device - print properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceComEngCloud' print: $ref: '#/components/schemas/Print' PrintDataArray: type: array items: $ref: '#/components/schemas/PrintDataBMP' description: 'Array containing the value to print. ' example: - type: bmp alignment: center value: Qk1+BgAAAAAAAD4AAAAoAAAAZAAAAGQAAAABAAEAAAAAAEAGAAAjLgAAIy4AAAAAAAAAAAAAAAAAAP///wD////////////////wAAAA////////D///////8AAAAP/////3AAAP//////AAAAD/////8AAAAN/////wAAAA/////4AAAAAf////8AAAAP////4AAAAAB/////AAAAD////wAAAAAAD////wAAAA////wAAAAAAAf///8AAAAP///4AAAAAAAB////AAAAD///4AAAAAAAAH///wAAAA///8AAAAAAAAA///8AAAAP//8AAAAAAAAAD///AAAAD//+AAAAAAAAAAf//wAAAA///AAAAAAAAAAD//8AAAAP//gAAAAAAAAAAf//AAAAD//wAAAAAAAAAAD//wAAAA//4AAAAAAAAAAAf/8AAAAP/8AAAAAAAAAAAD//AAAAD/+AAAAAAAAAAAAf/wAAAA//AAAAAAAAAAAAD/8AAAAP/gAAAAAAAAAAAAf/AAAAD/4AAAAAAD/AAAAH/wAAAA/8AAAAAAA/wAAAA/8AAAAP+AAAAAAAP8AAAAH/AAAAD/gAAAAAAD/AAAAB/wAAAA/wAAAAAAA/wAAAAP8AAAAP4AAAAAAAP8AAAAD/AAAAD+AAAAAAAD/AAAAAfwAAAA/AAAAAAAA/wAAAAD8AAAAPwAAAAAAAP8AAAAA/AAAAD8AAAAAAAD/AAAAAPwAAAA+AAAAAAAA/wAAAAB8AAAAPgAAAAAAAP8AAAAAfAAAADwAAAAAAAD/AAAAADwAAAA8AAAAAAAA/wAAAAA8AAAAPAAAAAAAAP8AAAAAPAAAADgAAAAAAAD/AAAAABwAAAA4AAAD/////wAAAAAcAAAAOAAAA/////8AAAAAHAAAADgAAAf/////AAAAABwAAAAgAAAH/////wAAAAAMAAAAMAAAB/////8AAAAADAAAADAAAAf/////AAAAAAwAAAAwAAAD/////wAAAAAMAAAAMAAAAf9///8AAAAADAAAADAAAAD/AAD/AAAAAAwAAAAwAAAA/4AA/wAAAAAMAAAAIAAAAH/AAP8AAAAADAAAAAAAAAA/wAD/AAAAAAQAAAAAAAAAH+AA/wAAAAAEAAAAAAAAAB/wAP8AAAAABAAAACAAAAAP+AD/AAAAAAQAAAAgAAAAB/wA/wAAAAAMAAAAMAAAAAP8AP8AAAAADAAAADAAAAAB/gD/AAAAAAwAAAAwAAAAAf8A/wAAAAAMAAAAMAAAAAD/gP8AAAAADAAAADAAAAAAf4D/AAAAAAwAAAAwAAAAAD/A/wAAAAAMAAAAIAAAAAA/4P8AAAAADAAAADgAAAAAH/D/AAAAABwAAAA4AAAAAA/4/wAAAAAcAAAAOAAAAAAH+P8AAAAAHAAAADgAAAAAA/z/AAAAABwAAAA8AAAAAAP+/wAAAAA8AAAAPAAAAAAB//8AAAAAPAAAADwAAAAAAP//AAAAADwAAAA+AAAAAAB//wAAAAB8AAAAPgAAAAAAf/8AAAAAfAAAAD4AAAAAAD//AAAAAPwAAAA/AAAAAAAf/wAAAAD8AAAAPwAAAAAAD/8AAAAA/AAAAD+AAAAAAAf/AAAAAfwAAAA/gAAAAAAH/wAAAAH8AAAAP8AAAAAAA/8AAAAD/AAAAD/gAAAAAAH/AAAAB/wAAAA/4AAAAAAA/wAAAAf8AAAAP/AAAAAAAP8AAAAP/AAAAD/4AAAAAAB/AAAAH/wAAAA/+AAAAAAAFAAAAB/8AAAAP/wAAAAAAAAAAAA//AAAAD/+AAAAAAAAAAAAf/wAAAA//wAAAAAAAAAAAP/8AAAAP/+AAAAAAAAAAAH//AAAAD//wAAAAAAAAAAD//wAAAA//+AAAAAAAAAAB//8AAAAP//wAAAAAAAAAA///AAAAD//+AAAAAAAAAAf//wAAAA///wAAAAAAAAAP//8AAAAP///AAAAAAAAAP///AAAAD///4AAAAAAAAH///wAAAA////gAAAAAAAH///8AAAAP///8AAAAAAAD////AAAAD////wAAAAAAD////wAAAA/////AAAAAAH////8AAAAP////+AAAAAH/////AAAAD/////8AAAAP/////wAAAA//////8AAA7/////8AAAAP///////gf///////AAAAD///////+f///////wAAAA FirmwareCTLSKernelVersion: type: string example: v558 2025.04.10;v359_02 2025.02.20;v557_01 2024.01.15;v252_01 2023.02.09;v155 2024.12.19;v353 2025.01.22;v153_02 2024.12.05;v253 2025.01.10;v153 2025.09.09 description: 'The card brand contactless kernel versions. ' SecurityP2PEVersion: type: string example: 2.0.6.211.3.0 description: 'The P2PE application version ' DeviceFormFooter: type: object properties: value: type: string maxLength: 100 example: Footer text goes here description: 'Footer text. Add `\r\n` to force a new line. ' ErrorSeverity: type: string enum: - Info - Error - Alert readOnly: true example: Info description: 'Severity level of the error. | Severity | Description | | -------- | ---------------------------------------------------------------- | | Info | Action not required - Data input/formatting is incorrect | | Error | Action may be required - Communication, timeout or network issue | | Alert | Action required - System issue | ' HardwareStorageMbTotal: type: string example: '12297' description: 'The amount of total storage space in megabytes. ' TipHeader: type: string maxLength: 100 example: Would you like to add a tip? description: 'Optional field to override the header text. If not sent, the header text will display `Add Tip` in the terminal''s configured language. ' devices_termsandconditions_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - promptTermsAndConditions properties: promptTermsAndConditions: $ref: '#/components/schemas/DevicePromptTermsAndConditionsComEng' nextStep: $ref: '#/components/schemas/DeviceNextStep' ui: $ref: '#/components/schemas/UIRequest' DevicePromptConfirmation: type: object properties: question: $ref: '#/components/schemas/DevicePromptConfirmationQuestion' result: $ref: '#/components/schemas/DevicePromptConfirmationResult' value: $ref: '#/components/schemas/DevicePromptConfirmationValue' DevicePromptTermsAndConditionsResult: type: string maxLength: 1 readOnly: true enum: - A - D example: A description: 'Returns the result of the Terms and Conditions screen on the PIN pad (based on the consumer’s input). Value| Description -----|------------ A | Accepted D | Declined ' AmountTotal: type: number maxLength: 14 example: 160 description: 'The amount being charged for a particular transaction. If other amount fields are sent, they must be included in the total amount. Amount cannot be zero. ' DeviceFormItems: type: object writeOnly: true properties: key: type: string writeOnly: true maxLength: 5 example: '1' description: 'A five-character, alphanumeric string containing the ID of the field which you want to display a custom value on. ' value: type: string writeOnly: true maxLength: 200 example: John Smith description: 'The value that should be displayed in the field specified by the key. ' HardwareRamMb: type: string example: '1854' description: 'The total amount of RAM in megabytes. ' DeviceNextStepType: type: string enum: - idle - none - displayWait - displayText example: displayText description: 'Determines the device behavior after processing the request. If no additional request is received after 120 seconds the device will return to idle as a failsafe. | Value | Description | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | idle | Return back to the idle screen | | none | Stay on the same screen. A subsequent message must be immediately sent or else the device will appear frozen to the user. | | displayWait | Displays a please wait screen | | displayText | Displays custom text. The request must include at least one of the following fields: `device.nextStep.header.value`, `device.nextStep.subHeader.value` or `device.nextStep.text.value`. | ' DevicePromptTermsAndConditionsHeader: type: string maxLength: 100 writeOnly: true example: End User License Agreement description: 'Contains the text to display in the header. If not sent, the header will display `Terms and Conditions`. ' ApiOptions: type: array items: type: string example: - RETURNEXPDATE - ALLOWPARTIALAUTH writeOnly: true description: 'API Options modify the request being made. See the [API Options](/guides/appendices/api-options.md) section for more information. ' ReceiptDevicesPrint: type: object required: - key - printValue properties: key: type: string maxLength: 100 example: print description: 'Must be sent as `print`. ' printValue: type: string example: Text to print goes here description: 'The text that you want to print on the receipt. ' SignatureData: type: string maxLength: 4194304 example: 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 description: 'The base64-encoded data sent when a signature is captured as a Portable Network Graphics (PNG) file. ' DeviceFormTimeout: type: number minimum: 1 maximum: 600 example: 120 description: 'The number of seconds until the custom form will timeout. Defaults to 120 seconds if `form.timeout` is not sent in the request. ' Server: type: object readOnly: true properties: name: $ref: '#/components/schemas/ServerName' devices_info_comeng: title: Commerce Engine type: object properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdDevicesInfo' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' model: $ref: '#/components/schemas/DeviceModelDevicesInfo' hardware: type: object properties: cpu: $ref: '#/components/schemas/HardwareCPU' ramMb: $ref: '#/components/schemas/HardwareRamMb' storageMbTotal: $ref: '#/components/schemas/HardwareStorageMbTotal' storageMbFree: $ref: '#/components/schemas/HardwareStorageMbFree' storageMbUsed: $ref: '#/components/schemas/HardwareStorageMbUsed' batteryLevel: $ref: '#/components/schemas/HardwareBatteryLevel' firmware: type: object properties: firmwareVersion: $ref: '#/components/schemas/FirmwareFirmwareVersion' androidVersion: $ref: '#/components/schemas/FirmwareAndroidVersion' emvKernelVersion: $ref: '#/components/schemas/FirmwareEMVKernelVersion' ctlsKernelVersion: $ref: '#/components/schemas/FirmwareCTLSKernelVersion' security: type: object properties: p2peVersion: $ref: '#/components/schemas/SecurityP2PEVersion' pciHardwareVersion: $ref: '#/components/schemas/SecurityPCIHardwareVersion' pciFirmwareVersion: $ref: '#/components/schemas/SecurityPCIFirmwareVersion' applications: $ref: '#/components/schemas/ApplicationsArray' connectivity: type: object properties: activeInterface: $ref: '#/components/schemas/ConnectivityActiveInterface' ip: $ref: '#/components/schemas/ConnectivityIP' gateway: $ref: '#/components/schemas/ConnectivityGateway' subnetMask: $ref: '#/components/schemas/ConnectivitySubnetMask' dns1: $ref: '#/components/schemas/ConnectivityDNS1' dns2: $ref: '#/components/schemas/ConnectivityDNS2' interfaces: $ref: '#/components/schemas/ConnectivityInterfaces' ui: type: object properties: language: $ref: '#/components/schemas/UILanguageResponse' supportedLanguages: $ref: '#/components/schemas/UISupportedLanguages' server: $ref: '#/components/schemas/Server' devices_processform_utgdevice: title: UTG Controlled Device required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId - form properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' form: $ref: '#/components/schemas/DeviceFormUTG' Print: type: object description: 'Object contain elements for printing. See the [Supporting Built-In Receipt Printing Capability on Devices](/guides/core-concepts/printing-receipts#supporting-built-in-receipt-printing-capability-on-devices) ' required: - format - version - data properties: format: $ref: '#/components/schemas/PrintFormat' version: $ref: '#/components/schemas/PrintFormatVersion' data: $ref: '#/components/schemas/PrintDataArray' UISuppressAll: type: boolean example: 'true' description: "When `true`, the terminal suppresses all UI. \n\nExample use case: capturing employee/badge swipe data without displaying Commerce Engine UI.\n" DeviceTerminalIdComEng: type: string maxLength: 32 example: '1742' description: "This field is optional and is for backwards compatibility with existing vendors that are used to processing via UTG controlled devices.\n\nSince Commerce Engine is running directly on the payment device it does not require a `device.terminalId` to be specified. \n" DeviceFormHeader: type: object properties: value: type: string maxLength: 100 example: Header text goes here description: 'Header text. Add `\r\n` to force a new line. ' ServerName: type: string maxLength: 50 example: TM01CE description: 'The name of the server that processed the request. ' PrintFormatVersion: type: string enum: - '1.0' example: '1.0' description: 'Specifies the receipt printing format version being used. ' CardTypeResp: type: string enum: - AX - AP - BC - CI - DB - GC - JC - MC - NS - PL - SC - VS - WP - YC example: VS description: "An abbreviation used to specify the type of card that was used when processing a transaction.\n\nValue| Description\n-----|------------\nAX | American Express\nAP | Alipay\nBC | Backed Card \nCI | Citgo \nDB | Debit card\nGC | Gift Card\nJC | JCB\nMC | Mastercard\nNS | Discover/JCB/Novus\nPL | Private Label\nSC | Sears Canada\nVS | Visa\nWP | WeChat Pay\nYC | IT’S YOUR CARD\n" DeviceFormName: type: string maxLength: 12 example: PF2 description: 'Specifies a 12-character, alphanumeric string containing the form name to display on a UTG-controlled PIN pad. The file extension should not be included in the value. ' DeviceProcessFormTypeMessage: title: Message type: object required: - type properties: type: type: string enum: - message description: "Displays a message based form with header text, subheader text, and body text. \n\nWhen using this custom form type at least one of the following fields must also be included in the request: \n - `form.header`\n - `form.subHeader`\n - `form.text`\n" header: $ref: '#/components/schemas/DeviceFormHeader' subHeader: $ref: '#/components/schemas/DeviceFormSubHeader' text: $ref: '#/components/schemas/DeviceFormText' timeout: $ref: '#/components/schemas/DeviceFormTimeout' DevicePromptInputResult: type: string maxLength: 4096 readOnly: true example: '981280913' description: 'This field contains the value collected from a consumer using a UTG-controlled PIN pad. ' devices_reset_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdComEng' example: dateTime: '2024-05-21T09:18:23.283-07:00' devices_info_utgingenico: title: UTG Ingenico type: object properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: info: $ref: '#/components/schemas/DeviceInfoArray' terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' example: result: - dateTime: '2021-04-15T09:18:23.283-07:00' device: info: - NUMBER_MSR_SWIPES=1634 - NUMBER_BAD_TRACK1_READS=85 - NUMBER_BAD_TRACK2_READS=395 - NUMBER_BAD_TRACK3_READS=337 - NUMBER_SIGNATURE_TOTALS=0000 - NUMBER_REBOOTS=0760 - TERMINAL_NAME=iPP350 - UNIT_SERIAL_NUMBER=2013016PT012622 - OS_VERSION=5220 - APPLICATION_VERSION=2156 - SECURITY_LIBRARY_VERSION=0415 - TDA_VERSION=1603 - EFTL_VERSION=0000 - EFTP_VERSION=0000 - RAM_SIZE=8628 - FLASH_SIZE=111064 - MANUFACTURE_DATE=2013-01-16 - CPEM_TYPE=1 - PEN_STATUS=UNSUPPORTED_DEVICE - APPLICATION_NAME=Retail Base - MANUFACTURE_ID=INGNAR - DIGITIZER_VERSION=0000 - MANUFACTURER_SERIAL_NUMBER=71429877 - DUKPT0=F876543210016F8000F7 - DUKPT4=FFFF49003614954000B9 terminalId: '1742' server: name: U2API01CE devices_prompttip_comengcloud: title: Commerce Engine For Cloud type: object required: - dateTime - amount - tip properties: dateTime: $ref: '#/components/schemas/DateTime' amount: $ref: '#/components/schemas/AmountPromptTip' device: $ref: '#/components/schemas/DeviceComEngCloud' tip: $ref: '#/components/schemas/TipObject' ui: $ref: '#/components/schemas/UIRequest' DateTime: type: string format: ISO 8601 example: '2024-05-21T09:18:23.283-07:00' description: 'The date and time in ISO 8601 format including the timezone offset (yyyy-mm-ddThh:mm:ss.nnn+hh:mm). Must be sent as the local date/time of the merchant. For example, a request processed at a merchant in the Pacific time zone at 9:18am on April 15th 2021 would be sent as 2021-04-15T09:18:23.283-07:00 ' devices_getstatus_comengcloud: title: Commerce Engine For Cloud type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceComEngCloud' example: dateTime: '2024-05-21T09:18:23.283-07:00' device: cloud: true manufacturer: PAX serialNumber: '1170301234' DevicePromptInputIndex: type: string maxLength: 3 example: '005' description: 'This field specifies a value to be collected from a consumer using a UTG-controlled PIN pad. Value| Description | Return Format -----|--------------------------------------|------------------------- 001 | Card Security Code | Numeric 002 | Street Number | Numeric 003 | ZIP Code | Numeric 004 | Social Security Number (SSN) | Numeric, no formatting 005 | Last 4 of SSN | Numeric 006 | Date of Birth | MM/DD/YYYY 007 | Annual Income | Numeric, no formatting 008 | Home Phone Number | Numeric, no formatting 009 | Business Phone Number | Numeric, no formatting 010 | Email Address (Requires Touchscreen) | Alphanumeric 011 | Driver''s ID (Requires Touchscreen) | Alphanumeric 012 | Tip | Numeric ' ErrorLongText: type: string maxLength: 255 readOnly: true example: Card type not recognized description: 'Extended error message that is returned if an error condition exists. ' TipObject: type: object description: 'The optional `tip` object allows integrators to control the display and behavior of the tip screen presented to customers during payment processing. ' required: - presetType properties: presetType: $ref: '#/components/schemas/TipPresetType' presetDefault: $ref: '#/components/schemas/TipPresetDefault' preset1: $ref: '#/components/schemas/TipPreset1' preset2: $ref: '#/components/schemas/TipPreset2' preset3: $ref: '#/components/schemas/TipPreset3' headerText: $ref: '#/components/schemas/TipHeader' basisNotification: $ref: '#/components/schemas/TipBasisNotification' displayNoTip: $ref: '#/components/schemas/TipDisplayNoTip' ServerComEng: type: object readOnly: true properties: name: $ref: '#/components/schemas/ServerNameComEng' devices_getstatus_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime properties: dateTime: $ref: '#/components/schemas/DateTime' example: dateTime: '2024-05-21T09:18:23.283-07:00' DevicePromptTermsAndConditionsAckCheckBox: type: boolean writeOnly: true example: true description: 'Send `true` to enable the acknowledgement check box or `false` to disable it. Defaults to `true` if not sent. ' DevicePromptTermsAndConditionsComEng: type: object required: - value properties: ackCheckBox: $ref: '#/components/schemas/DevicePromptTermsAndConditionsAckCheckBox' ackText: $ref: '#/components/schemas/DevicePromptTermsAndConditionsAckText' header: $ref: '#/components/schemas/DevicePromptTermsAndConditionsHeader' value: $ref: '#/components/schemas/DevicePromptTermsAndConditionsValue' DeviceFormUTG: type: object required: - name properties: name: $ref: '#/components/schemas/DeviceFormName' items: $ref: '#/components/schemas/DeviceFormItemsArray' devices_promptinput_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - promptInput properties: promptInput: $ref: '#/components/schemas/DevicePromptInput' nextStep: $ref: '#/components/schemas/DeviceNextStep' terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' ui: $ref: '#/components/schemas/UIRequest' ErrorCode: type: integer maxLength: 5 readOnly: true example: 64100 description: 'Code indicating the type of error that occurred. Refer to the [Error Codes](/guides/appendices/error-codes) section of this document for more details. **Note: This is currently only supported for European merchant processing.** ' devices_prompttip_comengdevice: title: Commerce Engine For On Premise type: object required: - dateTime - amount - tip properties: dateTime: $ref: '#/components/schemas/DateTime' amount: $ref: '#/components/schemas/AmountPromptTip' tip: $ref: '#/components/schemas/TipObject' ui: $ref: '#/components/schemas/UIRequest' devices_info_utgverifone: title: UTG Verifone type: object properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: info: $ref: '#/components/schemas/DeviceInfoArray' terminalId: $ref: '#/components/schemas/DeviceTerminalId' server: $ref: '#/components/schemas/Server' example: result: - dateTime: '2021-04-15T09:18:23.283-07:00' device: info: - APPLICATION_VERSION=4.9.2-20170530 - XPI_VERSION=0052.00v-20170530 - XPI_KERNEL_VERSION=000270000 - OS_VERSION=MX200001/RFS30250600/ - PACKAGES_INSTALLED=alsa-lib:1.0.0; busybox:1.2.6.2 - GUI_MANAGER_VERSION=3.25 - UNIT_ID=288-728-276/12000000 - UNIT_MODEL=MX915 - RFIDFW_VERSION=VOS-CTLS-4.02.04A - DEVICE_TIME=20210416180022 - SECURE_PACKETS=aes - DUKPT0=FFFF5B0999000220024F - ADE0=FFFF4950720008800875 terminalId: '1742' server: name: U2API01CE Signature: type: object properties: data: $ref: '#/components/schemas/SignatureData' format: $ref: '#/components/schemas/SignatureFormat' DevicePromptTermsAndConditions: type: object required: - value properties: result: $ref: '#/components/schemas/DevicePromptTermsAndConditionsResult' value: $ref: '#/components/schemas/DevicePromptTermsAndConditionsValue' devices_processform_comengdevice: title: Commerce Engine For On Premise required: - dateTime - form properties: dateTime: $ref: '#/components/schemas/DateTime' form: oneOf: - $ref: '#/components/schemas/DeviceProcessFormTypeMultiButtonScrollingText' - $ref: '#/components/schemas/DeviceProcessFormTypeMessage' - $ref: '#/components/schemas/DeviceProcessFormTypeQRDisplay' device: type: object properties: nextStep: $ref: '#/components/schemas/DeviceNextStep' ui: $ref: '#/components/schemas/UIRequest' ErrorSecondaryCode: type: integer maxLength: 4 readOnly: true example: 0 description: 'This code supplements the code specified in the `error.primaryCode` field to provide additional information about the error that occurred. ' PrintFormat: type: string enum: - structured example: structured description: 'Specifies the receipt printing format being used. ' DeviceFormQRCode: type: object properties: value: type: string minLength: 1 maxLength: 1024 example: www.shift4.com description: 'Contains the QR Code URL string. This value will be converted to a QR code and displayed on the device. ' ConnectivityGateway: type: string example: 192.168.4.1 description: 'Default gateway ' DeviceLineItemsArray: type: array minItems: 1 maxItems: 10 items: type: string example: - Hamburger - Fries - Soda - Cookie description: 'An array of line items to display on the UTG-controlled device. ' devices_print_comengdevice_legacy: title: Commerce Engine On Premise - Legacy type: object required: - dateTime - receipt properties: dateTime: $ref: '#/components/schemas/DateTime' receipt: $ref: '#/components/schemas/ReceiptArrayDevicesPrint' HardwareBatteryLevel: type: string example: '83' description: 'The current battery level on the device. Returns `null` if the device does not have a battery ' ServerNameComEng: type: string maxLength: 50 example: Commerce Engine K description: 'The name of the server that processed the request. ' FirmwareEMVKernelVersion: type: string example: v659 2025.02.26 description: 'The EMV kernel version. ' DeviceFormResult: type: string maxLength: 5 readOnly: true example: '87' description: 'A five-character, alphanumeric string containing the ID of the button pressed by the consumer on a UTG-controlled PIN pad. ' Timeout: type: number example: 0 description: 'Optional field that will set the timeout value in seconds. Sending `0` will set an indefinite timeout that can only be cancelled by sending a /devices/reset request. Commerce Engine will use its default value if not sent. ' TipPreset2: type: number example: 20 description: 'The preset value for the preset number 2. If `presetType = percent` send the percentage value. If `presetType = amount` send the amount value. ' ReceiptArrayDevicesPrint: type: array items: $ref: '#/components/schemas/ReceiptDevicesPrint' example: - key: print printValue: Text to print goes here description: 'Array containing the receipt text data to print. See the [Supporting Built-In Receipt Printing Capability on Devices](/guides/core-concepts/printing-receipts#supporting-built-in-receipt-printing-capability-on-devices) ' UIMode: type: string enum: - light - dark example: dark description: 'Set the UI to light mode by sending `light` or dark mode by sending `dark` ' DeviceTerminalIdRequired: type: string maxLength: 32 example: '1742' description: 'To prompt a specific UTG-controlled PIN pad in a request, the API Terminal ID configured in UTG TuneUp must be specified in this field. ' ConnectivityDNS1: type: string example: 8.8.8.8 description: 'Primary DNS server address ' devices_promptsignature_utgdevice: title: UTG Controlled Device type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceOnlyTID' example: dateTime: '2021-04-15T09:18:23.283-07:00' device: terminalId: '1742' SignatureFormat: type: string minLength: 1 maxLength: 1 example: P enum: - P description: 'The data format the signature data will be in. "P" for PNG format. ' devices_promptcardread_utgdevice: title: UTG Controlled Device required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' TipPresetType: type: string enum: - none - percent - amount example: percent description: 'The tip option selected by the cardholder. | Value | Description | |---------|--------------------------------------------------------------------------------------------------------------------| | none | Skips the preset screen and goes direclty to the other tip amount screen. | | percent | Display the preset screen showing preset percentages. Must include `tip.preset1`, `tip.preset2`, and `tip.preset3` | | amount | Display the preset screen showing preset amounts. Must include `tip.preset1`, `tip.preset2`, and `tip.preset3`. | ' CloudConnected: type: string enum: - Y - N example: Y description: 'Specifies whether or not the device is successfully connected to the cloud service. | Value | Description | |-------|----------------------------------------------------------| | Y | Device is successfully connected to the cloud service | | N | Device is unable to connect to the cloud service | ' TipDisplayNoTip: type: boolean example: true description: 'Send as `true` if you want to display No Tip instead of Cash Tip on the tip entry screen. Default: `false` ' DeviceSerialNumber: type: string maxLength: 64 example: '1170301234' description: 'Specifies the serial number of the device. ' devices_promptcardread_comengcloud: title: Commerce Engine For Cloud required: - dateTime - device properties: apiOptions: $ref: '#/components/schemas/ApiOptions' dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - cloud - manufacturer - serialNumber properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' nextStep: $ref: '#/components/schemas/DeviceNextStep' displayText: $ref: '#/components/schemas/DeviceDisplayText' ui: type: object properties: language: $ref: '#/components/schemas/UILanguageRequest' mode: $ref: '#/components/schemas/UIMode' suppressAll: $ref: '#/components/schemas/UISuppressAll' volume: $ref: '#/components/schemas/Volume' example: dateTime: '2024-05-21T09:18:23.283-07:00' device: cloud: true manufacturer: PAX serialNumber: '1170301234' TipPreset3: type: number example: 25 description: 'The preset value for the preset number 3. If `presetType = percent` send the percentage value. If `presetType = amount` send the amount value. ' devices_print_comengdevice_structured: title: Commerce Engine For On Premise - Structured type: object required: - dateTime - print properties: dateTime: $ref: '#/components/schemas/DateTime' print: $ref: '#/components/schemas/Print' DevicePromptConfirmationQuestion: type: string maxLength: 64 writeOnly: true example: Rewards Program description: 'This field displays an inquiry prompting a consumer''s confirmation. ' ErrorPrimaryCode: type: integer maxLength: 4 readOnly: true example: 9842 description: 'Code indicating the type of error that occurred. Refer to the [Error Codes](/guides/appendices/error-codes) section of this document for more details. ' devices_print_comengcloud_legacy: title: Commerce Engine Cloud - Legacy type: object required: - dateTime - device - receipt properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceComEngCloud' receipt: $ref: '#/components/schemas/ReceiptArrayDevicesPrint' DeviceProcessFormTypeMultiButtonScrollingText: title: Multi Button Scrolling Text required: - type - buttons properties: type: type: string enum: - multiButtonScrollingText description: "Displays a form with header text, subheader text, scrolling body text and up to 4 buttons. \n\nWhen using this custom form type at least one of the following fields must also be included in the request: \n - `form.header`\n - `form.subHeader`\n - `form.text`\n" header: $ref: '#/components/schemas/DeviceFormHeader' subHeader: $ref: '#/components/schemas/DeviceFormSubHeader' text: $ref: '#/components/schemas/DeviceFormText' buttons: $ref: '#/components/schemas/DeviceFormButtonArray' timeout: $ref: '#/components/schemas/DeviceFormTimeout' FirmwareAndroidVersion: type: string example: '10' description: 'The Android OS version. ' DeviceInfoArray: type: array items: type: string description: 'An array of details regarding a UTG-controlled device. ' example: - NUMBER_MSR_SWIPES=1634 - NUMBER_BAD_TRACK1_READS=85 - NUMBER_BAD_TRACK2_READS=395 - NUMBER_BAD_TRACK3_READS=337 - NUMBER_SIGNATURE_TOTALS=0000 - NUMBER_REBOOTS=0760 - TERMINAL_NAME=iPP350 - UNIT_SERIAL_NUMBER=2013016PT012622 - OS_VERSION=5220 - APPLICATION_VERSION=2156 - SECURITY_LIBRARY_VERSION=0415 - TDA_VERSION=1603 - EFTL_VERSION=0000 - EFTP_VERSION=0000 - RAM_SIZE=8628 - FLASH_SIZE=111064 - MANUFACTURE_DATE=2013-01-16 - CPEM_TYPE=1 - PEN_STATUS=UNSUPPORTED_DEVICE - APPLICATION_NAME=Retail Base - MANUFACTURE_ID=INGNAR - DIGITIZER_VERSION=0000 - MANUFACTURER_SERIAL_NUMBER=71429877 - DUKPT0=F876543210016F8000F7 - DUKPT4=FFFF49003614954000B9 DevicePromptTermsAndConditionsValue: type: string maxLength: 4096 writeOnly: true example: Terms and Conditions description: 'Contains the Terms and Conditions text for the UTG or Commerce Engine controlled PIN pad to display to a consumer. Add `\r\n` to force a new line. ' UILanguageResponse: type: string example: en description: 'ISO 639-1 2-letter language code specifying the UI display language (e.g. "en", "fr", "de"). ' HardwareStorageMbFree: type: string example: '9869' description: 'The amout of free storage space in megabytes. ' DeviceFormText: type: object properties: value: type: string maxLength: 4096 example: Body text goes here description: 'Body text. Add `\r\n` to force a new line. ' P2PEFormat: type: string minLength: 2 maxLength: 2 enum: - '01' - '02' - '03' - '04' - '05' example: '01' description: 'Classifies the type of payment device being used for P2PE. Value|Description -----|----------- 01 | IDTech Enhanced Encryption format 02 | IDTech Enhanced Encryption format USB HID 03 | Ingenico format 04 | VeriFone format 05 | Shift4 TDES DUKPT format 07 | AES 128 or 256 ' DeviceFormSubHeader: type: object properties: value: type: string maxLength: 100 example: Sub Header text goes here description: 'Sub Header text. Add `\r\n` to force a new line. ' Volume: type: object properties: suppressBeeper: $ref: '#/components/schemas/VolumeSuppressBeeper' DeviceModelDevicesInfo: type: string maxLength: 50 example: A800 description: 'Specifies the model of the device. ' HardwareCPU: type: string example: cortex-a53 (8 cores @ 1.8 GHz) description: 'The CPU model information. ' SecurityPCIFirmwareVersion: type: string example: secver_26.01.0128;firmver_26.01.0128 description: 'The PCI firmware version ' CloudRegistered: type: string enum: - Y - N example: Y description: 'Specifies whether or not the device is registerd with the cloud service. | Value | Description | |-------|----------------------------------------------------------| | Y | Device is successfully registered with the cloud service | | N | Device is not registered with the cloud service | ' ConnectivityInterfaces: type: object properties: ethernet: type: object properties: mac: type: string example: F4:02:23:43:69:FD description: 'Ethernet MAC address ' isUp: type: string enum: - Y - N example: N description: 'Returns ''Y'' if the interface is up and `N` if the interface is down. ' wifi: type: object properties: mac: type: string example: F4:02:23:7F:57:C6 description: 'Wi-Fi MAC address ' ssid: type: string example: MerchantWiFi description: 'Wi-Fi SSID ' isUp: type: string enum: - Y - N example: Y description: 'Returns ''Y'' if the interface is up and `N` if the interface is down. ' signalStrength: type: string example: -46 dBm description: 'The Wi-Fi signal strength ' cellular: type: object properties: imei: type: string example: '354970460015528' description: 'Cellular International Mobile Equipment Identity (IMEI) value ' iccid: type: string example: '8901240204204081862' description: 'Cellular Integrated Circuit Card Identifier (ICCID) ' carrier: type: string example: T-Mobile description: 'Cellular mobile network carrier ' isUp: type: string enum: - Y - N example: Y description: 'Returns ''Y'' if the interface is up and `N` if the interface is down. ' signalStrength: type: string example: -50 dBm description: 'The Cellular signal strength ' example: wifi: mac: F4:02:23:7F:57:C6 ssid: MerchantWiFi isUp: Y signalStrength: -46 dBm cellular: imei: '354970460015528' iccid: '8901240204204081862' carrier: T-Mobile isUp: Y signalStrength: -50 dBm devices_termsandconditions_utgdevice: title: UTG Controlled Device type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId - promptTermsAndConditions properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' promptTermsAndConditions: $ref: '#/components/schemas/DevicePromptTermsAndConditions' PrintDataAlignment: type: string enum: - center - left - right example: center description: 'Specifies where the print element should be aligned ' ApplicationsArray: type: array items: type: object properties: name: type: string example: Commerce Engine description: 'Application name ' packageName: type: string example: com.priv.shift4.commerceengine description: 'Application package name ' versionName: type: string example: 2.14.0 description: 'Application version name ' versionCode: type: number example: 2140000 description: 'Application version code ' example: - name: Commerce Engine packageName: com.priv.shift4.commerceengine versionName: 2.14.0 versionCode: 2140000 - name: Shift4 SOLO packageName: com.shift4.bonepony versionName: 2.149.0 versionCode: 2149000 devices_processform_response_comeng_message: title: Commerce Engine Form Type message properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' server: $ref: '#/components/schemas/Server' P2PE: type: object required: - data - format properties: data: $ref: '#/components/schemas/P2PEData' format: $ref: '#/components/schemas/P2PEFormat' ksn: $ref: '#/components/schemas/P2PEKSN' devices_termsandconditions_comengcloud: title: Commerce Engine For Cloud type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - cloud - manufacturer - serialNumber - promptTermsAndConditions properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' promptTermsAndConditions: $ref: '#/components/schemas/DevicePromptTermsAndConditionsComEng' nextStep: $ref: '#/components/schemas/DeviceNextStep' ui: $ref: '#/components/schemas/UIRequest' DeviceOnlyTIDResponse: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' DeviceFormItemsArray: type: array items: $ref: '#/components/schemas/DeviceFormItems' example: - key: 1 value: John Smith - key: 2 value: 123 Open St description: 'An array of key/value pairs used to populate fields on the custom form ' DeviceFormResponse: type: object properties: name: $ref: '#/components/schemas/DeviceFormName' result: $ref: '#/components/schemas/DeviceFormResult' P2PEKSN: type: string maxLength: 20 example: 6299495001100E200041 description: 'The key serial number which was used to encrypt the P2PE data. ' devices_promptinput_utgdevice: title: UTG Controlled Device type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - terminalId - promptInput properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdRequired' promptInput: $ref: '#/components/schemas/DevicePromptInput' ConnectivityIP: type: string example: 192.168.4.200 description: 'The device IP address ' HardwareStorageMbUsed: type: string example: '2428' description: 'The amout of used storage space in megabytes. ' DeviceManufacturer: type: string enum: - Ingenico - Innowi - PAX - Verifone - Castles - Miura example: PAX description: 'Specifies the company which manufactured the device. ' DeviceTerminalIdDevicesInfo: type: string example: GBAIOQAN11 description: 'Terminal ID configured for the device. ' DevicePromptConfirmationResult: type: string maxLength: 1 readOnly: true enum: - Y - N example: N description: 'In the response to a Prompt Confirmation request, this field specifies whether the consumer has opted to confirm (''Y'') or deny (''N'') the requested value. ' P2PEData: type: string maxLength: 2048 example: 027101801F2D1E00939B%*432100******1119^VS/DUAL TRACK^2212******?*;432100******1119=2212******?*CECE3FCE7781142BEC8D0E267AE89F5D3C7E235BF1A70E637951E8D93003E5A2586C336CA4A3B31F6639B04005BB12A716D8BC4D3AB125C27AB11A9DDC02816569D42A20B036EE5E2C71CB70565FB43B000000000000000000000000000000000000000000000000000000000000000000000000000000003434345434363138343962994950010038200415953903 description: 'The full output of a P2PE keypad/magnetic swipe reader (MSR). ' UISupportedLanguages: type: array items: type: string example: - en - fr - es - de - it - nl - pt - lt - 'no' - sv - da - ro - cs - fi - pl description: 'Array of ISO 639-1 2-letter language codes supported by the device (e.g. "en", "fr", "de"). ' ConnectivityActiveInterface: type: string example: wifi description: 'The network interface that is active on the device ' UILanguageRequest: type: string example: en description: 'ISO 639-1 2-letter language code specifying the UI display language for the transaction (e.g. "en", "fr", "de"). When provided, overrides the device''s configured default language for the duration of the session. Value persists across transactions until a new value is passed. Send default to reset the device back to its default language. ' TipSelectedOption: type: string enum: - preset1 - preset2 - preset3 - other - notip example: preset2 description: 'The tip option selected by the cardholder. | Value | Description | |---------|------------------------------------------------| | preset1 | The cardholder selected the preset 1 button | | preset2 | The cardholder selected the preset 2 button | | preset3 | The cardholder selected the preset 3 button | | other | The cardholder selected the other button | | notip | The cardholder selected the cash/no tip button | ' DeviceTerminalId: type: string maxLength: 32 example: '1742' description: 'To prompt a specific UTG-controlled PIN pad in a request, the API Terminal ID configured in UTG TuneUp must be specified in this field. ' CardMaskedNumber: type: string maxLength: 32 example: XXXXXXXXXXXX1119 description: 'The card number field will always be masked when returned in a response. ' ConnectivityDNS2: type: string example: 8.8.4.4 description: 'Secondary DNS server address ' DeviceFormButtonArray: type: array minItems: 1 maxItems: 4 items: type: object required: - id - text properties: id: type: string description: "ID value used to identify which button is pressed. \n\nThe ID of the button the user selected is returned in the `result.form.buttonSelected.id` response field.\n" text: type: string maxLength: 114 description: "Text to display on the button. \n\nThe text of the button the user selected is returned in the `result.form.buttonSelected.text` response field.\n" example: - id: '1' text: Accept - id: '2' text: Decline description: 'Array of 1 - 4 buttons to be displayed on the device. ' ErrorShortText: type: string maxLength: 16 readOnly: true example: NOT IN CARDRANGE description: 'Abbreviated error message that is always returned if an error condition exists ' DeviceComEngCloud: type: object required: - cloud - manufacturer - serialNumber properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' OfflineMode: type: string enum: - Y - N - U example: N description: 'Specifies whether or not the device is in offline mode. | Value | Description | |-------|--------------------| | Y | Device is offline | | N | Device is online | | U | Offline status is unknown. For example, when sending the Get Device Status command via Commerce Engine For Cloud and the device is not connected.| ' devices_promptinput_comengcloud: title: Commerce Engine For Cloud type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - cloud - manufacturer - serialNumber - promptInput properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' promptInput: $ref: '#/components/schemas/DevicePromptInput' nextStep: $ref: '#/components/schemas/DeviceNextStep' ui: $ref: '#/components/schemas/UIRequest' devices_promptcardread_comengdevice: title: Commerce Engine For On Premise required: - dateTime properties: apiOptions: $ref: '#/components/schemas/ApiOptions' dateTime: $ref: '#/components/schemas/DateTime' device: type: object properties: terminalId: $ref: '#/components/schemas/DeviceTerminalIdComEng' nextStep: $ref: '#/components/schemas/DeviceNextStep' displayText: $ref: '#/components/schemas/DeviceDisplayText' ui: type: object properties: language: $ref: '#/components/schemas/UILanguageRequest' mode: $ref: '#/components/schemas/UIMode' suppressAll: $ref: '#/components/schemas/UISuppressAll' volume: $ref: '#/components/schemas/Volume' timeout: $ref: '#/components/schemas/Timeout' example: dateTime: '2024-05-21T09:18:23.283-07:00' LighthouseDataResponse: type: string example: eyJwYXltZW50SWQiOiI4NWM0MWNhNy01NzVjLTQzNGUtODIyZi0xYzZlOTE0ZDAzODYiLCJyZW1haW5pbmdBbW91bnQiOjB9 description: 'Base64 encoded JSON formatted data that will be returned from Lighthouse to be passed back to SkyTab. This data will contain variable information. ' TipBasisNotification: type: boolean example: true description: 'Send as `true` if you want to display the tip basis notification text on the tip screen. Must also include `amount.tipBasis` in the request if sending as `true`. Default: `false` ' ConnectivitySubnetMask: type: string example: 255.255.255.0 description: 'Subnet mask ' TipPreset1: type: number example: 15 description: 'The preset value for the preset number 1. If `presetType = percent` send the percentage value. If `presetType = amount` send the amount value. ' devices_print_utgdevice: title: UTG Controlled Device type: object required: - dateTime - device - receipt properties: dateTime: $ref: '#/components/schemas/DateTime' device: $ref: '#/components/schemas/DeviceOnlyTID' receipt: $ref: '#/components/schemas/ReceiptArrayDevicesPrint' devices_processform_response_comeng_multiButtonScrollingText: title: Commerce Engine Form Type multiButtonScrollingText properties: result: type: array items: type: object properties: dateTime: $ref: '#/components/schemas/DateTime' server: $ref: '#/components/schemas/Server' form: type: object properties: buttonSelected: type: object properties: id: type: string example: '1' description: "ID value identifying which button was selected. \n\nMatches the value recieved in the `form.buttons.id` request field.\n" text: type: string maxLength: 114 example: Accepted description: 'Button text value of the button that was selected. Matches the value recieved in the `form.buttons.text` request field. ' devices_promptsignature_comengcloud: title: Commerce Engine For Cloud type: object required: - dateTime - device properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - cloud - manufacturer - serialNumber properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' displayText: $ref: '#/components/schemas/DeviceDisplayText' nextStep: $ref: '#/components/schemas/DeviceNextStep' ui: $ref: '#/components/schemas/UIRequest' example: dateTime: '2024-05-21T09:18:23.283-07:00' device: cloud: true manufacturer: PAX serialNumber: '1170301234' SecurityPCIHardwareVersion: type: string example: A800-0AW-RE6-10AA description: 'The PCI hardware version ' AmountTipResponse: type: number maxLength: 14 example: 20 description: 'The tip amount of the transaction. ' VolumeSuppressBeeper: type: boolean example: true description: 'When `true`, the terminal suppresses all audible beeper output during the card-read window only — Contactless tap confirmation, MSR swipe, error/decline tones. ' DeviceProcessFormTypeQRDisplay: title: QR Display type: object required: - type - qrCode properties: type: type: string enum: - qrDisplay description: "Displays a QR code based form with header text, a QR code image and footer text. \n" qrCode: $ref: '#/components/schemas/DeviceFormQRCode' header: $ref: '#/components/schemas/DeviceFormHeader' footer: $ref: '#/components/schemas/DeviceFormFooter' timeout: $ref: '#/components/schemas/DeviceFormTimeout' PrintDataBMP: title: BMP Image type: object description: 'Used to print images, such as a company logo in BPM format. Can also be used to print the full receipt if the entire receipt data is formatted into a BMP image. ' required: - type - alignment - value properties: type: type: string enum: - bmp alignment: $ref: '#/components/schemas/PrintDataAlignment' value: type: string description: 'Base64 encoded BMP image data ' CardEntryModeResponseTrackOnly: type: string minLength: 1 maxLength: 1 enum: - '1' - '2' example: '2' description: "The method used to capture a payment card in an authorization/sale request. \n\nValue|Description\n-----|-----------\n1 | Track 1 Only or Dual Track (Track 1 & 2)\n2 | Track 2 Only\n" TipPresetDefault: type: string enum: - '1' - '2' - '3' - none example: '2' description: 'The preset value that is selected by default. If not sent in the request it will default to to preset 2. | Value | Description | |-------|-----------------------| | 1 | Preset 1 is selected | | 2 | Preset 2 is selected | | 3 | Preset 3 is selected | | none | No preset is selected | ' DeviceCloud: type: boolean example: true description: 'Indicates the transaction will be processed via the Commerce Engine solution for cloud based POS/PMS systems. Value must be sent as `true` in order to route the request to the payment device at the merchant location. ' devices_processform_comengcloud: title: Commerce Engine For Cloud required: - dateTime - device - form properties: dateTime: $ref: '#/components/schemas/DateTime' device: type: object required: - cloud - manufacturer - serialNumber properties: cloud: $ref: '#/components/schemas/DeviceCloud' manufacturer: $ref: '#/components/schemas/DeviceManufacturer' serialNumber: $ref: '#/components/schemas/DeviceSerialNumber' nextStep: $ref: '#/components/schemas/DeviceNextStep' form: oneOf: - $ref: '#/components/schemas/DeviceProcessFormTypeMultiButtonScrollingText' - $ref: '#/components/schemas/DeviceProcessFormTypeMessage' - $ref: '#/components/schemas/DeviceProcessFormTypeQRDisplay' ui: $ref: '#/components/schemas/UIRequest' responses: TerminalIDErrorResponse: description: Error content: application/json: schema: properties: result: type: array items: type: object properties: error: $ref: '#/components/schemas/Error' server: $ref: '#/components/schemas/Server' example: result: - error: primaryCode: 9956 secondaryCode: 0 shortText: TID NO PINPAD longText: Terminal(100) is not configured for any PinPad DEFAULT server: name: U2API01CE TimeoutResponse: description: Timeout content: application/json: schema: properties: result: type: array items: type: object properties: error: $ref: '#/components/schemas/Error' lighthouse: type: object properties: data: $ref: '#/components/schemas/LighthouseDataResponse' server: $ref: '#/components/schemas/Server' example: result: - error: primaryCode: 9951 secondaryCode: 0 shortText: RESPONSE TIMEOUT longText: Timeout waiting for response across the internet lighthouse: data: eyJwYXltZW50SWQiOiI4NWM0MWNhNy01NzVjLTQzNGUtODIyZi0xYzZlOTE0ZDAzODYiLCJyZW1haW5pbmdBbW91bnQiOjB9 server: name: U2API01CE parameters: AccessToken: required: true name: AccessToken in: header schema: type: string format: uuid maxLength: 52 example: EA79FB05-3AA7-4500-AF9A-73F986FF2C1D description: 'A security credential used to authenticate API requests and all [i4Go®](https://s4-myportal.s3.amazonaws.com/downloads/documentation/i4go/i4go%20technical%20reference%20guide.pdf) authorizeClient/preauthorizeClient requests. An Access Token is the alias for the merchant account and interface being used. The Access Token is required in all requests except an [Access Token Exchange](/apis/payments-platform-rest/openapi/credentials/accesstokenexchange) request, which generates an Access Token using an `authToken` and `clientGuid`. ' CompanyName: required: true name: CompanyName in: header schema: type: string maxLength: 26 example: PAWS description: 'Refers to the vendor or partner that designed and certified the interface. The information you use in this field should match what Shift4 has on file or what was agreed upon in your Integration Plan. The following special characters are not allowed: $ % : ^ - ~ ` < > , ? “ ” ‘ ’ { } [ ] \ + = ' InterfaceName: required: true name: InterfaceName in: header schema: type: string maxLength: 25 example: ForwardPOS description: 'Refers to the name of the program or application that is sending requests to Shift4. This should be the name of the program that you purchased or created. The following special characters are not allowed: $ % : ^ - ~ ` < > , ? “ ” ‘ ’ { } [ ] \ + = ' TerminalID: required: true name: TerminalId in: header schema: type: string maxLength: 32 example: '1742' description: 'The API Terminal ID configured in UTG TuneUp must be specified in this field. ' TerminalIDDevicesInfo: name: TerminalId in: header schema: type: string maxLength: 32 example: '1742' description: "**Conditional: Required for UTG, optional for Commerce Engine.**\n \nThe API Terminal ID assigned to the device. \n\nFor UTG it is configured in TuneUp and must be included in the request\n\nFor Commerce Engine it is defined in the Terminal Management System (TMS) and is optional. If sent, it must match the value defined in the TMS.\n" InterfaceVersion: required: true name: InterfaceVersion in: header schema: type: string maxLength: 11 example: '2.1' description: 'Refers to the version of the program or application that is sending requests to Shift4. The following special characters are not allowed: $ % : ^ - ~ < > , ? “ ” ‘ ’ { } [ ] \ + = ' securitySchemes: AccessToken: type: apiKey name: AccessToken in: header description: "A security credential used to authenticate API requests and all [i4Go®](https://s4-myportal.s3.amazonaws.com/downloads/documentation/i4go/i4go%20technical%20reference%20guide.pdf) authorizeClient/preauthorizeClient requests. An Access Token is the alias for the merchant account and interface being used. \n\nExample:\n ```\n AccessToken: EA79FB05-3AA7-4500-AF9A-73F986FF2C1D\n ```\n" HMAC-SHA256: type: http scheme: hmac-sha256 description: "Authentication using HMAC-256 signatures as the authorization scheme.\n\nSent in the `Authorization` header in the following format:\n\n`Authorization`: **HMAC-SHA256** `Credential`={value}&`Signature`={value}\n\n| Argument | Description |\n|---------------|--------------------------------------------------|\n| HMAC-SHA256 | Authorization scheme. |\n| Credential | The ID of the key used to compute the signature. |\n| Signature | base64 encoded HMACSHA256 value. |\n\nExample: \n ```\n Authorization: HMAC-SHA256 Credential=AESKEY1&Signature=8SFtIc6zQlswxAZqDKXL+BpRmlDvIWyjOwU8wdl0zK4=\n ```\n"