post
https://{Host}/v3/tiers//submit
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Submit Tier for Approval
Submits a DRAFT tier for approval, transitioning it from DRAFT to PENDING_APPROVAL. A reviewer then approves or rejects it with Approve or Reject Tier. Submitted tiers appear in the reviewer's queue at List Pending Tier Approvals.
Example request
curl -X POST "https://eu.intouch.capillarytech.com/v3/tiers/6a2121936497e74ec3517ad8/submit" \
-H "Authorization: Basic <base64-encoded-credentials>"Prerequisites
- Authentication: Basic auth or OAuth token with loyalty program management permissions.
- The tier must be in
DRAFTstatus with aserialNumberassigned. - The program must have
SLAB_UPGRADEandSLAB_DOWNGRADEstrategies configured.
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
tierId | string | Required | The objectId of the draft tier, from the Create Tier response. |
Example response
{
"data": {
"objectId": "6a2aab5cb1f2f8016a6598bb",
"tierUniqueId": "ut-973-010",
"orgId": 100737,
"programId": 973,
"status": "PENDING_APPROVAL",
"parentId": null,
"version": 1,
"slabId": null,
"name": "Super Platinum",
"description": "Premium tier for top spenders — updated",
"color": "#E5E4E2",
"serialNumber": 10,
"eligibility": {
"kpiType": "CURRENT_POINTS",
"threshold": 100000,
"upgradeType": "LAZY"
},
"validity": {
"periodType": "SLAB_UPGRADE",
"periodValue": 12,
"renewal": {
"criteriaType": "Same as eligibility"
},
"unit": "NUM_MONTHS"
},
"downgrade": null,
"engineConfig": null,
"meta": {
"createdBy": "75237721",
"createdAt": "2026-06-11T12:34:36Z",
"updatedBy": "75237721",
"updatedAt": "2026-06-11T12:36:22Z"
},
"comments": null
},
"errors": null,
"warnings": null
}{
"data": {
"objectId": "6a2aab5cb1f2f8016a6598bb",
"tierUniqueId": "ut-973-010",
"orgId": 100737,
"programId": 973,
"status": "DRAFT",
"parentId": null,
"version": 1,
"slabId": null,
"name": "Super Platinum",
"description": "Premium tier for top spenders — updated",
"color": "#E5E4E2",
"serialNumber": 10,
"eligibility": {
"kpiType": "CURRENT_POINTS",
"threshold": 100000,
"upgradeType": "LAZY"
},
"validity": {
"periodType": "SLAB_UPGRADE",
"periodValue": 12,
"renewal": {
"criteriaType": "Same as eligibility"
},
"unit": "NUM_MONTHS"
},
"downgrade": null,
"engineConfig": null,
"meta": {
"createdBy": "75237721",
"createdAt": "2026-06-11T12:34:36Z",
"updatedBy": "75237721",
"updatedAt": "2026-06-11T12:41:05Z",
"rejectedBy": "75237721",
"rejectedAt": "2026-06-11T12:41:05Z",
"rejectionComment": "Reviewed and approved for Q2 launch"
},
"comments": "Reviewed and approved for Q2 launch"
},
"errors": null,
"warnings": null
}Response parameters
| Field | Type | Description |
|---|---|---|
data | object | Object containing the full tier record. |
.objectId | string | Unique ID of this tier record. Use it with Approve or Reject Tier. |
.tierUniqueId | string | Unique ID assigned to a tier created through this API, returned by Create Tier. |
.orgId | integer | Org ID derived from the auth token. |
.programId | integer | Loyalty program ID the tier belongs to. |
.status | enum | Current stage of the tier lifecycle. Always PENDING_APPROVAL after a successful submit. Possible values: DRAFT, PENDING_APPROVAL, REJECTED, ACTIVE, DELETED, SNAPSHOT, PUBLISH_FAILED. |
.parentId | string | ID of the published tier this draft was created from. null for new tiers. |
.version | integer | Version number of the tier. Increments each time the tier is updated. |
.slabId | integer | Unique ID of the published tier. null until the tier is approved and published. |
.name | string | Tier name. |
.description | string | Tier description. |
.color | string | Display color in hex format. |
.serialNumber | integer | Tier position in the program's tier ladder. |
.eligibility | object | Object containing the conditions a customer must meet to enter this tier. |
.validity | object | Object containing the validity and renewal configuration, as sent in Create Tier. |
.downgrade | object | Object containing the tier's downgrade settings. null until the tier is approved. |
.engineConfig | object | Object containing internal system configuration used after the tier is published. Always null until then; you can ignore this field. |
.meta | object | Object containing details of who created, updated, approved, or rejected the tier, and when. |
..createdBy | string | User or till ID of the person who created the tier. |
..createdAt | timestamp | Date and time when the tier was created, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. |
..updatedBy | string | User or till ID of the person who last updated the tier. |
..updatedAt | timestamp | Date and time when the tier was last updated, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. |
..approvedBy | string | User ID of the reviewer who approved the tier. |
..approvedAt | timestamp | Date and time when the tier was approved, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. |
..rejectedBy | string | User ID of the reviewer who rejected the tier. |
..rejectedAt | timestamp | Date and time when the tier was rejected, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. |
..rejectionComment | string | Reviewer's comment on rejection. |
.comments | string | Reviewer's note from the most recent approval action. null until reviewed. |
errors | array | Error list. null on success. |
warnings | array | Warning list. null on success. |
Error & warning codes
| Code | Error number | Type | Description |
|---|---|---|---|
TIER.NOT_FOUND | 9056 | Error | No tier matches the given tierId. HTTP 404. |
TIER.SUBMISSION_SERIAL_MISSING | 9040 | Error | The tier has no serialNumber assigned. HTTP 400. |
TIER.PROGRAM_DOWNGRADE_STRATEGY_NOT_CONFIGURED | 9052 | Error | The program has no SLAB_DOWNGRADE strategy. Configure Tier Advanced Settings first. HTTP 400. |
TIER.PROGRAM_UPGRADE_STRATEGY_NOT_CONFIGURED | 9053 | Error | The program has no SLAB_UPGRADE strategy. Configure Tier Advanced Settings first. HTTP 400. |
TIER_SUBMIT_REQUIRES_DRAFT | — | Error | The tier is not in DRAFT status. Only DRAFT tiers can be submitted. HTTP 409. |
Note: Conflict errors (HTTP 409) return the generic error number
999999with a descriptive message on the wire.
400Validation error: see the error table in the doc page
404Tier not found (error 9056)
409Status conflict: only DRAFT tiers can be submitted
