Approve or Reject Tier

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Approve or Reject Tier

Approves or rejects a tier in PENDING_APPROVAL status. Approving publishes the tier to the loyalty engine and transitions it to ACTIVE. Rejecting transitions it back to DRAFT and records the reviewer's comment so the maker can revise and resubmit.

Example request

curl -X POST "https://eu.intouch.capillarytech.com/v3/tiers/6a2121936497e74ec3517ad8/approve" \
  -H "Authorization: Basic <base64-encoded-credentials>" \
  -H "Content-Type: application/json" \
  -d '{
    "approvalStatus": "REJECT",
    "comment": "Threshold needs review before publishing"
  }'

Prerequisites

  • Authentication: Basic auth or OAuth token with reviewer permissions for loyalty program management.
  • The tier must be in PENDING_APPROVAL status. Find pending tiers with List Pending Tier Approvals.
  • For approval, the program must have SLAB_UPGRADE and SLAB_DOWNGRADE strategies configured.

Path parameters

FieldTypeRequiredDescription
tierIdstringRequiredThe objectId of the tier to review, from the List Pending Tier Approvals response.

Body parameters

FieldTypeRequiredDescription
approvalStatusenumRequiredReview decision. Must be one of: APPROVE, REJECT. Case-sensitive.
commentstringOptionalReviewer's note. On rejection, it's stored as the rejection comment and returned to the maker. No length limit is enforced.

Example response

{
    "data": {
        "objectId": "6a2aad51b1f2f8016a6598bc",
        "tierUniqueId": "ut-973-010",
        "orgId": 100737,
        "programId": 973,
        "status": "ACTIVE",
        "parentId": null,
        "version": 1,
        "slabId": 25635,
        "name": "Super Platinum",
        "description": "Premium tier for top spenders",
        "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:42:57Z",
            "updatedBy": "75237721",
            "updatedAt": "2026-06-11T12:55:56Z",
            "approvedBy": "75237721",
            "approvedAt": "2026-06-11T12:55:56Z",
            "rejectedBy": "75237721",
            "rejectedAt": "2026-06-11T12:54:37Z",
            "rejectionComment": "Threshold needs review before publishing"
        },
        "comments": null
    },
    "errors": null,
    "warnings": null
}
{
    "data": {
        "objectId": "6a2ab246b1f2f8016a6598bd",
        "tierUniqueId": "ut-973-011",
        "orgId": 100737,
        "programId": 973,
        "status": "DRAFT",
        "parentId": null,
        "version": 1,
        "slabId": null,
        "name": "Super Duper Platinum ",
        "description": "Premium tier for top spenders",
        "color": "#E5E4E2",
        "serialNumber": 11,
        "eligibility": {
            "kpiType": "CURRENT_POINTS",
            "threshold": 500000.0,
            "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-11T13:04:06Z",
            "updatedBy": "75237721",
            "updatedAt": "2026-06-11T13:04:50Z",
            "rejectedBy": "75237721",
            "rejectedAt": "2026-06-11T13:04:50Z",
            "rejectionComment": "Threshold needs review before publishing"
        },
        "comments": "Threshold needs review before publishing"
    },
    "errors": null,
    "warnings": null
}

Response parameters

FieldTypeDescription
dataobjectObject containing the full tier record after the review action. See Submit Tier for Approval for the complete field reference.
.statusenumStage after the review action. Possible values: ACTIVE (after approval), DRAFT (after rejection). After approval, the same tier appears as LIVE in List All Tiers and Get Tier responses.
.slabIdintegerUnique ID of the published tier, set after a successful approval. null after rejection of a new tier.
.meta.approvedBystringUser ID of the reviewer who approved the tier. Present after approval.
.meta.approvedAttimestampDate and time when the tier was approved, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. Present after approval.
.meta.rejectedBystringUser ID of the reviewer who rejected the tier. Present after rejection.
.meta.rejectedAttimestampDate and time when the tier was rejected, in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ), returned in the server time zone. Present after rejection.
.meta.rejectionCommentstringReviewer's comment. Present after rejection.
.commentsstringReviewer's note from this review action.
errorsarrayError list. null on success.
warningsarrayWarning list. null on success.

Error & warning codes

CodeError numberTypeDescription
TIER.NOT_FOUND9056ErrorNo tier matches the given tierId. HTTP 404.
TIER.UNKNOWN_APPROVAL_ACTION9041ErrorapprovalStatus is not APPROVE or REJECT. HTTP 400.
TIER.PROGRAM_DOWNGRADE_STRATEGY_NOT_CONFIGURED9052ErrorThe program has no SLAB_DOWNGRADE strategy. Configure Tier Advanced Settings first. HTTP 400.
TIER.PROGRAM_UPGRADE_STRATEGY_NOT_CONFIGURED9053ErrorThe program has no SLAB_UPGRADE strategy. Configure Tier Advanced Settings first. HTTP 400.
TIER_APPROVE_REQUIRES_PENDINGErrorThe tier is not in PENDING_APPROVAL status. HTTP 409.
TIER_APPROVAL_DRIFTErrorThe published tier changed after this draft was created. The response includes a diffs list showing each changed field. Recreate the draft from the current state and resubmit. HTTP 409.

Note: Conflict errors (HTTP 409) return the generic error number 999999 with a descriptive message on the wire, except approval drift, which returns a structured body with a code and diffs list.


Path Params
string
required
Body Params
string
enum
required
Allowed:
string
Headers
string
string
Responses

400

Validation error, including error 9041 for an invalid approvalStatus

404

Tier not found (error 9056)

409

Status conflict: tier not pending approval, or approval blocked by drift

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json