> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.useopenwrench.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supplier network

# Réseau de fournisseurs et répartition classée dans l'API Acheteur

> Interrogez votre réseau de fournisseurs et classez les fournisseurs du réseau privé pour un emplacement et un type de problème afin d'automatiser la répartition avec l'API Acheteur OpenWrench.

Deux familles d'endpoints répondent à « qui peut effectuer ce travail » : la liste des **établissements fournisseurs** (l'ensemble de votre réseau) et l'endpoint **du réseau privé classé** (la liste courte ordonnée pour un emplacement et un type de problème donnés). Combinés au [patch de réaffectation de bon de travail](/buyer-api/work-orders#reassign-a-supplier), ils vous permettent d'automatiser la répartition.

Tous les exemples supposent :

```bash theme={null}
export BASE="https://api.useopenwrench.com/api/external"
export KEY="<your-api-key>"
export SECRET="<shared-secret>"
```

## Votre réseau de fournisseurs

`GET /v1/buyer/supplier_facilities` retourne chaque relation fournisseur non supprimée pour votre entreprise. Contrairement à la plupart des endpoints de liste, il prend en charge un ensemble de filtres documentés :

| Filtre            | Correspond à                                                              |
| ----------------- | ------------------------------------------------------------------------- |
| `search`          | Nom de l'établissement, nom affiché, ou votre alias pour l'établissement. |
| `name`            | Nom de l'établissement.                                                   |
| `status`          | Statut de la relation.                                                    |
| `problemTypeId`   | Fournisseurs couvrant un type de problème.                                |
| `spendCategoryId` | Fournisseurs couvrant une catégorie de dépense.                           |
| `locationId`      | Fournisseurs desservant un emplacement.                                   |

```bash theme={null}
# Fournisseurs capables en réfrigération desservant l'emplacement 1204
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/buyer/supplier_facilities?problemTypeId=17&locationId=1204"

# Recherche en texte libre
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/buyer/supplier_facilities?search=arctic"
```

Récupérez un seul établissement avec `GET /v1/buyer/supplier_facilities/{id}`.

## Fournisseurs classés du réseau privé

Pour la répartition automatisée, demandez la liste classée pour une paire `(emplacement, type de problème)` :

```bash theme={null}
curl -H "X-API-KEY: $KEY" -H "OW-KEY: $SECRET" \
  "$BASE/v1/buyer/private_network/buyer_supplier_relationships/ranked/1204/17"
```

`GET /v1/buyer/private_network/buyer_supplier_relationships/ranked/{locationId}/{problemTypeId}` retourne les relations acheteur-fournisseur, chacune hydratée avec les détails de votre relation (contacts et adresses courriel d'acheminement).

<Warning>
  **Le rang est transmis par l'ordre du tableau.** Tout `sort_by` que vous passez est délibérément ignoré afin que l'ordre du tableau soit toujours égal au rang. L'endpoint est paginé (par défaut 10, maximum 25 par page), donc le rang continue à travers les pages : le premier élément de la deuxième page est le rang 11.
</Warning>

## Modèle de répartition automatisée

1. Un bon de travail arrive (ou est créé non assigné).
2. Appelez l'endpoint classé pour le `locationId` et le `problemTypeId` du bon de travail.
3. Prenez l'établissement fournisseur de la première relation et affectez-le, soit au moment de la création (`supplierFacilityId` dans le corps de création), soit après avec `PATCH /v1/buyer/work_order/work_orders/{id}`.
4. Si le fournisseur refuse, le bon de travail retourne à `PendingApproval` (ou un fournisseur du réseau privé peut être choisi automatiquement, selon votre configuration). Sur refus, réexécutez le classement et assignez le candidat suivant.

Les échelles d'escalade, les délais d'intervention par entente de service et les décomptes de refus peuvent tous être superposés à cette boucle; l'endpoint de classement vous donne les candidats ordonnés, et les `statusChanges` du bon de travail vous disent comment chaque tentative s'est déroulée.
