National Australia Bank Create and Update devices API
Create and update terminal devices.
Create and update terminal devices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/national-australia-bank:national-australia-bank-create-and-update-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
version: 0.0.1
title: CyberSource Merged Spec Create and Update devices API
servers:
- url: https://apitest.cybersource.com/
tags:
- name: Create and Update devices
description: Create and update terminal devices.
paths:
/dms/v2/devices:
post:
summary: Create device or terminal
description: Create a device or terminal for a merchant.
tags:
- Create and Update devices
operationId: createDevice
responses:
'201':
description: OK
content:
application/hal+json;charset=utf-8:
schema:
type: object
required:
- id
properties:
id:
type: string
description: A globally unique device ID identifying the newly created terminal.
maxLength: 36
deviceExternalId:
type: string
description: An identifier in the partner system which is used to setup the terminal firmware, software and configurations.
maxLength: 64
cardEncryptionKsi:
type: string
description: Key serial identifier of the card encryption BDK that is loaded on this device.
maxLength: 32
cardEncryptionKeyName:
type: string
description: An optional name of the card encryption BDK that is loaded on this device.
maxLength: 64
pinEncryptionKsi:
type: string
description: Key serial identifier of the PIN encryption BDK that is loaded on this device.
maxLength: 32
pinEncryptionKeyName:
type: string
description: An optional name of the PIN BDK that is loaded on this device,
maxLength: 64
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'400':
description: Bad Request
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: The status of the submitted request.
enum:
- BAD_REQUEST
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
details:
type: array
description: An optional array which provides more details of the error.
items:
type: object
properties:
field:
type: string
description: This is the flattened JSON object field name/path that is either missing or invalid.
reason:
type: string
description: 'Possible reasons for the error.
'
code:
type: string
description: An optional short string which identifies the exact field error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'401':
description: Unauthorized
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- UNAUTHORIZED
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'403':
description: Forbidden
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- FORBIDDEN
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'500':
description: Unexpected system error or system timeout.
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- INTERNAL_SERVER_ERROR
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
x-example:
example0:
summary: Create a device based on input parameters.
value:
merchantId: testrest
type: Terminal
partName: MIURA M010
serialNumber: '456345234'
hardwareRevision: '234563'
p2peStatus: DISABLED
example1:
summary: Create a Tap to Phone device based on input parameters.
value:
merchantId: testrest
type: MOBILE
partName: TAP_TO_PHONE Android
description: TTP device
serialNumber: '999725121439341'
hardwareRevision: Samsung_Z4
requestBody:
content:
application/json;charset=utf-8:
schema:
type: object
required:
- merchantId
- type
- partName
properties:
merchantId:
type: string
description: 'Merchant ID associated to the new device or terminal.
This merchant ID will be treated as the primary for this terminal.
'
maxLength: 30
type:
type: string
description: Device type
enum:
- TERMINAL
- MOBILE
maxLength: 64
partName:
type: string
description: 'Name of the device as identified in CyberSource catalog. This should be one of the supported CyberSource device.
This field is optional if make and model are provided.
'
enum:
- VERIFONE E355
- VERIFONE P400
- VERIFONE M400
- INGENICO LINK 2500
- INGENICO LANE 3000
- INGENICO LANE 5000
- PAX A920
- PAX S80
- PAX D135
- PAX SP30
- PAX S300
- PAX A80
- PAX Aries 6
- PAX Aries 8
- PAX E600
- PAX E700
- PAX E800
- PAX E800 lite
- PAX A60
- PAX Q20
- PAX IM30
- PAX A920 MAX
- Tap_to_Phone Android
maxLength: 64
make:
type: string
description: Device or Terminal manufacturer.
enum:
- PAX
- Verifone
- Ingenico
- Tap_to_Phone
model:
type: string
description: Device or Terminal model.
enum:
- E355
- P400
- M400
- LINK 2500
- LANE 3000
- LANE 5000
- A920
- S80
- D135
- SP30
- S300
- A80
- Aries 6
- Aries 8
- E600
- E700
- E800
- E800 lite
- A60
- Q20
- IM30
- A920 MAX
- Android
description:
type: string
description: An optional description or label for this terminal.
maxLength: 128
deviceExternalId:
type: string
description: An identifier in the partner system which is used setup the terminal firmware, software and configurations.
maxLength: 64
paymentProcessor:
description: Payment processor details associated to this terminal.
type: array
items:
type: object
properties:
name:
type: string
description: Payment processor name.
terminalId:
type: string
description: ID associated with payment processing for this terminal.
serialNumber:
type: string
description: 'Serial number of the terminal.
Once set, serialNumber cannot be updated to a new value.
'
maxLength: 64
cardEncryptionKsi:
type: string
description: Key serial identifier of the card encryption BDK that is loaded on this device.
maxLength: 32
cardEncryptionKeyName:
type: string
description: An optional name of the card encryption BDK that is loaded on this device.
maxLength: 64
pinEncryptionKsi:
type: string
description: Key serial identifier of the PIN encryption BDK that is loaded on this device.
maxLength: 32
pinEncryptionKeyName:
type: string
description: An optional name of the PIN BDK that is loaded on this device.
maxLength: 64
hardwareRevision:
type: string
description: Device or terminal hardware revison number.
maxLength: 64
firmwareVersion:
type: string
description: Device or terminal firmware or OS version.
maxLength: 64
paymentSoftwareVersion:
type: string
description: Device or terminal payment software version.
maxLength: 64
configVersion:
type: string
description: Device or terminal software configuration profile version.
maxLength: 64
teBagSerialNumber:
type: string
description: Serial number of the tamper evident bag used for shipping the terminal.
maxLength: 64
shippedDateInUTC:
type: string
format: date-time
description: '
Terminal shipped date in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the time. The Z indicates UTC.
'
shippingTrackingNumber:
type: string
description: Tracking number from the shipping carrier.
maxLength: 128
status:
type: string
description: 'Status of the terminal. Status cannot be made active without setting paymentProcessor, terminalId and serialNumber.
statusChangeReason should be "In Production" for active terminals.
'
enum:
- Active
- Inactive
default: Inactive
statusChangeReason:
type: string
description: Reason for change in status.
enum:
- In Production
- Pending Setup
- Other
ticketNumber:
type: string
description: An optional ticket number to track the device state.
maxLength: 128
comment:
type: string
description: An addtional comment about the device state.
maxLength: 256
p2peStatus:
type: string
description: P2PE status of the terminal.
enum:
- Enabled
- Disabled
p2peConfirmation:
type: string
description: 'P2PE confirmation status from the merchant.
This is recorded only if p2peStatus is "Enabled".
'
enum:
- Pending
- Confirmed
- Rejected
p2peConfirmationDateInUTC:
type: string
format: date-time
description: '
P2PE confirmation timestamp in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the time. The Z indicates UTC.
This is recorded only if p2peConfirmation is "Confirmed".
'
description: A new device or terminal.
/dms/v2/devices/{id}:
patch:
summary: Update a device or terminal
description: Update a device or terminal for a merchant.
tags:
- Create and Update devices
operationId: updateDevice
parameters:
- name: id
in: path
required: true
description: Device ID
schema:
type: string
responses:
'200':
description: OK
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'400':
description: Bad Request
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: The status of the submitted request.
enum:
- BAD_REQUEST
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
details:
type: array
description: An optional array which provides more details of the error.
items:
type: object
properties:
field:
type: string
description: This is the flattened JSON object field name/path that is either missing or invalid.
reason:
type: string
description: 'Possible reasons for the error.
'
code:
type: string
description: An optional short string which identifies the exact field error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'401':
description: Unauthorized
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- UNAUTHORIZED
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'403':
description: Forbidden
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- FORBIDDEN
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
'500':
description: Unexpected system error or system timeout.
content:
application/hal+json;charset=utf-8:
schema:
type: object
properties:
status:
type: string
description: 'The status of the submitted request.
'
enum:
- INTERNAL_SERVER_ERROR
message:
type: string
description: The detail message related to the status and reason listed above.
code:
type: string
description: An optional short string which identifies the exact error.
submitTimeUtc:
type: string
description: 'Time of request in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the
time. The Z indicates UTC.
'
requestBody:
content:
application/json;charset=utf-8:
schema:
type: object
required:
- merchantId
properties:
merchantId:
type: string
description: 'Merchant ID associated to the new device or terminal.
This merchant ID will be treated as the primary for this terminal.
'
maxLength: 30
description:
type: string
description: An optional description or label for this terminal.
maxLength: 128
deviceExternalId:
type: string
description: An identifier in the partner system which is used setup the terminal firmware, software and configurations.
maxLength: 64
paymentProcessor:
description: Payment processor details associated to this terminal.
type: array
items:
type: object
properties:
name:
type: string
description: Payment processor name.
terminalId:
type: string
description: ID associated with payment processing for this terminal.
serialNumber:
type: string
description: 'Serial number of the terminal.
Once set, serialNumber cannot be updated to a new value.
'
maxLength: 64
cardEncryptionKsi:
type: string
description: Key serial identifier of the card encryption BDK that is loaded on this device.
maxLength: 32
cardEncryptionKeyName:
type: string
description: An optional name of the card encryption BDK that is loaded on this device.
maxLength: 64
pinEncryptionKsi:
type: string
description: Key serial identifier of the PIN encryption BDK that is loaded on this device.
maxLength: 32
pinEncryptionKeyName:
type: string
description: An optional name of the PIN BDK that is loaded on this device.
maxLength: 64
hardwareRevision:
type: string
description: Device or terminal hardware revison number.
maxLength: 64
firmwareVersion:
type: string
description: Device or terminal firmware or OS version.
maxLength: 64
paymentSoftwareVersion:
type: string
description: Device or terminal payment software version.
maxLength: 64
configVersion:
type: string
description: Device or terminal software configuration profile version.
maxLength: 64
teBagSerialNumber:
type: string
description: Serial number of the tamper evident bag used for shipping the terminal.
maxLength: 64
shippedDateInUTC:
type: string
format: date-time
description: '
Terminal shipped date in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the time. The Z indicates UTC.
'
shippingTrackingNumber:
type: string
description: Tracking number from the shipping carrier.
maxLength: 128
status:
type: string
description: 'Status of the terminal. Status cannot be made active without setting paymentProcessor, terminalId and serialNumber.
statusChangeReason should be "In Production" for active terminals.
'
enum:
- Active
- Inactive
default: Inactive
statusChangeReason:
type: string
description: "Reason for change in status.\nTerminals only with following exsting statusChangeReason can be updated:\n -- In Production\n -- Pending Setup\n -- Other\n"
enum:
- In Production
- Pending Setup
- Returned
- Replaced
- Lost/Stolen
- Broken/Damaged
- End of Life
- Other
replacementReason:
type: string
description: 'Reason for replacement of this device.
This is only recorded if statusChangeReason is "Replaced".
'
enum:
- Chip Read Error
- Compromised
- Incorrect Key Injection
- Incorrect Password
- Power Issue
- Suspected Tampering
- Tampered
- Terminal Error
- Other
replacementSerialNumber:
type: string
description: 'The serial number of the device that replaces the current one.
This is only recorded if statusChangeReason is "Replaced".
'
maxLength: 64
ticketNumber:
type: string
description: An optional ticket number to track the device state.
maxLength: 128
comment:
type: string
description: An addtional comment about the device state.
maxLength: 256
p2peStatus:
type: string
description: 'P2PE status of the terminal.
If existing p2peStatus is "Disabled", it cannot be switched back to "Enabled".
'
enum:
- Enabled
- Disabled
p2peConfirmation:
type: string
description: 'P2PE confirmation status from the merchant.
This is recorded only if p2peStatus is "Enabled".
'
enum:
- Pending
- Confirmed
- Rejected
p2peConfirmationDateInUTC:
type: string
format: date-time
description: '
P2PE confirmation timestamp in UTC. `Format: YYYY-MM-DDThh:mm:ssZ`.
Example 2016-08-11T22:47:57Z equals August 11, 2016, at 22:47:57 (10:47:57 p.m.). The T separates the date and the time. The Z indicates UTC.
This is recorded only if p2peConfirmation is "Confirmed".
'
description: Update a device or terminal.