Skip to content

Request a return on a delivered fulfillment group

POST
/api/v1/scent/orders/{id}/return-request
curl --request POST \
--url https://api-omni.linra.net/api/v1/scent/orders/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/return-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "fulfillmentGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "lines": [ { "scentOrderLineId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1, "reasonCode": "Damaged" } ] }'

Submits a pending return request for review. This does NOT move any money by itself — an internal operator approves or declines it; approval triggers the existing refund/commission clawback chain. There is no partner-initiated cancel/withdraw of a submitted request in this version of the API.

id
required
string format: uuid

The scent order’s own GUID (same as /api/v1/orders/scent/{orderId}).

Media typeapplication/json
object
fulfillmentGroupId
required
string format: uuid
lines
required
Array<object>
>= 1 items
object
scentOrderLineId
required
string format: uuid
quantity
required
integer
>= 1
reasonCode
required
string
Allowed values: Damaged WrongItem NotAsDescribed ChangedMind Other

The created return request, status Pending.

Media typeapplication/json
object
state
required
string
payload
required
details
object
payload
required
object
id
string format: uuid
scentOrderId
string format: uuid
orderGlobalId
string
fulfillmentGroupId
string format: uuid
partnerId
string format: uuid
status
string
Allowed values: Pending Approved Declined
requestedAt
string format: date-time
decidedAt
string format: date-time
nullable
decidedByUserId
string format: uuid
nullable
declineReason
string
nullable
lines
Array<object>
object
id
string format: uuid
scentOrderLineId
string format: uuid
quantity
integer
reasonCode
string
Example
{
"state": "SUCCESS",
"payload": {
"status": "Pending"
}
}

An invalid reasonCode, or VALIDATION_INVALID_REASON_CODE.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

Unknown order, fulfillment group, or order line (or cross-tenant order — no existence leak).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Examples
{
"state": "NOT_FOUND_SCENT_ORDER",
"payload": null,
"details": {}
}

An eligibility rule failed.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Examples
{
"state": "BUSINESS_RETURN_REQUEST_GROUP_NOT_DELIVERED",
"payload": null,
"details": {}
}

Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}
Retry-After
integer

Seconds to wait before retrying.