Coupons

Coupon codes.

The object#

FieldTypeDescription
idread-onlyintegerNolaPro id.
coupon_codestring(50)Code the customer enters to apply the coupon.
percent_discountnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
dollars_discountmoneystring(5dp)Stored as decimal(19,5).
descriptionstring(255)Description of the coupon.
expirationdatestringDate the coupon stops working.
maxdollarsmoneystring(6dp)Stored as decimal(19,6).
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydateread-onlystringWhen the record was created.
externalidstring(100)Your own key. Scoped to your company.

Endpoints#

POST/coupons/batch 207

Create many.

Requires scope setup:write.

Parameters
NameInTypeNotes
Body array
FieldTypeDescription
idread-onlyintegerNolaPro id.
coupon_codestring(50)Code the customer enters to apply the coupon.
percent_discountnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
dollars_discountmoneystring(5dp)Stored as decimal(19,5).
descriptionstring(255)Description of the coupon.
expirationdatestringDate the coupon stops working.
maxdollarsmoneystring(6dp)Stored as decimal(19,6).
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydateread-onlystringWhen the record was created.
externalidstring(100)Your own key. Scoped to your company.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/coupons/batch' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '[
    {
        "coupon_code": "ACME-01",
        "percent_discount": "Example percent discount",
        "dollars_discount": "125.0000",
        "description": "Example description",
        "expirationdate": "2026-08-01",
        "maxdollars": "125.0000"
    }
]'
GET/coupons 200403

List coupons.

Requires scope setup:read.

Parameters
NameInTypeNotes
descriptionquerystringdescription. Partial match, case-insensitive.
cancelquerystringDefaults to false. Pass true or any.
externalidquerystringExact match on your own key.
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 read scope.
curl \
  'https://acme.nolapro.com/!/api/v2/coupons' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/coupons 201400

Create.

Requires scope setup:write.

Parameters
NameInTypeNotes
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
coupon_codestring(50)Code the customer enters to apply the coupon.
percent_discountnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
dollars_discountmoneystring(5dp)Stored as decimal(19,5).
descriptionstring(255)Description of the coupon.
expirationdatestringDate the coupon stops working.
maxdollarsmoneystring(6dp)Stored as decimal(19,6).
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydateread-onlystringWhen the record was created.
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
400invalid_requestA required field was missing.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/coupons' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}'
Response 201
{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}
GET/coupons/{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/coupons/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}
PATCH/coupons/{id} 200404

Update.

Requires scope setup:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
coupon_codestring(50)Code the customer enters to apply the coupon.
percent_discountnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
dollars_discountmoneystring(5dp)Stored as decimal(19,5).
descriptionstring(255)Description of the coupon.
expirationdatestringDate the coupon stops working.
maxdollarsmoneystring(6dp)Stored as decimal(19,6).
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydateread-onlystringWhen the record was created.
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X PATCH \
  'https://acme.nolapro.com/!/api/v2/coupons/104' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}'
Response 200
{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}
DELETE/coupons/{id} 200404

Cancel.

Requires scope setup:cancel.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X DELETE \
  'https://acme.nolapro.com/!/api/v2/coupons/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "coupon_code": "ACME-01",
    "percent_discount": "Example percent discount",
    "dollars_discount": "125.0000",
    "description": "Example description",
    "expirationdate": "2026-08-01",
    "maxdollars": "125.0000"
}