Re-enable a carrier on a previously restricted lane

Mark this carrier as eligible again for the specified lane. The UI is expected to confirm via a modal so the action is intentional; this endpoint itself does not gate on a reason. An audit-log row capturing the actor and timestamp is written in the same transaction. Idempotent: calling this when the preference is already active returns the current row unchanged and writes no audit entry. Admin-only — requires OWNER or ADMIN role on the organization. **Authentication:** Bearer token required.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

carrier_idstringRequiredformat: "uuid"
preference_idstringRequiredformat: "uuid"

Headers

X-Organization-IDstring or nullOptional

Request

This endpoint expects an object.
reasonenum or nullOptional

Allowed values for AuditLog.reason. DB-enforced via Postgres ENUM.

The set is intentionally shared across all entity_type contexts; the same code (service_quality, compliance, other) means different things depending on whether the audited row is a carrier or a lane preference. Disambiguating is the caller’s job — the frontend renders different human labels per context. Free-text justification lands on AuditLog.reason_note — required when OTHER is chosen, optional (but preserved) for any other code.

reason_notestring or nullOptional<=2000 characters

Response

Successful Response
idstringformat: "uuid"
carrier_idstringformat: "uuid"
lane_idstringformat: "uuid"
is_activeboolean
preference_typestring
updated_atdatetime or null

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
429
Too Many Requests Error