/v1/supplier/work_order/ pour recevoir des travaux, y répondre et tenir les acheteurs informés pendant la progression du travail. La planification des visites et l’achèvement du travail se font via les appels de service.
Tous les exemples supposent :
Lire votre file
Le modèle qui passe à l’échelle est la poussée, puis la récupération par id :offset, limit par défaut 10 max 25, sort_by, order), et tout autre paramètre de requête agit comme un filtre de champ. Tout est restreint à votre établissement.
La liste et le comptage déterminent quels bons de travail correspondent dans l’index de recherche d’OpenWrench, puis chargent les enregistrements complets depuis la base de données. L’endpoint de comptage exécute la même requête que la liste, alors les deux concordent toujours. Comportement à connaître :
- Recherche plein texte.
search=correspond aux mots (avec correspondance par préfixe et par radical) dans le titre, la description, le nom de l’emplacement, les notes, les notes d’arrivée et de départ des appels de service, et le nom du type de problème. Il correspond aussi aux numéros de référence comme le numéro de bon de travail, le numéro de bon de commande et le numéro de série d’actif. Encadrez la valeur de guillemets doubles pour exiger la phrase exacte. - Les filtres d’actif incluent les sous-actifs.
assetId=etassetIds=correspondent aux bons de travail dont l’actif principal ou n’importe quel sous-actif est l’id donné. - Tri.
sort_byprend en chargecreatedAt,locationName,woPriority(selon le délai de résolution attendu de la priorité) etlastServiceCallServiceScheduledAt. Toute autre valeur, ou l’absence desort_by, trie parcreatedAtdécroissant. - Les filtres non indexés sont ignorés.
updatedAtStartDate,updatedAtEndDate,buyerFacilityIdetwalkthroughIdne figurent pas dans l’index de recherche et ne restreignent plus les résultats. Filtrez plutôt sur une fenêtrestatusChangedAtou d’autres colonnes indexées. - Fraîcheur. Les mises à jour de l’index de recherche et du réplica accusent un léger retard sur les écritures. Votre propre changement fraîchement écrit, ou un bon de travail assigné il y a quelques secondes, peut être brièvement absent des résultats de liste et des comptages.
- Profondeur de pagination.
offset + limitne peut pas dépasser la fenêtre de résultats de recherche de 10 000. Resserrez le filtre plutôt que de paginer aussi profondément. - Masquage de données. Si vous êtes un fournisseur tiers (pas l’équipe de service interne d’un acheteur), les champs privés à l’acheteur sont vidés sur les bons de travail, les emplacements et les factures avant que la réponse soit retournée. Les champs manquants sont généralement du masquage, pas des bogues. Voir Données de référence pour les détails.
Accepter ou refuser
Accepter avecPOST /v1/supplier/work_order/work_orders/status_update/confirm, qui définit le statut à ConfirmedByServiceProvider. Un bon de travail déjà à un statut d’affichage terminé ou clôturé ne peut pas être accepté (400).
POST .../status_update/decline. Seuls les contacts de l’établissement fournisseur affecté au bon de travail peuvent refuser. Le bon de travail quitte votre file via le flux de changement de fournisseur : son statut revient à PendingApproval, ou un fournisseur du réseau privé est choisi automatiquement, selon la configuration de l’acheteur. Le text de la note est enregistré comme raison du refus et se reflète dans ce que voit l’acheteur, alors soyez précis.
Les deux appels prennent { "id": ..., "note": { ... } } et retournent le bon de travail mis à jour.
Tenir l’acheteur informé
Trois signaux légers pendant que le travail est en cours : Suivi des pièces. Trois endpoints de statut, avec la même forme de corps{ id, note } que ci-dessus :
Date d’achèvement estimée.
PATCH /v1/supplier/work_order/work_orders/{id}/estimated_completion_date ne lit que estimatedCompletionDate (ISO 8601) dans le corps :
PATCH /v1/supplier/work_order/work_orders/{id}/append_supplier_attachments ajoute des références de fichiers à supplierAttachments, en préservant ce qui s’y trouve déjà. Téléversez d’abord le fichier (voir Fichiers et utilisateurs), puis :
Notes
Ajoutez au fil partagé acheteur-fournisseur avecPATCH /v1/supplier/work_order/work_orders/append_notes ({ "id": ..., "note": { "text", "noteAddedBy", "noteAddedAt" } }), et lisez le fil d’un bon de travail avec GET /v1/supplier/work_order/work_order_notes/{woId}. La lecture met à jour les accusés de lecture pour votre contact, et une lecture refusée retourne une liste vide plutôt qu’une erreur.
Pour @mentionner des personnes sur la note, ajoutez taggedUsers à côté de note : une liste de courriels de contacts. OpenWrench intègre chaque courriel dans note.elements comme un élément user, la même forme que les applications écrivent pour une @mention, vous n’avez donc pas à construire la structure elements vous-même. Les contacts étiquetés sont ajoutés à la liste des abonnés du bon de travail s’ils ne sont pas déjà abonnés.
taggedUsers :
- Les courriels sont épurés et mis en minuscules avant la correspondance. Une note peut mentionner au plus 25 utilisateurs.
- Les courriels en double dans la liste, et les utilisateurs déjà étiquetés dans
note.elements, sont ignorés plutôt que mentionnés deux fois. - Une entrée qui n’est pas un courriel valide, ou une liste de plus de 25 courriels, est rejetée avec un
400de typeinvalidInputDataException. Rien n’est persisté. - Une liste vide est ignorée. Envoyer
taggedUserssans objetnoteest rejeté avec400.
PATCH /v1/supplier/work_order/work_orders/append_notes/bulk avec { "id": ..., "notes": [ ... ] }. Chaque note doit porter une URL photo et aucun autre contenu : text doit être vide et video, audio, otherFile et elements doivent être absents. Une requête accepte 1 à 25 notes, les URL de photo en double sont rejetées avec 400, et le lot conserve son ordre sous un seul noteAddedAt défini par le serveur. Les abonnés reçoivent une seule notification groupée au lieu d’une notification par photo.
Étiquettes
Les étiquettes de bons de travail sont des marqueurs légers (un nom et une couleur optionnelle) servant à découper la file. Via l’API, vous pouvez lire le catalogue d’étiquettes et remplacer les étiquettes appliquées à un bon de travail. La création et la modification des étiquettes elles-mêmes restent dans l’application OpenWrench. Le catalogue que vous voyez dépend de votre clé : une clé appartenant à l’équipe de service interne d’un acheteur voit le catalogue de cette entreprise acheteuse, et la clé d’un fournisseur tiers voit le catalogue de son propre établissement. Parcourir le catalogue avecGET /v1/supplier/work_order/work_order_labels, ou en récupérer une avec GET /v1/supplier/work_order/work_order_labels/{id}. La liste est paginée à 10 par page par défaut et accepte les filtres search et label sur le texte de l’étiquette. Passez no_pagination=true pour récupérer tout le catalogue en un seul appel.
Remplacer les étiquettes d’un bon de travail avec PUT /v1/supplier/work_order/work_orders/{woId}/labels. Le corps est { "ids": [...] } et il s’agit d’un remplacement complet : les étiquettes non listées sont retirées, et un tableau vide les efface toutes. La réponse liste les associations d’étiquettes désormais actives sur le bon de travail.
- Chaque id doit être une étiquette active de votre propre catalogue; un
idsmanquant ou qui n’est pas un tableau, un id non entier, et les ids inconnus ou d’un autre locataire sont tous rejetés avec400. - L’écriture requiert la permission d’écriture sur les bons de travail : une clé qui peut seulement voir le bon de travail (un soumissionnaire, ou un établissement avec visibilité en lecture seule) obtient
400. Sur un bon de travail non assigné, seul un établissement avec visibilité en lecture-écriture peut l’étiqueter. - Un id de bon de travail inconnu, supprimé ou étranger répond le même
400qu’une écriture refusée, pas un404.
Créer un bon de travail à l’initiative du fournisseur
Les fournisseurs peuvent ouvrir eux-mêmes des bons de travail (un technicien remarque une porte brisée pendant qu’il est sur place pour autre chose).POST /v1/supplier/work_order/work_orders requiert title et locationId; l’emplacement détermine l’établissement et l’entreprise acheteuse.
problemTypeId retombe sur le premier type de problème feuille de l’entreprise acheteuse de l’emplacement, et woPriorityId sur une priorité par défaut pour cette entreprise. Un assetId, s’il est fourni, doit exister, et son secteur est hérité lorsque areaId n’est pas défini. Le champ est needApproval (sans « s ») sur ce corps de création. Un id dans le corps est ignoré : cet appel crée toujours un nouveau bon de travail.
Le serveur fixe le statut initial. Pour une clé de fournisseur tiers, tout status ou isSupplierInitiated dans le corps est ignoré. Le serveur crée le bon de travail en SupplierInitiatedPendingApproval avec isSupplierInitiated: true. La configuration d’approbation de l’acheteur décide ensuite de sa destination : il reste en SupplierInitiatedPendingApproval jusqu’à ce qu’un acheteur l’approuve ou, lorsque l’acheteur approuve automatiquement les bons de travail à l’initiative du fournisseur, il est immédiatement confirmé à votre établissement en ConfirmedByServiceProvider. Les clés appartenant à l’équipe de service interne d’un acheteur, ainsi que les fournisseurs payants qui créent un bon de travail à l’emplacement d’un client qu’ils gèrent, conservent le status qu’ils envoient. Si ces clés omettent status, le statut initial est dérivé de la configuration de l’entreprise acheteuse; une équipe interne arrive en AssignedToInternalTech.
Types de problèmes
GET /v1/supplier/work_order/problem_types liste les types de problèmes à travers vos entreprises acheteuses liées (non limité en débit). Utilisez-le pour classer correctement les bons de travail à l’initiative du fournisseur, par acheteur.
Boucle d’intégration typique
- Enregistrez un endpoint webhook pour
workorder.createetworkorder.status_update. À chaque livraison, récupérez le bon de travail par id. Faites le chargement initial unique depuis l’endpoint de liste, et gardez celui-ci hors de la boucle en régime permanent, sauf comme sondage filet de sécurité peu fréquent et étroitement filtré. confirmoudeclinedans votre entente de service.- Planifiez la visite via les appels de service; publiez des statuts de pièces et une ECD au fil des développements.
- Complétez via le départ, puis facturez via soumissions et facturation.