fulfillment

List Facilities

The facilities a fulfillment screen may name — under fulfillment:read.

ISS-122. Sam, a Fulfillment Technician: "The Shipping Tab doesn't show a list of available facilities, even when typing it out." The Shipping wizard's step-2 picker fetched GET /api/orgs/facilities, which is gated on orgs:read — a key no fulfillment role holds. Migration 0053 binds the technician role exactly fulfillment:read + fulfillment:write, and docs/01_decisions/ROOST_V2_ROLE_FUNCTION_MAPPING.md gives the Fulfillment bundle no orgs/facilities grant at all. So every technician got a 403, useFacilities.ts swallowed it as a best-effort enrichment failure, and the picker stayed empty forever — for the only people who work that page. Typing changed nothing, because the filter runs over an empty list.

A manager holding orgs:read saw a full list at the same time, which is how ISS-64 ("all facilities are showing in the List") and this could both be true of one dropdown.

Same move migration 0150 made for parcel search: the key that opens a screen is that screen's own key, never a second module's. Widening orgs:read onto the floor would hand the warehouse every organization, contact and contract to fix a dropdown.

"Contracted" is still decided in exactly one place — orgs/service.py's list_facilities, off BILLING_ELIGIBLE_STAGES plus a facility code — and nothing is re-derived here.

get/api/fulfillment/facilities

Request

  • Base URL: https://api.pigeonly.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.pigeonly.com/api/fulfillment/facilities
  • Auth: none declared

Query parameters

contracted_onlyboolean
pageinteger nullable
limitinteger nullable

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.