Card terminals
Physical card terminals.
The object#
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| inventorylocationid | integer | Inventorylocationid. Id only. |
| inventorylocation | string(20) | The locationcode of the referenced inventorylocations, instead of the id. Send this or inventorylocationid, not both unless they agree. |
| code | string(255) | Short code identifying the terminal wherever one is picked (POS, order payment). |
| description | string(255) | Free-form name of the terminal. |
| ip | string(45) | Network address the payment middleware uses to reach the terminal device. |
| port | integer | Port the payment middleware uses to reach the terminal device. |
| checkedoutread-only | boolean | True while a user has the terminal checked out for exclusive use. Managed by the check-out/check-in workflow, so it cannot be written through the API. |
| checkedoutuseridread-only | integer | The user who currently has the terminal checked out. Managed by the check-out workflow, so read-only. |
| checkedoutuserread-only | string(50) | The name of the user who currently has the terminal checked out. |
| checkacctid | integer | Reference to checkaccounts, by id. Write either this or checkacct. |
| checkacct | string(30) | The name of the referenced checkaccounts, instead of the id. Send this or checkacctid, not both unless they agree. |
| cancel | boolean | Cancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable. |
| entrydateread-only | string | When the record was created. |
| lastchangedateread-only | string | Last modification. Drives modifiedsince. |
| ccaccountid | integer | Reference to ccaccounts, by id. Write either this or ccaccount. |
| ccaccount | string(100) | The name of the referenced ccaccounts, instead of the id. Send this or ccaccountid, not both unless they agree. |
| settings | text | Terminal behavior options as a JSON object (timeouts, whether the customer name is sent to the device). Edited on the terminal setup screen. Stored as mediumtext, no practical length limit. |
| ccterminaltype | integer | What drives the terminal: 0 = a local device reached through the NolaPro payment middleware, 2 = a PaidYET terminal. |
| metaread-only | text | Device metadata synced from the payment provider (for PaidYET, the terminal record it reports). Maintained by the sync, so it cannot be written through the API. Stored as mediumtext, no practical length limit. |
| activeccterminallogidread-only | integer | The in-flight terminal transaction (ccterminallog id) while a payment is processing; 0 when idle. Managed by the payment flow, so it cannot be written through the API. |
| externalid | string(100) | Your own key. Scoped to your company. |
Endpoints#
POST/ccterminals/batch
207
Create many.
Requires scope banking:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
Body array
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| inventorylocationid | integer | Inventorylocationid. Id only. |
| inventorylocation | string(20) | The locationcode of the referenced inventorylocations, instead of the id. Send this or inventorylocationid, not both unless they agree. |
| code | string(255) | Short code identifying the terminal wherever one is picked (POS, order payment). |
| description | string(255) | Free-form name of the terminal. |
| ip | string(45) | Network address the payment middleware uses to reach the terminal device. |
| port | integer | Port the payment middleware uses to reach the terminal device. |
| checkedoutread-only | boolean | True while a user has the terminal checked out for exclusive use. Managed by the check-out/check-in workflow, so it cannot be written through the API. |
| checkedoutuseridread-only | integer | The user who currently has the terminal checked out. Managed by the check-out workflow, so read-only. |
| checkedoutuserread-only | string(50) | The name of the user who currently has the terminal checked out. |
| checkacctid | integer | Reference to checkaccounts, by id. Write either this or checkacct. |
| checkacct | string(30) | The name of the referenced checkaccounts, instead of the id. Send this or checkacctid, not both unless they agree. |
| cancel | boolean | Cancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable. |
| entrydateread-only | string | When the record was created. |
| lastchangedateread-only | string | Last modification. Drives modifiedsince. |
| ccaccountid | integer | Reference to ccaccounts, by id. Write either this or ccaccount. |
| ccaccount | string(100) | The name of the referenced ccaccounts, instead of the id. Send this or ccaccountid, not both unless they agree. |
| settings | text | Terminal behavior options as a JSON object (timeouts, whether the customer name is sent to the device). Edited on the terminal setup screen. Stored as mediumtext, no practical length limit. |
| ccterminaltype | integer | What drives the terminal: 0 = a local device reached through the NolaPro payment middleware, 2 = a PaidYET terminal. |
| metaread-only | text | Device metadata synced from the payment provider (for PaidYET, the terminal record it reports). Maintained by the sync, so it cannot be written through the API. Stored as mediumtext, no practical length limit. |
| activeccterminallogidread-only | integer | The in-flight terminal transaction (ccterminallog id) while a payment is processing; 0 when idle. Managed by the payment flow, so it cannot be written through the API. |
| externalid | string(100) | Your own key. Scoped to your company. |
curl -X POST \ 'https://acme.nolapro.com/!/api/v2/ccterminals/batch' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '[ { "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1 } ]'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals/batch'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ [ 'inventorylocationid' => 104, 'inventorylocation' => 'Example inventorylocation', 'code' => 'ACME-01', 'description' => 'Example description', 'ip' => 'Example ip', 'port' => 1, ], ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.post( "https://acme.nolapro.com/!/api/v2/ccterminals/batch", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json=[ { "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1, }, ], ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals/batch', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify([ { inventorylocationid: 104, inventorylocation: "Example inventorylocation", code: "ACME-01", description: "Example description", ip: "Example ip", port: 1, }, ]), } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var body = new[] { new { inventorylocationid = 104, inventorylocation = "Example inventorylocation", code = "ACME-01", description = "Example description", ip = "Example ip", port = 1, }, }; var req = new HttpRequestMessage(HttpMethod.Post, "https://acme.nolapro.com/!/api/v2/ccterminals/batch") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
GET/ccterminals
200403
List card terminals.
Requires scope banking:read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| inventorylocationid | query | string | Restrict to one inventorylocationid. |
| description | query | string | description. Partial match, case-insensitive. |
| code | query | string | code. Partial match, case-insensitive. |
| cancel | query | string | Defaults to false. Pass true or any. |
| externalid | query | string | Exact match on your own key. |
| include | query | string | Comma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions. |
When it fails
| Status | Code | Meaning |
|---|---|---|
| 403 | insufficient_scope | Token lacks read scope. |
curl \ 'https://acme.nolapro.com/!/api/v2/ccterminals' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.get( "https://acme.nolapro.com/!/api/v2/ccterminals", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals', { method: 'GET', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var res = await http.GetAsync( "https://acme.nolapro.com/!/api/v2/ccterminals"); res.EnsureSuccessStatusCode();
POST/ccterminals
201400
Create.
Requires scope banking:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
Body
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| inventorylocationid | integer | Inventorylocationid. Id only. |
| inventorylocation | string(20) | The locationcode of the referenced inventorylocations, instead of the id. Send this or inventorylocationid, not both unless they agree. |
| code | string(255) | Short code identifying the terminal wherever one is picked (POS, order payment). |
| description | string(255) | Free-form name of the terminal. |
| ip | string(45) | Network address the payment middleware uses to reach the terminal device. |
| port | integer | Port the payment middleware uses to reach the terminal device. |
| checkedoutread-only | boolean | True while a user has the terminal checked out for exclusive use. Managed by the check-out/check-in workflow, so it cannot be written through the API. |
| checkedoutuseridread-only | integer | The user who currently has the terminal checked out. Managed by the check-out workflow, so read-only. |
| checkedoutuserread-only | string(50) | The name of the user who currently has the terminal checked out. |
| checkacctid | integer | Reference to checkaccounts, by id. Write either this or checkacct. |
| checkacct | string(30) | The name of the referenced checkaccounts, instead of the id. Send this or checkacctid, not both unless they agree. |
| cancel | boolean | Cancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable. |
| entrydateread-only | string | When the record was created. |
| lastchangedateread-only | string | Last modification. Drives modifiedsince. |
| ccaccountid | integer | Reference to ccaccounts, by id. Write either this or ccaccount. |
| ccaccount | string(100) | The name of the referenced ccaccounts, instead of the id. Send this or ccaccountid, not both unless they agree. |
| settings | text | Terminal behavior options as a JSON object (timeouts, whether the customer name is sent to the device). Edited on the terminal setup screen. Stored as mediumtext, no practical length limit. |
| ccterminaltype | integer | What drives the terminal: 0 = a local device reached through the NolaPro payment middleware, 2 = a PaidYET terminal. |
| metaread-only | text | Device metadata synced from the payment provider (for PaidYET, the terminal record it reports). Maintained by the sync, so it cannot be written through the API. Stored as mediumtext, no practical length limit. |
| activeccterminallogidread-only | integer | The in-flight terminal transaction (ccterminallog id) while a payment is processing; 0 when idle. Managed by the payment flow, so it cannot be written through the API. |
| externalid | string(100) | Your own key. Scoped to your company. |
When it fails
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | A required field was missing. |
curl -X POST \ 'https://acme.nolapro.com/!/api/v2/ccterminals' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '{ "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1 }'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ 'inventorylocationid' => 104, 'inventorylocation' => 'Example inventorylocation', 'code' => 'ACME-01', 'description' => 'Example description', 'ip' => 'Example ip', 'port' => 1, ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.post( "https://acme.nolapro.com/!/api/v2/ccterminals", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json={ "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1, }, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify({ inventorylocationid: 104, inventorylocation: "Example inventorylocation", code: "ACME-01", description: "Example description", ip: "Example ip", port: 1, }), } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var body = new { inventorylocationid = 104, inventorylocation = "Example inventorylocation", code = "ACME-01", description = "Example description", ip = "Example ip", port = 1, }; var req = new HttpRequestMessage(HttpMethod.Post, "https://acme.nolapro.com/!/api/v2/ccterminals") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 201
{
"inventorylocationid": 104,
"inventorylocation": "Example inventorylocation",
"code": "ACME-01",
"description": "Example description",
"ip": "Example ip",
"port": 1
}
GET/ccterminals/{id}
200404
Retrieve one record.
Requires scope banking:read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| idrequired | path | integer | The record id. |
| include | query | string | Comma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions. |
When it fails
| Status | Code | Meaning |
|---|---|---|
| 404 | not_found | No record with that id. |
curl \ 'https://acme.nolapro.com/!/api/v2/ccterminals/104' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals/104'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.get( "https://acme.nolapro.com/!/api/v2/ccterminals/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals/104', { method: 'GET', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var res = await http.GetAsync( "https://acme.nolapro.com/!/api/v2/ccterminals/104"); res.EnsureSuccessStatusCode();
Response 200
{
"inventorylocationid": 104,
"inventorylocation": "Example inventorylocation",
"code": "ACME-01",
"description": "Example description",
"ip": "Example ip",
"port": 1
}
PATCH/ccterminals/{id}
200404
Update.
Requires scope banking:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| idrequired | path | integer | The record id. |
Body
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| inventorylocationid | integer | Inventorylocationid. Id only. |
| inventorylocation | string(20) | The locationcode of the referenced inventorylocations, instead of the id. Send this or inventorylocationid, not both unless they agree. |
| code | string(255) | Short code identifying the terminal wherever one is picked (POS, order payment). |
| description | string(255) | Free-form name of the terminal. |
| ip | string(45) | Network address the payment middleware uses to reach the terminal device. |
| port | integer | Port the payment middleware uses to reach the terminal device. |
| checkedoutread-only | boolean | True while a user has the terminal checked out for exclusive use. Managed by the check-out/check-in workflow, so it cannot be written through the API. |
| checkedoutuseridread-only | integer | The user who currently has the terminal checked out. Managed by the check-out workflow, so read-only. |
| checkedoutuserread-only | string(50) | The name of the user who currently has the terminal checked out. |
| checkacctid | integer | Reference to checkaccounts, by id. Write either this or checkacct. |
| checkacct | string(30) | The name of the referenced checkaccounts, instead of the id. Send this or checkacctid, not both unless they agree. |
| cancel | boolean | Cancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable. |
| entrydateread-only | string | When the record was created. |
| lastchangedateread-only | string | Last modification. Drives modifiedsince. |
| ccaccountid | integer | Reference to ccaccounts, by id. Write either this or ccaccount. |
| ccaccount | string(100) | The name of the referenced ccaccounts, instead of the id. Send this or ccaccountid, not both unless they agree. |
| settings | text | Terminal behavior options as a JSON object (timeouts, whether the customer name is sent to the device). Edited on the terminal setup screen. Stored as mediumtext, no practical length limit. |
| ccterminaltype | integer | What drives the terminal: 0 = a local device reached through the NolaPro payment middleware, 2 = a PaidYET terminal. |
| metaread-only | text | Device metadata synced from the payment provider (for PaidYET, the terminal record it reports). Maintained by the sync, so it cannot be written through the API. Stored as mediumtext, no practical length limit. |
| activeccterminallogidread-only | integer | The in-flight terminal transaction (ccterminallog id) while a payment is processing; 0 when idle. Managed by the payment flow, so it cannot be written through the API. |
| externalid | string(100) | Your own key. Scoped to your company. |
When it fails
| Status | Code | Meaning |
|---|---|---|
| 404 | not_found | No record with that id. |
curl -X PATCH \ 'https://acme.nolapro.com/!/api/v2/ccterminals/104' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '{ "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1 }'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals/104'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => json_encode([ 'inventorylocationid' => 104, 'inventorylocation' => 'Example inventorylocation', 'code' => 'ACME-01', 'description' => 'Example description', 'ip' => 'Example ip', 'port' => 1, ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.patch( "https://acme.nolapro.com/!/api/v2/ccterminals/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json={ "inventorylocationid": 104, "inventorylocation": "Example inventorylocation", "code": "ACME-01", "description": "Example description", "ip": "Example ip", "port": 1, }, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals/104', { method: 'PATCH', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify({ inventorylocationid: 104, inventorylocation: "Example inventorylocation", code: "ACME-01", description: "Example description", ip: "Example ip", port: 1, }), } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var body = new { inventorylocationid = 104, inventorylocation = "Example inventorylocation", code = "ACME-01", description = "Example description", ip = "Example ip", port = 1, }; var req = new HttpRequestMessage(HttpMethod.Patch, "https://acme.nolapro.com/!/api/v2/ccterminals/104") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 200
{
"inventorylocationid": 104,
"inventorylocation": "Example inventorylocation",
"code": "ACME-01",
"description": "Example description",
"ip": "Example ip",
"port": 1
}
DELETE/ccterminals/{id}
200404
Cancel.
Requires scope banking:cancel.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| idrequired | path | integer | The record id. |
When it fails
| Status | Code | Meaning |
|---|---|---|
| 404 | not_found | No record with that id. |
curl -X DELETE \ 'https://acme.nolapro.com/!/api/v2/ccterminals/104' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/ccterminals/104'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'DELETE', ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.delete( "https://acme.nolapro.com/!/api/v2/ccterminals/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/ccterminals/104', { method: 'DELETE', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, } ); const data = await res.json();
using System.Net.Http.Json; var token = Environment.GetEnvironmentVariable("NP_TOKEN"); using var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var req = new HttpRequestMessage(HttpMethod.Delete, "https://acme.nolapro.com/!/api/v2/ccterminals/104"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 200
{
"inventorylocationid": 104,
"inventorylocation": "Example inventorylocation",
"code": "ACME-01",
"description": "Example description",
"ip": "Example ip",
"port": 1
}