Product tax types
Product tax classification.
The object#
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| name | string(255) | Name of the product-type tax. |
| taxratenumber | string(6dp) | Numeric string, 6 decimal places. Not money - do not apply currency rounding. |
| glaccountid | integer | Reference to glaccounts, by id. Write either this or glaccount. |
| glaccount | string(20) | Code for the referenced glaccount, instead of the id. |
| 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. |
| states | text | States. Stored as text, no practical length limit. |
| externalid | string(100) | Your own key. Scoped to your company. |
Endpoints#
POST/producttypetaxes/batch
207
Create many.
Requires scope tax:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
Body array
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| name | string(255) | Name of the product-type tax. |
| taxratenumber | string(6dp) | Numeric string, 6 decimal places. Not money - do not apply currency rounding. |
| glaccountid | integer | Reference to glaccounts, by id. Write either this or glaccount. |
| glaccount | string(20) | Code for the referenced glaccount, instead of the id. |
| 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. |
| states | text | States. Stored as text, no practical length limit. |
| externalid | string(100) | Your own key. Scoped to your company. |
curl -X POST \ 'https://acme.nolapro.com/!/api/v2/producttypetaxes/batch' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '[ { "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states" } ]'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes/batch'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ [ 'name' => 'Example name', 'taxrate' => 'Example taxrate', 'glaccountid' => 104, 'glaccount' => 'Example glaccount', 'states' => 'Example states', ], ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.post( "https://acme.nolapro.com/!/api/v2/producttypetaxes/batch", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json=[ { "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states", }, ], ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes/batch', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify([ { name: "Example name", taxrate: "Example taxrate", glaccountid: 104, glaccount: "Example glaccount", states: "Example states", }, ]), } ); 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 { name = "Example name", taxrate = "Example taxrate", glaccountid = 104, glaccount = "Example glaccount", states = "Example states", }, }; var req = new HttpRequestMessage(HttpMethod.Post, "https://acme.nolapro.com/!/api/v2/producttypetaxes/batch") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
GET/producttypetaxes
200403
List product tax types.
Requires scope tax:read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| name | query | string | 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/producttypetaxes' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes'); 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/producttypetaxes", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes', { 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/producttypetaxes"); res.EnsureSuccessStatusCode();
POST/producttypetaxes
201400
Create.
Requires scope tax:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
Body
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| name | string(255) | Name of the product-type tax. |
| taxratenumber | string(6dp) | Numeric string, 6 decimal places. Not money - do not apply currency rounding. |
| glaccountid | integer | Reference to glaccounts, by id. Write either this or glaccount. |
| glaccount | string(20) | Code for the referenced glaccount, instead of the id. |
| 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. |
| states | text | States. Stored as text, no practical length limit. |
| 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/producttypetaxes' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '{ "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states" }'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode([ 'name' => 'Example name', 'taxrate' => 'Example taxrate', 'glaccountid' => 104, 'glaccount' => 'Example glaccount', 'states' => 'Example states', ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.post( "https://acme.nolapro.com/!/api/v2/producttypetaxes", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json={ "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states", }, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify({ name: "Example name", taxrate: "Example taxrate", glaccountid: 104, glaccount: "Example glaccount", states: "Example states", }), } ); 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 { name = "Example name", taxrate = "Example taxrate", glaccountid = 104, glaccount = "Example glaccount", states = "Example states", }; var req = new HttpRequestMessage(HttpMethod.Post, "https://acme.nolapro.com/!/api/v2/producttypetaxes") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 201
{
"name": "Example name",
"taxrate": "Example taxrate",
"glaccountid": 104,
"glaccount": "Example glaccount",
"states": "Example states"
}
GET/producttypetaxes/{id}
200404
Retrieve one record.
Requires scope tax: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/producttypetaxes/104' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes/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/producttypetaxes/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes/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/producttypetaxes/104"); res.EnsureSuccessStatusCode();
Response 200
{
"name": "Example name",
"taxrate": "Example taxrate",
"glaccountid": 104,
"glaccount": "Example glaccount",
"states": "Example states"
}
PATCH/producttypetaxes/{id}
200404
Update.
Requires scope tax:write.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
| idrequired | path | integer | The record id. |
Body
| Field | Type | Description |
|---|---|---|
| idread-only | integer | NolaPro id. |
| name | string(255) | Name of the product-type tax. |
| taxratenumber | string(6dp) | Numeric string, 6 decimal places. Not money - do not apply currency rounding. |
| glaccountid | integer | Reference to glaccounts, by id. Write either this or glaccount. |
| glaccount | string(20) | Code for the referenced glaccount, instead of the id. |
| 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. |
| states | text | States. Stored as text, no practical length limit. |
| 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/producttypetaxes/104' \ -H 'Authorization: Bearer $NP_TOKEN' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: your-unique-key' \ -d '{ "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states" }'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes/104'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('NP_TOKEN')], CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => json_encode([ 'name' => 'Example name', 'taxrate' => 'Example taxrate', 'glaccountid' => 104, 'glaccount' => 'Example glaccount', 'states' => 'Example states', ]), ]); $res = json_decode(curl_exec($ch), true);
import os, requests r = requests.patch( "https://acme.nolapro.com/!/api/v2/producttypetaxes/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, json={ "name": "Example name", "taxrate": "Example taxrate", "glaccountid": 104, "glaccount": "Example glaccount", "states": "Example states", }, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes/104', { method: 'PATCH', headers: { Authorization: `Bearer ${process.env.NP_TOKEN}` }, body: JSON.stringify({ name: "Example name", taxrate: "Example taxrate", glaccountid: 104, glaccount: "Example glaccount", states: "Example states", }), } ); 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 { name = "Example name", taxrate = "Example taxrate", glaccountid = 104, glaccount = "Example glaccount", states = "Example states", }; var req = new HttpRequestMessage(HttpMethod.Patch, "https://acme.nolapro.com/!/api/v2/producttypetaxes/104") { Content = JsonContent.Create(body), }; req.Headers.Add("Idempotency-Key", "your-unique-key"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 200
{
"name": "Example name",
"taxrate": "Example taxrate",
"glaccountid": 104,
"glaccount": "Example glaccount",
"states": "Example states"
}
DELETE/producttypetaxes/{id}
200404
Cancel.
Requires scope tax: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/producttypetaxes/104' \ -H 'Authorization: Bearer $NP_TOKEN'
$ch = curl_init('https://acme.nolapro.com/!/api/v2/producttypetaxes/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/producttypetaxes/104", headers={"Authorization": f"Bearer {os.environ['NP_TOKEN']}"}, ) r.raise_for_status()
const res = await fetch( 'https://acme.nolapro.com/!/api/v2/producttypetaxes/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/producttypetaxes/104"); var res = await http.SendAsync(req); res.EnsureSuccessStatusCode();
Response 200
{
"name": "Example name",
"taxrate": "Example taxrate",
"glaccountid": 104,
"glaccount": "Example glaccount",
"states": "Example states"
}
Departments →
Departments, used for payroll expense allocation. Each carries the GL accounts wages and taxes post to.
Employees →
Read-only and minimal, for the same reason as users, only more so. The stored row carries social security numbers, pay rates, bank details and tax withholding. None of that is returned and none of it is writable. This resource exists only so
salesman.payrollid can be resolved to a name.