Salespeople

Salespeople and service reps. One table serves both roles - salesman and servicerep are flags, so filter on those rather than expecting two resources.

The object#

FieldTypeDescription
idread-onlyintegerNolaPro id.
namestring(50)The code this resource is keyed by. Matching is case insensitive.
salesmanbooleanActs as a salesperson.
servicerepbooleanActs as a service rep.
commissionratemoneystring(3dp)Commission percentage.
email1string(50)Primary email.
phone1string(20)Primary phone.
cancelbooleanTrue once cancelled. Cancelled rows stay referenced by history.
externalidstring(100)Your own key for this salespeople. Scoped to your company.
lastchangedateread-onlystringLast modification (lastchangedate). Drives modifiedsince.

Endpoints#

POST/salesmen/batch 207

Create many.

Always answers 207, one result per item.

Requires scope setup:write.

Parameters
NameInTypeNotes
Body array
FieldTypeDescription
idread-onlyintegerNolaPro id.
namestring(50)The code this resource is keyed by. Matching is case insensitive.
salesmanbooleanActs as a salesperson.
servicerepbooleanActs as a service rep.
commissionratemoneystring(3dp)Commission percentage.
email1string(50)Primary email.
phone1string(20)Primary phone.
cancelbooleanTrue once cancelled. Cancelled rows stay referenced by history.
externalidstring(100)Your own key for this salespeople. Scoped to your company.
lastchangedateread-onlystringLast modification (lastchangedate). Drives modifiedsince.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/salesmen/batch' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '[
    {
        "id": 3,
        "name": "Sales Person",
        "salesman": true,
        "servicerep": false,
        "commissionrate": "5.000",
        "email1": "",
        "phone1": "",
        "cancel": false
    }
]'
GET/salesmen 200403

List salespeople.

Requires scope setup:read.

Parameters
NameInTypeNotes
namequerystringPartial match, case insensitive.
cancelquerystringDefaults to false. Pass true for cancelled only, or any.
modifiedsincequerystringRFC 3339 UTC timestamp. Returns only records changed since then, including cancelled ones - so cancel defaults to any rather than false when this is used. The response carries _meta.synced_through; store it and send it back next time.
externalidquerystringExact match on your own key. Scoped to your company.
includequerystringComma-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
StatusCodeMeaning
403insufficient_scopeToken lacks salesmen:read.
curl \
  'https://acme.nolapro.com/!/api/v2/salesmen' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/salesmen 201400409

Create.

Requires scope setup:write.

Parameters
NameInTypeNotes
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
namestring(50)The code this resource is keyed by. Matching is case insensitive.
salesmanbooleanActs as a salesperson.
servicerepbooleanActs as a service rep.
commissionratemoneystring(3dp)Commission percentage.
email1string(50)Primary email.
phone1string(20)Primary phone.
cancelbooleanTrue once cancelled. Cancelled rows stay referenced by history.
externalidstring(100)Your own key for this salespeople. Scoped to your company.
lastchangedateread-onlystringLast modification (lastchangedate). Drives modifiedsince.
When it fails
StatusCodeMeaning
400invalid_requestA required field was missing or invalid.
409duplicateThat code is already in use.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/salesmen' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}'
Response 201
{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}
GET/salesmen/{id} 200404

Retrieve one record.

Requires scope setup:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
includequerystringComma-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
StatusCodeMeaning
404not_foundNo record with that id.
curl \
  'https://acme.nolapro.com/!/api/v2/salesmen/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}
PATCH/salesmen/{id} 200404409

Update.

Requires scope setup:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
namestring(50)The code this resource is keyed by. Matching is case insensitive.
salesmanbooleanActs as a salesperson.
servicerepbooleanActs as a service rep.
commissionratemoneystring(3dp)Commission percentage.
email1string(50)Primary email.
phone1string(20)Primary phone.
cancelbooleanTrue once cancelled. Cancelled rows stay referenced by history.
externalidstring(100)Your own key for this salespeople. Scoped to your company.
lastchangedateread-onlystringLast modification (lastchangedate). Drives modifiedsince.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
409stale_recordIf-Match did not match.
curl -X PATCH \
  'https://acme.nolapro.com/!/api/v2/salesmen/104' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}'
Response 200
{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}
DELETE/salesmen/{id} 200403404

Cancel.

Sets the cancel flag. Nothing is removed.

Requires scope setup:cancel.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
403insufficient_scopeNeeds salesmen:cancel.
404not_foundNo record with that id.
curl -X DELETE \
  'https://acme.nolapro.com/!/api/v2/salesmen/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "id": 3,
    "name": "Sales Person",
    "salesman": true,
    "servicerep": false,
    "commissionrate": "5.000",
    "email1": "",
    "phone1": "",
    "cancel": false
}