Discount Codes API
Manage discount codes for a site. A discount code applies a percentage off an
order at checkout.
Endpoints
- List Discount Codes -
GET /api/v1/sites/{site_id}/discount-codes/ - Create Discount Code -
POST /api/v1/sites/{site_id}/discount-codes/ - Get Discount Code -
GET /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/ - Update Discount Code -
PUT /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/ - Delete Discount Code -
DELETE /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/
Discount codes are scoped to a site. See Sites for the site
endpoints.
List Discount Codes
Retrieve the discount codes for a site. This endpoint is not paginated.
Endpoint: GET /api/v1/sites/{site_id}/discount-codes/
Permission Required: Read
Request
curl -X GET "https://studio.easel.engineering/api/v1/sites/sit_d0b6fmv28q6vn14peun0/discount-codes/" \
-H "Authorization: Bearer your_api_key_here"
Response
Status: 200 OK
{
"data": [
{
"id": "dsc_d0b6fmv28q6vn14peun0",
"code": "SUMMER10",
"percentage": 10,
"active": true,
"usage_count": 3,
"created_at": "2023-01-01T10:00:00Z",
"updated_at": "2023-01-01T10:00:00Z"
}
]
}
Create Discount Code
Create a discount code for a site. Codes are normalized to uppercase.
Endpoint: POST /api/v1/sites/{site_id}/discount-codes/
Permission Required: Write
Request Body
{
"code": "SUMMER10",
"percentage": 10,
"active": true
}
| Field | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | 3 to 20 alphanumeric characters |
percentage |
integer | Yes | Discount percentage from 1 to 100 |
active |
boolean | Yes | Whether the code can be used |
Request
curl -X POST "https://studio.easel.engineering/api/v1/sites/sit_d0b6fmv28q6vn14peun0/discount-codes/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unique-request-id-12345" \
-d '{
"code": "SUMMER10",
"percentage": 10,
"active": true
}'
Response
Status: 201 Created
{
"id": "dsc_d0b6fmv28q6vn14peun0",
"code": "SUMMER10",
"percentage": 10,
"active": true,
"usage_count": 0,
"created_at": "2023-01-01T10:00:00Z",
"updated_at": "2023-01-01T10:00:00Z"
}
Error Responses
Invalid code
Status: 400 Bad Request
{
"error": "Code must be alphanumeric",
"code": "INVALID_FIELD"
}
Invalid percentage
Status: 400 Bad Request
{
"error": "Percentage must be between 1 and 100",
"code": "INVALID_FIELD"
}
Duplicate code
Status: 409 Conflict
{
"error": "Resource already exists",
"code": "DUPLICATE"
}
Get Discount Code
Retrieve a single discount code.
Endpoint: GET /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/
Permission Required: Read
Request
curl -X GET "https://studio.easel.engineering/api/v1/sites/sit_d0b6fmv28q6vn14peun0/discount-codes/dsc_d0b6fmv28q6vn14peun0/" \
-H "Authorization: Bearer your_api_key_here"
Response
Status: 200 OK
{
"id": "dsc_d0b6fmv28q6vn14peun0",
"code": "SUMMER10",
"percentage": 10,
"active": true,
"usage_count": 3,
"created_at": "2023-01-01T10:00:00Z",
"updated_at": "2023-01-01T10:00:00Z"
}
Update Discount Code
Update a discount code. The full code, percentage, and active state are
required.
Endpoint: PUT /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/
Permission Required: Write
Request Body
{
"code": "SUMMER20",
"percentage": 20,
"active": true
}
Request
curl -X PUT "https://studio.easel.engineering/api/v1/sites/sit_d0b6fmv28q6vn14peun0/discount-codes/dsc_d0b6fmv28q6vn14peun0/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unique-request-id-67890" \
-d '{
"code": "SUMMER20",
"percentage": 20,
"active": true
}'
Response
Status: 204 No Content
Delete Discount Code
Delete a discount code.
Endpoint: DELETE /api/v1/sites/{site_id}/discount-codes/{discount_code_id}/
Permission Required: Write
Request
curl -X DELETE "https://studio.easel.engineering/api/v1/sites/sit_d0b6fmv28q6vn14peun0/discount-codes/dsc_d0b6fmv28q6vn14peun0/" \
-H "Authorization: Bearer your_api_key_here"
Response
Status: 204 No Content
Discount Code Object
Fields
| Field | Type | Description |
|---|---|---|
id |
string | Discount code public ID |
code |
string | Discount code |
percentage |
integer | Discount percentage |
active |
boolean | Whether the code can be used |
usage_count |
integer | Number of times the code has been used |
created_at |
string | ISO 8601 timestamp |
updated_at |
string | ISO 8601 timestamp |