API des bons de commande
đ Pourquoi utiliser lâAPI des bons de commande?â
Les bons de commande sont des Ă©lĂ©ments essentiels de la gestion des stocks et de la logistique dans DataDocks. Ils reprĂ©sentent les accords concernant la livraison de produits Ă vos entrepĂŽts (entrants) ou leur expĂ©dition depuis ceux-ci (sortants). LâAPI des bons de commande vous permet de crĂ©er, suivre et gĂ©rer ces documents essentiels de maniĂšre programmatique, reliant ainsi vos systĂšmes de chaĂźne dâapprovisionnement directement Ă vos opĂ©rations dâentrepĂŽt.
ProblĂšmes rĂ©els rĂ©solus par cette APIâ
- Rationalisation du traitement des commandes : Créez et mettez à jour automatiquement les bons de commande à partir de votre systÚme ERP ou de gestion des commandes
- Amélioration de la visibilité des stocks : Suivez les arrivées et départs prévus avec des informations détaillées sur les produits
- Simplification de la gestion des transporteurs : Associez des transporteurs aux bons de commande pour simplifier la logistique
- Optimisation de la planification : DĂ©finissez des Ă©chĂ©anciers pour mieux gĂ©rer les ressources dâentrepĂŽt
- Analyse avancĂ©e : AccĂ©dez Ă des donnĂ©es structurĂ©es sur les bons de commande, Ă des fins de reporting et dâanalyse
DĂ©marrage rapide en 5 minutesâ
PrĂȘt Ă crĂ©er votre premier bon de commande via lâAPI? Suivez ces Ă©tapes simples :
- Obtenez votre jeton API auprĂšs du support
- Identifiez votre sous-domaine dâemplacement (ex. :
votre-entrepot.datadocks.com
) - Créez un bon de commande basique avec cette commande :
Voir exemple cURL
curl -X POST \
https://your-warehouse.datadocks.com/api/v1/purchase_orders \
-H 'Authorization: Token YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"purchase_order": {
"po_number": "PO-2023-001",
"carrier_name": "Express Logistics",
"outbound": false,
"expected_starts_at": "2023-06-01T08:00:00-04:00",
"expected_ends_at": "2023-06-01T16:00:00-04:00",
"purchase_order_items": [
{
"product_name": "Widgets",
"unit_name": "Pallet",
"quantity": 10,
"weight": 500
}
]
}
}'
- Câest tout! Votre bon de commande est maintenant dans DataDocks. VĂ©rifiez votre tableau de bord pour le voir.
Aperçu de lâarchitecture de lâAPIâ
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â Your System ââââââââ¶â DataDocks API ââââââââ¶â Warehouse Ops â
â (ERP/OMS/TMS) ââââââââ†(REST/JSON) ââââââââ†(POs/Items) â
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â âČ
â â
⌠â
âââââââââââââââââââ
â Appointments â
â & Scheduling â
â â
ââ âââââââââââââââââ
Authentificationâ
Toutes les requĂȘtes API doivent inclure votre jeton API dans lâen-tĂȘte Authorization
 :
Authorization: Token YOUR_API_TOKEN
Lister les bons de commandeâ
Objectifâ
RĂ©cupĂšre une liste paginĂ©e de bons de commande avec possibilitĂ© de filtrer par numĂ©ro de BC. Utilisez cet endpoint pour synchroniser les bons de commande avec vos systĂšmes, vĂ©rifier le statut des livraisons prĂ©vues ou prĂ©parer des rapports sur lâactivitĂ© de lâentrepĂŽt.
Cas dâutilisation mĂ©tiersâ
- Synchroniser les bons de commande avec votre ERP ou systĂšme de gestion de commandes
- Générer des rapports sur les mouvements de stocks prévus
- Surveiller les livraisons ou expéditions à venir
- Suivre la performance des transporteurs sur les bons de commande
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/purchase_orders
ParamĂštres de requĂȘteâ
ParamĂštre | Type | Obligatoire | Description | Exemple |
---|---|---|---|---|
page | Integer | Non | Numéro de page pour la pagination (1 par défaut) | page=2 |
po_number | String | Non | Filtrer par numéro exact de bon de commande (non sensible à la casse) | po_number=A-1000 |
Format de la rĂ©ponseâ
La rĂ©ponse contient un tableau dâobjets bon de commande, chacun avec les champs suivants :
Champ | Type | Description |
---|---|---|
id | Integer | Identifiant unique du bon de commande |
po_number | String | Numéro du bon de commande |
name | String | Nom auto-généré à partir des informations du BC |
carrier_name | String | Nom du transporteur assigné au bon de commande |
location_name | String | Nom de lâemplacement dâentrepĂŽt |
outbound | Boolean | Commande sortante (true ) ou entrante (false ) |
expected_starts_at | String | Horodatage ISO8601 du début prévu |
expected_ends_at | String | Horodatage ISO8601 de fin prévu |
custom_values | Object | Paires clé/valeur des champs personnalisés |
purchase_order_items | Array | Liste des articles associés à ce bon de commande |
Chaque article dans purchase_order_items
contient :
Champ | Type | Description |
---|---|---|
id | Integer | Identifiant unique de lâarticle |
customer_name | String | Nom du client associĂ© Ă lâarticle |
product_name | String | Nom du produit |
unit_name | String | Unité de mesure (ex. : « Palette », « Boßte ») |
quantity | Number | Quantité du produit |
weight | Number | Poids de lâarticle |
custom_values | Object | Paires clĂ©/valeur des champs personnalisĂ©s de lâarticle |
Exemples de codeâ
cURLâ
Voir exemple cURL
# Liste de base
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders
# Filtrage par numéro de BC
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders?po_number=A-1000"
JavaScriptâ
Voir exemple JavaScript
// Utilisation de fetch API avec filtre sur numéro de BC
const getPurchaseOrders = async (poNumber) => {
const params = new URLSearchParams()
if (poNumber) params.append('po_number', poNumber)
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders?${params.toString()}`,
{
method: 'GET',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
},
)
if (!response.ok) {
const errorData = await response.json()
throw new Error(`Ăchec lors de la rĂ©cupĂ©ration des bons de commande : ${JSON.stringify(errorData)}`)
}
return response.json()
}
Exemple de rĂ©ponseâ
Voir exemple de réponse
[
{
"id": 1,
"po_number": "A-1000",
"name": "A-1000-FastCo-Cereal",
"carrier_name": "FastCo",
"location_name": "Toronto",
"outbound": false,
"expected_starts_at": "2020-10-09T13:35:00-04:00",
"expected_ends_at": "2020-10-15T13:35:00-04:00",
"custom_values": {
"expected_at": "2020-10-09",
"travel_type": "Plane",
"forklift_operator": "Joe"
},
"purchase_order_items": [
{
"id": 2,
"customer_name": "FishCo",
"product_name": "Trout",
"unit_name": "Skid",
"quantity": 16,
"weight": 102,
"custom_values": {}
},
{
"id": 1,
"customer_name": "FishCo",
"product_name": "Cereal",
"unit_name": "Skid",
"quantity": 33,
"weight": 581,
"custom_values": {}
}
]
}
]
RĂ©cupĂ©rer un bon de commande uniqueâ
Objectifâ
Obtenez les informations dĂ©taillĂ©es dâun bon de commande spĂ©cifique par son identifiant. Utilisez cet endpoint si vous avez besoin des donnĂ©es complĂštes sur une commande prĂ©cise, y compris tous ses articles et champs personnalisĂ©s.
Cas dâutilisation mĂ©tiersâ
- Afficher un bon de commande détaillé dans votre application
- VĂ©rifier les dĂ©tails dâun BC avant le traitement
- AccĂ©der Ă la liste complĂšte des articles dâune commande donnĂ©e
- VĂ©rifier les champs personnalisĂ©s pour lâintĂ©gration Ă dâautres systĂšmes
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/purchase_orders/:id
ParamĂštres dâURLâ
ParamĂštre | Type | Obligatoire | Description |
---|---|---|---|
id | Integer | Oui | Identifiant unique du bon de commande |
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne une rĂ©ponse 200 OK
avec lâobjet complet du bon de commande, dans le mĂȘme format que pour la liste.
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/1
JavaScriptâ
Voir exemple JavaScript
const getPurchaseOrder = async (purchaseOrderId) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/${purchaseOrderId}`,
{
method: 'GET',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
},
)
if (!response.ok) {
if (response.status === 404) {
throw new Error(`Bon de commande #${purchaseOrderId} introuvable`)
}
const errorData = await response.json()
throw new Error(`Ăchec lors de la rĂ©cupĂ©ration du bon de commande : ${JSON.stringify(errorData)}`)
}
return await response.json()
} catch (error) {
console.error('Erreur lors de la récupération du bon de commande :', error)
throw error
}
}
CrĂ©er un bon de commandeâ
Objectifâ
CrĂ©er un nouveau bon de commande dans DataDocks. Cet endpoint vous permet dâajouter de nouveaux bons de commande et leurs articles de maniĂšre programmatique, intĂ©grant directement votre systĂšme de gestion des commandes Ă vos opĂ©rations dâentrepĂŽt.
Arbre de dĂ©cision : Quand crĂ©er un BC via lâAPIâ
âââââââââââââââââââ
â Ajouter un bon â
â de commande ? â
ââââââââââŹâââââââââ
â
âŒ
âââââââââââââââââââ Oui âââââââââââââââââââ
â IntĂ©gration ââââââââââââââ¶â Parfait pour â
â ERP/commande ? â â lâAPI ! â
ââââââââââŹâââââââââ âââââââââââââââââââ
â Non
âŒ
âââââââââââââââââââ Oui âââââââââââââââââââ
âCrĂ©ation BC en ââââââââââââââ¶â Importation en â
âmasse Ă faire ? â â vrac â
ââââââââââŹâââââââââ âââââââââââââââââââ
â Non
âŒ
âââââââââââââââââââ
â Utilisez â
â lâinterface â
â web â
âââââââââââââââââââ
Cas dâutilisation mĂ©tiersâ
- Intégration systÚme : Créez des BC directement à partir de votre ERP ou votre systÚme de gestion de commandes
- Automatisation du traitement : Convertissez des commandes de vente en BC de maniĂšre automatique
- Intégration EDI : Transformez les documents EDI 850 en BC DataDocks
- Intégration fournisseur : Permettez aux fournisseurs de soumettre des BC via vos systÚmes
RequĂȘte HTTPâ
POST https://[location_subdomain].datadocks.com/api/v1/purchase_orders
Corps de la requĂȘteâ
ParamÚtre | Type | Obligatoire | Description | Contraintes | Défaut | Exemple |
---|---|---|---|---|---|---|
po_number | String | Oui | NumĂ©ro du bon de commande | Doit ĂȘtre unique | Aucun | "PO-2023-001" |
carrier_name | String | Non * | Nom du transporteur | Aucun | Aucun | "Express Logistics" |
carrier_number | String | Non | Numéro de société du transporteur | Doit exister | Aucun | "EXP-001" |
location_name | String | Non | Nom de lâemplacement | Doit exister | Emplacement actuel | "Toronto Warehouse" |
outbound | Boolean | Non | Commande sortante | Aucun | false | true |
expected_starts_at | String | Non | Horodatage ISO8601 de début prévu | Format ISO8601 valide | Aucun | "2023-06-01T08:00:00-04:00" |
expected_ends_at | String | Non | Horodatage ISO8601 de fin prévue | Format ISO8601 valide | Aucun | "2023-06-01T16:00:00-04:00" |
alternate_reference_number | String | Non | Référence alternative | Aucun | Aucun | "REF-123" |
closed | Boolean | Non | Le BC est-il fermé ? | Aucun | false | true |
custom_values | Object | Non * | Valeurs des champs personnalisĂ©s | Selon lâemplacement | {} | {"department": "Produce"} |
purchase_order_items | Array | Non | Articles/options du BC | Au moins un recommandé | [] | Voir ci-dessous |
Chaque article dans purchase_order_items
peut inclure :
ParamĂštre | Type | Obligatoire | Description | Contraintes | Exemple |
---|---|---|---|---|---|
customer_name | String | Non * | Nom du client | Aucun | "Acme Corp" |
customer_number | String | Non * | Numéro de société du client | Doit exister | "ACME-001" |
product_name | String | Non * | Nom du produit | Aucun | "Widgets" |
unit_name | String | Non * | Unité de mesure | Aucun | "Pallet" |
quantity | Number | Non * | QuantitĂ© du produit | Doit ĂȘtre positive | 10 |
weight | Number | Non * | Poids de lâarticle | Doit ĂȘtre positif | 500 |
custom_values | Object | Non * | Champs personnalisĂ©s de lâarticle | Selon lâemplacement | {"color": "Blue"} |
* Champs susceptibles dâĂȘtre requis selon la configuration de lâemplacement
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne une rĂ©ponse 200 OK
avec lâobjet complet du bon de commande, incluant lâid
généré et les valeurs attribuées par le systÚme.
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"purchase_order": {
"po_number": "PO-2023-001",
"carrier_name": "Express Logistics",
"outbound": false,
"expected_starts_at": "2023-06-01T08:00:00-04:00",
"expected_ends_at": "2023-06-01T16:00:00-04:00",
"custom_values": {
"department": "Electronics",
"priority": "High"
},
"purchase_order_items": [
{
"product_name": "Laptops",
"unit_name": "Box",
"quantity": 50,
"weight": 250,
"custom_values": {
"model": "XPS 13"
}
},
{
"product_name": "Monitors",
"unit_name": "Pallet",
"quantity": 10,
"weight": 500,
"custom_values": {
"size": "27-inch"
}
}
]
}
}' \
https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders
JavaScriptâ
Voir exemple JavaScript
const createPurchaseOrder = async (purchaseOrderData) => {
try {
const response = await fetch(`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders`, {
method: 'POST',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ purchase_order: purchaseOrderData }),
})
if (!response.ok) {
const errorData = await response.json()
const errorMessages = Object.entries(errorData.errors || {})
.map(([field, messages]) => `${field}: ${messages.join(', ')}`)
.join('\n')
throw new Error(`Ăchec lors de la crĂ©ation du bon de commande :\n${errorMessages}`)
}
return await response.json()
} catch (error) {
console.error('Erreur APIÂ :', error)
throw error
}
}
Mettre Ă jour un bon de commandeâ
Objectifâ
Met Ă jour les dĂ©tails dâun bon de commande existant. Cet endpoint vous permet de modifier nâimporte quel aspect dâun BC, y compris ses articles, dates, informations sur le transporteur et champs personnalisĂ©s.
Cas dâutilisation mĂ©tiersâ
- Mise à jour des données : Modifiez les dates de livraison ou les informations sur le transporteur
- Modifier le contenu dâun BCÂ : Ajoutez, supprimez ou modifiez les articles selon les besoins
- Changer le statut : Marquez un BC comme fermĂ© lorsquâil est complĂ©tĂ©
- Ajouter des informations de suivi : Mettez à jour les champs personnalisés avec des données de suivi ou de livraison
RequĂȘte HTTPâ
PUT https://[location_subdomain].datadocks.com/api/v1/purchase_orders/:id
ParamĂštres dâURLâ
ParamĂštre | Type | Obligatoire | Description |
---|---|---|---|
id | Integer | Oui | Identifiant unique du bon de commande |
Corps de la requĂȘteâ
Le corps de la requĂȘte accepte les mĂȘmes paramĂštres que la crĂ©ation. Seuls les champs Ă modifier doivent ĂȘtre inclus.
ScĂ©narios de mise Ă jour courantsâ
Mise Ă jour des datesâ
{
"purchase_order": {
"expected_starts_at": "2023-06-05T08:00:00-04:00",
"expected_ends_at": "2023-06-05T16:00:00-04:00"
}
}
Changement de transporteurâ
{
"purchase_order": {
"carrier_name": "Fast Transit Inc",
"carrier_number": "FTI-001"
}
}
Fermeture dâun bon de commandeâ
{
"purchase_order": {
"closed": true
}
}
Mise Ă jour des articlesâ
{
"purchase_order": {
"purchase_order_items": [
{
"id": 123,
"quantity": 15
},
{
"product_name": "New Product",
"unit_name": "Box",
"quantity": 5,
"weight": 25
}
]
}
}
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X PUT \
-d '{
"purchase_order": {
"carrier_name": "Updated Logistics Co",
"expected_starts_at": "2023-06-02T08:00:00-04:00",
"custom_values": {
"tracking_number": "TRK12345"
}
}
}' \
https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/1
JavaScriptâ
Voir exemple JavaScript
const updatePurchaseOrder = async (purchaseOrderId, updateData) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/${purchaseOrderId}`,
{
method: 'PUT',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ purchase_order: updateData }),
},
)
if (!response.ok) {
const errorData = await response.json()
throw new Error(`Ăchec lors de la mise Ă jour du bon de commande : ${JSON.stringify(errorData)}`)
}
return await response.json()
} catch (error) {
console.error('Erreur lors de la mise à jour du bon de commande :', error)
throw error
}
}
Suppression de tous les articlesâ
Si vous devez supprimer tous les articles dâun bon de commande, incluez le paramĂštre clear_po_items
Ă la valeur true
:
{
"purchase_order": {
"clear_po_items": "true",
"purchase_order_items": [
{
"product_name": "New Product",
"unit_name": "Box",
"quantity": 10
}
]
}
}
Ceci supprimera tous les articles existants et les remplacera par ceux fournis (le cas échéant).
Lister les bons de commande avec rendez-vous rĂ©servĂ©sâ
Objectifâ
RĂ©cupĂ©rez les bons de commande qui sont associĂ©s Ă des rendez-vous rĂ©servĂ©s, ainsi que le dĂ©tail de leurs rendez-vous. Cet endpoint est destinĂ© aux clients qui prĂ©fĂšrent lâinterrogation rĂ©guliĂšre (polling) aux webhooks pour surveiller la rĂ©servation et lâĂ©volution des rendez-vous.
Cas dâutilisation mĂ©tiersâ
- Alternatif aux webhooks : Surveillez la réservation de rendez-vous sans infrastructure webhook
- Suivi de statut de rendez-vous : Vérifiez quels bons de commande sont réservés avec succÚs
- Synchronisation incrémentale : Utilisez
updated_since
pour ne récupérer que les données modifiées - Suivi des livraisons planifiées : Surveillez quand les bons de commande sont véritablement prévus
- Reporting par site : Surveillez lâactivitĂ© de rendez-vous sur vos emplacements
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/purchase_orders/with_booked_appointments
ParamĂštres de requĂȘteâ
ParamĂštre | Type | Obligatoire | Description | Exemple |
---|---|---|---|---|
start_time | String | Non | Horodatage ISO8601 - retour Ă partir de ce moment | start_time=2023-06-01T08:00:00-04:00 |
end_time | String | Non | Horodatage ISO8601 - retour jusquâĂ ce moment | end_time=2023-06-30T17:00:00-04:00 |
limit | Integer | Non | Nombre max. de résultats (défaut : 100, max : 250) | limit=50 |
offset | Integer | Non | Nombre de résultats à ignorer (défaut : 0) | offset=100 |
updated_since | String | Non | Horodatage ISO8601 - retour des BC créés/modifiés depuis | updated_since=2023-06-01T00:00:00-04:00 |
Format de la rĂ©ponseâ
La rĂ©ponse contient un tableau dâobjets bon de commande, chacun ayant au moins un rendez-vous rĂ©servĂ©. Chaque objet inclut :
Champ | Type | Description |
---|---|---|
po_number | String | Numéro du bon de commande |
appointments | Array | Liste des rendez-vous associés à ce BC |
Chaque rendez-vous dans le tableau appointments
comprend :
Champ | Type | Description |
---|---|---|
appointment_id | String | Identifiant unique du rendez-vous |
appointment_number | String | Numéro lisible du rendez-vous |
scheduled_at | String | Horodatage ISO8601 de planification |
location | String | Nom de lâemplacement du rendez-vous |
Ă noterâ
- Résultats filtrés : Seuls les BC ayant au moins un rendez-vous réservé sont retournés
- Données en temps réel : Les résultats reflÚtent le statut actuel
- Fuseau horaire : Tous les horodatages sont dans le fuseau de lâemplacement
- Pagination : Utilisez
limit
etoffset
pour gérer de grands jeux de résultats
Exemples de codeâ
cURLâ
Voir exemple cURL
# RequĂȘte de base
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/with_booked_appointments"
# Avec filtrage temporel et pagination
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/with_booked_appointments?start_time=2023-06-01T08:00:00-04:00&end_time=2023-06-30T17:00:00-04:00&limit=50&offset=0"
# Synchronisation incrémentale depuis la derniÚre mise à jour
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/with_booked_appointments?updated_since=2023-06-15T12:00:00-04:00"
JavaScriptâ
Voir exemple JavaScript
const getPurchaseOrdersWithAppointments = async (filters = {}) => {
const params = new URLSearchParams()
// Ajoute les filtres optionnels
if (filters.startTime) params.append('start_time', filters.startTime)
if (filters.endTime) params.append('end_time', filters.endTime)
if (filters.limit) params.append('limit', filters.limit)
if (filters.offset) params.append('offset', filters.offset)
if (filters.updatedSince) params.append('updated_since', filters.updatedSince)
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/with_booked_appointments?${params.toString()}`,
{
method: 'GET',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
},
)
if (!response.ok) {
const errorData = await response.json()
throw new Error(
`Ăchec lors de la rĂ©cupĂ©ration des BC avec rendez-vous : ${JSON.stringify(errorData)}`,
)
}
return await response.json()
} catch (error) {
console.error('Erreur lors de la récupération des BC avec rendez-vous :', error)
throw error
}
}
// Exemple dâutilisation pour une synchronisation incrĂ©mentale
const syncAppointments = async (lastSyncTime) => {
const data = await getPurchaseOrdersWithAppointments({
updatedSince: lastSyncTime,
limit: 100,
})
// Traitez les données de rendez-vous
data.forEach((po) => {
console.log(`BC ${po.po_number} a ${po.appointments.length} rendez-vous`)
po.appointments.forEach((appointment) => {
console.log(` - ${appointment.appointment_number} prévu pour ${appointment.scheduled_at}`)
})
})
return data
}
Exemple de rĂ©ponseâ
Voir exemple de réponse
[
{
"po_number": "PO123456",
"appointments": [
{
"appointment_id": "appt_001",
"appointment_number": "A123",
"scheduled_at": "2025-06-24T14:00:00-04:00",
"location": "Toronto DC"
},
{
"appointment_id": "appt_002",
"appointment_number": "A124",
"scheduled_at": "2025-06-25T09:00:00-04:00",
"location": "Toronto DC"
}
]
},
{
"po_number": "PO789012",
"appointments": [
{
"appointment_id": "appt_003",
"appointment_number": "A125",
"scheduled_at": "2025-06-26T11:30:00-04:00",
"location": "Toronto DC"
}
]
}
]
Supprimer un bon de commandeâ
Objectifâ
Supprimer un bon de commande du systĂšme. Cet endpoint vous permet de supprimer des BC devenus inutiles.
Points importantsâ
Avant de supprimer un bon de commande, considérez :
- Un BC ne doit ĂȘtre associĂ© Ă aucun rendez-vous actif
- La suppression est définitive et irréversible
- Dans bien des cas, il est préférable de marquer le BC comme fermé plutÎt que de le supprimer
Cas dâutilisation mĂ©tiersâ
- Nettoyer les données tests : Supprimez des BC de test ou fictifs
- Supprimer les doublons : Nettoyez la base aprÚs déduplication
- Maintenance du systÚme : Supprimez les bons de commande obsolÚtes
RequĂȘte HTTPâ
DELETE https://[location_subdomain].datadocks.com/api/v1/purchase_orders/:id
ParamĂštres dâURLâ
ParamĂštre | Type | Obligatoire | Description |
---|---|---|---|
id | Integer | Oui | Identifiant unique du bon de commande |
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne une rĂ©ponse 204 No Content
, indiquant que le bon de commande a été supprimé avec succÚs.
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
-X DELETE \
https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/1
JavaScriptâ
Voir exemple JavaScript
const deletePurchaseOrder = async (purchaseOrderId) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/purchase_orders/${purchaseOrderId}`,
{
method: 'DELETE',
headers: {
Authorization: 'Token YOUR_API_TOKEN',
},
},
)
if (!response.ok) {
if (response.status === 404) {
throw new Error(`Bon de commande #${purchaseOrderId} introuvable`)
}
const errorData = await response.json()
throw new Error(`Ăchec lors de la suppression du bon de commande : ${JSON.stringify(errorData)}`)
}
return true // Suppression réussie
} catch (error) {
console.error('Erreur lors de la suppression du bon de commande :', error)
throw error
}
}
RĂ©solution automatique des entitĂ©sâ
Appariement du transporteurâ
Lors de la crĂ©ation ou mise Ă jour dâun bon de commande, vous pouvez fournir soit carrier_name
, soit carrier_number
(ou les deux)Â :
- Si vous fournissez
carrier_number
, le systĂšme tentera de retrouver un transporteur correspondant avec ce numĂ©ro - Sâil y a correspondance, le nom et lâID du transporteur seront associĂ©s automatiquement au bon de commande
- Sinon, le systÚme utilisera le numéro fourni comme nom de transporteur
Appariement du produitâ
Pour les articles des bons de commande :
- Si le nom du produit correspond à un produit existant (non sensible à la casse), il sera utilisé
- Sinon, lâarticle sera créé sans liaison Ă un produit enregistrĂ©
- Contactez le support si vous devez créer un produit inexistant
Appariement de lâunitĂ©â
MĂȘme principe :
- Si le nom de lâunitĂ© correspond Ă une unitĂ© connue (non sensible Ă la casse), elle sera utilisĂ©e
- Sinon, lâarticle nâaura pas dâunitĂ© associĂ©e proprement
- Contactez le support si vous devez créer une unité absente
Bonnes pratiquesâ
Gestion des donnĂ©esâ
- Utiliser des numéros de BC uniques : chaque BC doit avoir un identifiant propre
- Fournir le numĂ©ro du transporteur : lorsque câest possible, pour lâassociation correcte
- Valider cÎté client : vérifiez la validité des données avant envoi
- Utiliser le drapeau "fermé" : privilégiez la fermeture à la suppression définitive
- GĂ©rer correctement les champs personnalisĂ©s : nâutilisez que ceux prĂ©vus pour votre site
Optimisation des performancesâ
- Inclure toutes les données pertinentes : dans la mesure du possible, regroupez les informations en un seul appel
- Faire des opérations par lot : regroupez les modifications liées
- Filtrer prĂ©cisĂ©ment les requĂȘtes : utilisez les filtres disponibles pour limiter la charge
Erreurs courantes et dĂ©pannageâ
- UnicitĂ© du numĂ©ro de BC : chaque numĂ©ro doit ĂȘtre unique dans un emplacement
- Format de date : doit respecter ISO8601 (ex.
"2023-06-01T08:00:00-04:00"
) - Association transporteur : utilisez bien le numéro de société du transporteur
- Types de champs personnalisés : Les champs JSON sont conservés tels quels ; les autres convertis en chaßne de caractÚres
- Effacement des articles : pour remplacer intégralement, utilisez le paramÚtre
clear_po_items
Gestion des erreursâ
Code dâerreur | Description | Cause possible |
---|---|---|
400 | RequĂȘte invalide | Valeurs ou format non valides |
404 | Introuvable | LâID du BC nâexiste pas |
422 | Entité non traitable | Validation échouée (ex. : champ requis absent) |
401 | Non autorisé | Jeton API invalide ou absent |
403 | Interdit | Permissions insuffisantes |
Exemple de rĂ©ponse dâerreurâ
{
"errors": {
"po_number": ["ne peut pas ĂȘtre vide"],
"purchase_order_items": ["doit avoir au moins un article"]
}
}
Aide et supportâ
En cas de problÚme non couvert par cette documentation :
- Consultez la rĂ©ponse dâerreur : La plupart des erreurs API incluent une explication dĂ©taillĂ©e
- Vérifiez vos droits : Assurez-vous que votre jeton API a les bonnes permissions
- Testez étape par étape : Décomposez les opérations complexes pour isoler le problÚme