Use this endpoint to register a purchase made via Apple StoreKit2 to initiate an asynchronous synchronization process. This process involves verifying the purchase with Apple and updating the user's entitlement status in Cleeng's system.
Due to the time required for Apple's verification, this operation is asynchronous. Upon successful registration, the API will return a 202 Accepted status with a unique synchronizationId in the response body.
The cleengCustomerId is used to identify the user in Cleeng's system and associate the purchase with their account.
Important: Only one synchronization process can be active for a given transactionId at a time. If a new request is made for the same transactionId while a previous synchronization is still in progress, a 409 Conflict error will be returned.
Please note that this endpoint can be authorized with a publisher (X-Publisher-Token) or JWT (Bearer) token. Depending on how you integrate with Cleeng (directly or through middleware), use either a JWT or X-Publisher-Token header authorization.
Please use JWT (Bearer) token to try out the endpoint in the API console in this documentation.
You can then use the following methods to check the status of the synchronization process:
- Polling: Use the
/purchases/synchronizations/{synchronizationId}endpoint to periodically retrieve the status. This endpoint provides a concise response with the essential status information. - Webhooks: Subscribe to the
inappPurchaseSyncResultwebhook to receive real-time updates on the synchronization status. The webhook payload (WebhookSynchronizationStatus) includes detailed information about the synchronization, including thesynchronizationId, transaction details (transactionId,cleengCustomerId,originalTransactionId),accessGranted,offerId, andresult.
You can choose to use either the polling mechanism, the webhook, or both, depending on your needs.
Errors
| HTTP Status Code | Error Code | Message |
|---|---|---|
| 400 | REQ0001 | Invalid body |
| 400 | REQ0004 | Invalid headers |
| 409 | SK2C0101 | The resource is temporarily locked due to a concurrent request. |
| 422 | SK2C0100 | Unable to find customer |
| 500 | SK2C0004 | StoreKit2 integration not activated |
| 500 | SXXXX (X - number) | Internal Server Error |
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
