Offramping Assets
Offramping of assets can only be triggered by the Sales Channel on behalf of their Trader. Assets can only be offramped if the Trader is a Puro.earth Platform Agreement signed Trader (the Trader is onboarded via a Trader Onboarding Proposal). Assets from a Sales Channel registered Trader cannot be off-ramped, any such requests will be rejected.
Following roles are needed to be able to perform steps described on this page:
TRADER_VIEWERASSET_OFFRAMPER
See Authorization for more details about roles
You need a traderId of the Trader which assets are to be offramped. See Discover Assets page to fetch the traderId.
Offramping assets is an asynchronous process yielding an offramp task. Status of the offramp is observed from this task.
Registering Offramp
Offramping is registered using POST /saleschannel-services/v1/traders/{traderId}/inventory/offramp endpoint. Start and end ids of bundles to be offramped will be given as the request payload.
Detailed payload for registering an offramp:
required  | Array of objects  non-empty   All assets which are involved in this offramp  | 
{- "assets": [
- {
- "start": "e0edefa8-cbde-4c19-896a-edafb7a8e030_643002406555908611000000000001",
 - "end": "e0edefa8-cbde-4c19-896a-edafb7a8e030_643002406555908611000000000100"
 
} 
] 
}curl -X 'POST' "/saleschannel-services/v1/traders/{traderId}/inventory/offramp" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $BEARER" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{ \
    "assets": [ \
      { \
        "start": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_1", \
        "end": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_100" \
      } \
    ] \
  }'
Check the Offramping status
Via the Get status of an offramp task endpoint
A successful response from registering an offramp contains the id of the created offramp task which can be used to query for the offramp status.
curl -X 'GET' "/saleschannel-services/v1/traders/{traderId}/inventory/offramp/{taskId}" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $BEARER"
Resending the Offramp assets request
As the offramp endpoint is idempotent with the help of the Idempotency-Key. You can request the status of the offramp
by resending the exact same payload with the same Idempotency-Key used initially to register the offramp.
Response
Both of these endpoints return the offramp task status
| taskId required  | string  The ID of this task  | 
| status required  | string  Enum: "STARTED" "SUCCESS" "FAILED" "PENDING" "REJECTED"   The new status of the transaction.  | 
| idempotencyKey | string <^[\w-]{1,64}$> ^[\w-]{1,64}$  Idempotency keys are client-generated strings which ensure that requests can be safely retried.  | 
| message | string  Human-readable message field describing the state of the task.  | 
object  Details on the created offramp, if the offramp task completed successfully.  | 
{- "taskId": "cl3y5zbkb0062wuxd52u85agi",
 - "status": "PENDING",
 - "idempotencyKey": "cl3y5zbka0036wuxdtoxdl36a",
 - "message": "Task is waiting to be picked up.",
 - "responsePayload": {
- "id": "cl8vkk621019vxq13r5ey5nik"
 
} 
}The offramped start and end range of the Asset IDs cannot overlap between bundles.
For example, here the bundles do not overlap:
curl -X 'POST' "/saleschannel-services/v1/traders/{traderId}/inventory/offramp" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $BEARER" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{ \
    "assets": [ \
      { \
        "start": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_1", \
        "end": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_50" \
      }, \
      { \
        "start": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_100", \
        "end": "6e0edefa8-cbde-4c19-896a-edafb7a8e030_150" \
      } \
    ] \
  }'