# Public Supplier Requests List

Cursor-paginated list of supplier requests for the authed organisation.

Endpoint: GET /supplier-requests
Version: 1.79.2

## Query parameters:

  - `cursor` (string | null)
    Opaque cursor from a prior page.

  - `modified_since` (string | null)
    ISO-8601 lower bound on `updated_at`. Applied only on the first page; the cursor is a strict super-set thereafter.

  - `tender_id` (string | null)
    Return only supplier requests raised for this tender (the tender's id from `GET /tenders`). Distinct from `project_id`.

  - `project_id` (string | null)
    Return only supplier requests raised for this project (project-scoped SRs).

  - `supplier_id` (string | null)
    Return only supplier requests sent to this supplier (its `external_id`).

  - `status` (string)
    Filter by lifecycle state (`REQUEST_SENT` | `OFFER_RECEIVED` | `DECLINED`).

  - `awarded` (boolean | null)
    `true` returns only supplier requests with at least one accepted (selected) line; `false` returns only those without one.

  - `limit` (integer | null)

## Header parameters:

  - `authorization` (string | null)
    Bearer <mrc_live_…> API key

## Response 200:

  - `200` (unknown)
    Successful Response

## Response 200 fields (application/json):

  - `data` (array, required)

  - `data.id` (string, required)
    Public id — the supplier request's UUID.

  - `data.status` (string, required)
    Lifecycle state of a supplier request.
A translated subset of the internal `SupplierRequestStatus`; the mapping
lives in `supplier_requests.service._SUPPLIER_REQUEST_STATUS_MAP` and a
test asserts it covers every internal value. New values may be added in a
MINOR release — the OpenAPI enum is closed, so consumers should treat an
unknown value defensively rather than fail strict validation.
    Enum: "REQUEST_SENT", "OFFER_RECEIVED", "DECLINED"

  - `data.tender_id` (string | null)
    Backing tender id when the request is tender-scoped — resolve via `GET /tenders/{tender_id}`. Null when project-scoped.

  - `data.project_id` (string | null)
    Backing project id when the request is project-scoped — resolve via `GET /projects/{project_id}`. Null when tender-scoped.

  - `data.supplier_id` (string | null)
    Supplier reference only — resolve full details via `GET /suppliers/{supplier_id}`. Null when no supplier is set.

  - `data.supplier_name` (string | null)
    Supplier display name (convenience mirror of the reference).

  - `data.supplier_emails` (array)
    Recipient email addresses the request was sent to.

  - `data.sender_email` (string | null)
    Email of the Mercura user who sent the request. Null when unknown.

  - `data.is_awarded` (boolean, required)
    True when at least one offered line was accepted into the final tender.

  - `data.awarded_line_count` (integer, required)
    Number of offered lines accepted into the final tender.

  - `data.offered_lines` (array)

  - `data.offered_lines.id` (string, required)
    Opaque handle for this offered line (internal candidate-selection id).

  - `data.offered_lines.position_id` (string | null)
    The position this line answers. For a tender-scoped supplier request it matches the position id in `GET /tenders/{tender_id}`; for a project-scoped one it is an internal reference with no public resolution endpoint today. Null when the line is not mapped to a position.

  - `data.offered_lines.item_type` (string, required)
    What an offered line is, from `CandidateSelection.item_type`.
    Enum: "ARTICLE", "TEXT_FIELD", "DIVERSE"

  - `data.offered_lines.candidate_status` (string, required)
    Acceptance state of one offered line, from `CandidateSelection.status`.
    Enum: "PENDING", "ACCEPTED", "DECLINED"

  - `data.offered_lines.selected` (boolean, required)
    True when this line was accepted into the final tender (candidate_status ACCEPTED).

  - `data.offered_lines.article_number` (string | null)
    Article number the supplier quoted, when any.

  - `data.offered_lines.manufacturer_article_number` (string | null)
    Manufacturer article number, when any.

  - `data.offered_lines.description` (string | null)
    Supplier's line text, when provided.

  - `data.offered_lines.quantity` (number | null)

  - `data.offered_lines.unit` (string | null)

  - `data.offered_lines.unit_price` (string | null)
    Supplier's offered price per unit, EUR.

  - `data.offered_lines.line_total` (string | null)
    Supplier's offered line total, EUR.

  - `data.created_at` (string, required)

  - `data.updated_at` (string, required)

  - `next_cursor` (string | null)

## Response 422:

  - `422` (unknown)
    Validation Error

## Response 422 fields (application/json):

  - `detail` (array)

  - `detail.loc` (array, required)

  - `detail.msg` (string, required)

  - `detail.type` (string, required)

  - `detail.input` (any)

  - `detail.ctx` (object)

