Propose vendor return inspection outcome
Propose an inspection outcome (never authoritative).
Returns
/api/v1/scent/returns/{id}/inspection/proposeRecords your own PROPOSED outcome — Linra’s assessment is always decisive; this never
transitions the request’s status or triggers execution. A proposed Rejected flags the
request for staff review. Rejected with BUSINESS_RETURN_INSPECTION_EVIDENCE_REQUIRED
unless at least one photo has already been uploaded via addVendorReturnEvidence.
Requires the request to currently be UnderInspection
(BUSINESS_RETURN_REQUEST_INVALID_TRANSITION otherwise). Same ownership scope as
markVendorReturnReceived. Requires the Orders capability.
Path parameters
idstring (uuid)RequiredThe return request id.
Body parameters
outcomestring (enum)RequiredA genuine defect (AcceptedDefect), a sound/changed-mind item (AcceptedSound), or Linra rejects the return outright (Rejected, e.g. opened/used with no defect found).
Response
idstring (uuid)returnRequestNumberstringstatusstring (enum)Scent’s full return-request lifecycle. This door only ever ACTS on a request in InTransit/Received/UnderInspection, but a GET reflects any of the full 11 values (e.g. a request still Pending/Approved awaiting internal authorization, or a terminal InspectionRejected/RefundReleased/Withdrawn) — the field is documented exhaustively per the fleet’s R-DOCENUMS convention rather than narrowed to only the states this door itself transitions through.
requestedAtstring (date-time)receivedAtstring (date-time)inspectionStartedAtstring (date-time)inspectionDecidedAtstring (date-time)inspection.receivedAtstring (date-time)inspection.inspectionStartedAtstring (date-time)inspection.inspectionWindowDeadlinestring (date-time)inspection.outcomeobjectA genuine defect (AcceptedDefect), a sound/changed-mind item (AcceptedSound), or Linra rejects the return outright (Rejected, e.g. opened/used with no defect found).
inspection.supplierProposedOutcomeobjectA genuine defect (AcceptedDefect), a sound/changed-mind item (AcceptedSound), or Linra rejects the return outright (Rejected, e.g. opened/used with no defect found).
inspection.requiresStaffReviewbooleaninspection.evidencearray of objectlinesarray of objectOther responses
400Request validation failed.401No bearer token (UNAUTHORIZED_MISSING_TOKEN), an invalid token (UNAUTHORIZED_INVALID_TOKEN) or an expired one (UNAUTHORIZED_TOKEN_EXPIRED — mint a new token). UPSTREAM_AUTH_FAILED is different: a dependent service refused the Gateway itself. That is a server-side fault — retry later and do NOT re-mint your token. See the Rate limits & errors guide.403Your token doesn’t carry the capability this endpoint requires.404Unknown return request id, one belonging to another vendor, or one not destined to a supplier at all (a Linra-sorting-point-bound return — never reachable on this API).415The request body is not sent as application/json (UNSUPPORTED_MEDIA_TYPE).422Evidence is required before a proposal, or the request is not currently UnderInspection.429Too many requests. Retry after the Retry-After header (seconds).502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.curl --request PATCH \ --url https://api-omni-vendors.linra.net/api/v1/scent/returns/5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b/inspection/propose \ --header 'Authorization: Bearer $TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "outcome": "AcceptedDefect" }'const res = await fetch('https://api-omni-vendors.linra.net/api/v1/scent/returns/5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b/inspection/propose', { method: 'PATCH', headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ outcome: 'AcceptedDefect' }),});const { payload } = await res.json();var response = await httpClient.PatchAsJsonAsync( "https://api-omni-vendors.linra.net/api/v1/scent/returns/5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b/inspection/propose", new { outcome = "AcceptedDefect" });
var envelope = await response.Content.ReadFromJsonAsync<ApiResponse<VendorReturnRequestResponse>>();Response
{ "state": "SUCCESS", "payload": { "id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b", "returnRequestNumber": "string", "status": "Pending", "requestedAt": "2026-08-22T09:14:03Z", "receivedAt": "2026-08-22T09:14:03Z", "inspectionStartedAt": "2026-08-22T09:14:03Z", "inspectionDecidedAt": "2026-08-22T09:14:03Z", "inspection": { "receivedAt": "2026-08-22T09:14:03Z", "inspectionStartedAt": "2026-08-22T09:14:03Z", "inspectionWindowDeadline": "2026-08-22T09:14:03Z", "outcome": {}, "supplierProposedOutcome": {}, "requiresStaffReview": true, "evidence": [ { "id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b", "url": "https://your-integration.example.com/webhooks/linra", "kind": "Photo", "uploadedAt": "2026-08-22T09:14:03Z" } ] }, "lines": [ { "scentOrderLineId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b", "variantId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b", "sku": "string", "quantity": 0, "reasonCode": "Damaged" } ] }, "details": null}
