Saltar al contenido

rfqs

Módulo Procurement · 7 operaciones

List RFQ rows

GET/rfqs

A request for quotation. Responses stay sealed until the deadline. Returns a cursor page of RFQ rows the caller may see. The default order is `created_at` ascending. Supports sparse fieldsets and the filter grammar.

Create a RFQ

POST/rfqs

A request for quotation. Responses stay sealed until the deadline. Creates a RFQ. Requires `Idempotency-Key`; a replay returns the original response. The organization is derived from the credential or the parent row, never from the body.

Get a RFQ

GET/rfqs/{id}

A request for quotation. Responses stay sealed until the deadline. Returns one RFQ with its `ETag`. A RFQ the caller may not see returns 404.

Update a RFQ

PATCH/rfqs/{id}

A request for quotation. Responses stay sealed until the deadline. Updates the fields sent; omitted fields are unchanged. Requires `If-Match` with the current `ETag`: a stale tag returns 412 and a missing tag returns 428.

Delete a RFQ

DELETE/rfqs/{id}

A request for quotation. Responses stay sealed until the deadline. Soft-deletes the RFQ: it moves to Trash and can be restored for its table's retention period.

Issue an RFQ

POST/rfqs/{id}/issue

Sends invitations to bid. Responses stay sealed until the deadline. Requires `Idempotency-Key`; a replay returns the original response. A rule that refuses the request returns 422 with `refusal` and `reason`.

Transition the rfq state

POST/rfqs/{id}/transitions

Moves the rfq lifecycle to another state through its transition RPC, which writes the transition ledger. Uses compare-and-set on `expected_state`; a disallowed transition returns a 422 refusal. Requires `Idempotency-Key`; a replay returns the original response. A rule that refuses the request returns 422 with `refusal` and `reason`.