API de rendez-vous
đ Pourquoi utiliser l'API des rendez-vous ?â
Les rendez-vous sont essentiels pour les opĂ©rations d'entrepĂŽt dans DataDocks. Ils reprĂ©sentent des crĂ©neaux horaires rĂ©servĂ©s Ă vos quais ou Ă vos cours pour la rĂ©ception ou l'expĂ©dition d'inventaire. L'API des rendez-vous vous donne un contrĂŽle programmatique sur l'ensemble de votre flux de planification d'entrepĂŽtâde la rĂ©servation des crĂ©neaux Ă la gestion des mouvements de camions jusqu'Ă la complĂ©tion des expĂ©ditions.
ProblĂšmes concrets que cette API rĂ©soutâ
- Ăliminer la double saisie : Synchronisez directement les rendez-vous entre votre ERP/WMS et DataDocks
- Réduire la surcharge de communication : Automatisez les notifications entre le personnel d'entrepÎt et les transporteurs
- Optimiser lâutilisation des quais : Planifiez les rendez-vous de maniĂšre programmatique pour maximiser lâefficacitĂ©
- Suivre les KPI en temps rĂ©el : Surveillez la performance Ă temps, les temps dâattente et le dĂ©bit
- Améliorer la visibilité : Offrez aux transporteurs et clients un accÚs libre-service au statut des rendez-vous
DĂ©marrage rapide en 5 minutesâ
Vous voulez voir lâAPI en action tout de suite ? Suivez ces Ă©tapes pour crĂ©er votre premier rendez-vous :
- Demandez et obtenez votre jeton API auprĂšs du support
- Trouvez votre sous-domaine dâemplacement (ex.
votre-entrepot.datadocks.com
) - Créez un rendez-vous de base avec cette commande :
Voir lâexemple cURL dĂ©marrage rapide
curl -X POST \
https://your-warehouse.datadocks.com/api/v1/appointments \
-H 'Authorization: Token YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"appointment": {
"scheduled_at": "2023-12-15T10:00:00-05:00",
"duration": 60,
"dock_name": "Dock 1",
"shipping_number": "SHIP-12345"
}
}'
- Voilà ! Vous avez créé votre premier rendez-vous. Vérifiez votre tableau de bord DataDocks pour le voir.
Aperçu de lâarchitecture de lâAPIâ
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â Votre systĂšme ââââââââ¶â DataDocks API ââââââââ¶â Ops EntrepĂŽt â
â (ERP/WMS/TMS) ââââââââ†(REST/JSON) ââââââââ†(Planification)â
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â âČ
â â
⌠â
âââââââââââââââââââ
â Applis transportâ
â (Pointage) â
âââââââââââââââââââ
Authentificationâ
Toutes les requĂȘtes API doivent inclure votre jeton API dans lâen-tĂȘte Authorization
:
Authorization: Token YOUR_API_TOKEN
Les jetons API sont propres Ă votre organisation et apparaĂźtront dans les journaux dâaudit sous « Datadocks API - VOTRE_NOM_ORG »
Limitations importantesâ
- Les rendez-vous rĂ©currents ne peuvent pas ĂȘtre créés ou modifiĂ©s via l'API
- La suppression de rendez-vous n'est pas supportĂ©e via lâAPI (utilisez plutĂŽt lâannulation)
- Les paramĂštres DateTime doivent inclure lâinformation de fuseau horaire au bon format
- Seuls les rendez-vous non récurrents sont retournés via les endpoints de listing
Lister les rendez-vousâ
Objectifâ
Récupérez une liste paginée de rendez-vous avec option de filtrage selon une plage de dates ou un numéro de bon de commande. Utilisez ce endpoint pour synchroniser les rendez-vous avec vos systÚmes ou générer des rapports.
Cas dâutilisation mĂ©tierâ
- Synchroniser les rendez-vous avec votre WMS ou TMS pour la semaine Ă venir
- Générer des rapports sur les expéditions à venir par quai ou par transporteur
- Afficher les rendez-vous dans un tableau de bord avec suivi de statut
- Suivre des KPI comme lâexĂ©cution Ă temps, les temps dâattente et lâutilisation des quais
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/appointments
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 de bon de commande (correspondance exacte insensible à la casse) | po_number=PO-12345 |
from | String | Non | Filtrer les rendez-vous planifiĂ©s Ă partir de cette date/heure (fuseau horaire de lâemplacement) | from=2023-10-01 08:00 AM |
to | String | Non | Filtrer les rendez-vous avant cette date/heure (fuseau horaire de lâemplacement) | to=2023-10-05 06:00 PM |
Format de rĂ©ponseâ
La rĂ©ponse contient un tableau paginĂ© dâobjets rendez-vous, chacun comportant les champs suivantsâŻ:
Champ | Type | Description |
---|---|---|
id | Integer | Identifiant unique du rendez-vous |
appointment_number | Integer | Numéro de rendez-vous lisible par l'humain |
state | String | Ătat actuel du rendez-vous (ex. «âŻscheduledâŻÂ», «âŻarrivedâŻÂ», «âŻcompletedâŻÂ») |
duration | Integer | Durée en minutes |
scheduled_at | String | Horodatage ISO8601 du rendez-vous prévu |
shipping_number | String | Numéro de référence pour l'expédition |
trailer_number | String | NumĂ©ro dâidentification de la remorque |
bol_number | String | Numéro de BOL |
carrier_name | String | Nom de la société de transport |
carrier_number | String | Identifiant du transporteur dans votre systĂšme |
driver_name | String | Nom du chauffeur |
driver_phone | String | Téléphone du chauffeur |
driver_email | String | Courriel du chauffeur |
created_by | String | Nom de l'utilisateur qui a créé le rendez-vous |
outbound | Boolean | Ce rendez-vous est-il une expédition (true) ou une réception (false) |
drop_trailer | Boolean | Ce rendez-vous est-il pour le dĂ©pĂŽt dâune remorque |
queued | Boolean | Ce rendez-vous fait-il partie dâune file |
dock_name | String | Nom du quai assigné (null si cour assignée) |
yard_name | String | Nom de la cour assignée (null si quai assigné) |
internal_id | String | Identifiant interne pour ce rendez-vous |
free_until | String | Horodatage ISO8601 quand le quai/la cour sera libre |
approved_at | String | Horodatage ISO8601 de lâapprobation |
arrived_at | String | Horodatage ISO8601 dâarrivĂ©e |
started_at | String | Horodatage ISO8601 du début du chargement/déchargement |
completed_at | String | Horodatage ISO8601 de fin du chargement/déchargement |
left_at | String | Horodatage ISO8601 du départ |
cancelled_at | String | Horodatage ISO8601 de lâannulation (null si actif) |
custom_values | Object | Paires clé-valeur des champs personnalisés |
checklist_values | Object | Paires clé-valeur des éléments de liste de contrÎle |
packing_lists | Array | Liste des objets de listes dâemballage associĂ©s au rendez-vous |
notes | Array | Liste de notes associées au rendez-vous |
documents | Array | Liste de documents associés au rendez-vous |
Exemples de codeâ
cURLâ
Voir lâexemple cURL
# Lister de base
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://YOUR_LOCATION.datadocks.com/api/v1/appointments
# Filtré par plage de dates et bon de commande
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/appointments?from=2023-10-01%2008:00%20AM&to=2023-10-05%2006:00%20PM&po_number=PO-12345"
JavaScriptâ
Voir lâexemple JavaScript
// Utilisation de fetch API avec filtres
const getAppointments = async (fromDate, toDate, poNumber) => {
const params = new URLSearchParams();
if (fromDate) params.append("from", fromDate);
if (toDate) params.append("to", toDate);
if (poNumber) params.append("po_number", poNumber);
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/appointments?${params.toString()}`,
{
method: "GET",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
}
);
// Gérer les erreurs potentielles
if (!response.ok) {
const errorData = await response.json();
throw new Error(
`Ăchec lors de la rĂ©cupĂ©ration des rendez-vous : ${JSON.stringify(errorData)}`
);
}
return response.json();
};
// Traitement des résultats paginés
const getAllAppointments = async (fromDate, toDate, poNumber) => {
let currentPage = 1;
let allAppointments = [];
let hasMorePages = true;
while (hasMorePages) {
const params = new URLSearchParams({
page: currentPage.toString(),
});
if (fromDate) params.append("from", fromDate);
if (toDate) params.append("to", toDate);
if (poNumber) params.append("po_number", poNumber);
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/appointments?${params.toString()}`,
{
method: "GET",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
}
);
if (!response.ok) {
throw new Error("Ăchec lors de la rĂ©cupĂ©ration des rendez-vous");
}
const appointments = await response.json();
allAppointments = [...allAppointments, ...appointments];
// VĂ©rifier sâil y a dâautres pages
const totalPages = parseInt(response.headers.get("X-Total-Pages"), 10);
hasMorePages = currentPage < totalPages;
currentPage++;
}
return allAppointments;
};
Exemples de rĂ©ponseâ
Voir lâexemple de rĂ©ponse
[
{
"id": 1,
"appointment_number": 1,
"state": "left",
"duration": 120,
"shipping_number": "57886",
"trailer_number": "2222222",
"bol_number": "922",
"carrier_name": "FastCo",
"carrier_number": "FC123",
"driver_name": "Jason Smith",
"driver_phone": "+1 (555) 123-4567",
"driver_email": "jason.smith@fastco.example.com",
"created_by": "Sysadmin",
"outbound": false,
"drop_trailer": false,
"queued": false,
"dock_name": "Dock 2",
"yard_name": null,
"internal_id": "ERP-A12345",
"free_until": null,
"scheduled_at": "2020-09-30T06:00:00-04:00",
"approved_at": "2020-09-22T13:35:00-04:00",
"arrived_at": null,
"started_at": "2020-09-24T13:35:00-04:00",
"completed_at": "2020-09-24T13:35:00-04:00",
"left_at": "2020-09-25T13:35:00-04:00",
"cancelled_at": null,
"custom_values": {
"expected_at": "2020-10-01",
"travel_type": "Truck",
"forklift_operator": "Sue",
"inspection_passed": "1"
},
"checklist_values": {
"safety_check": "Passed",
"dock_seal_status": "Good",
"temperature": "-5"
},
"packing_lists": [
{
"id": 4,
"po_number": "A-2000",
"customer_name": "FishCo",
"customer_number": "FC001",
"product_name": "Trout",
"unit_name": "Skid",
"booked_quantity": 10,
"booked_weight": 152,
"actual_quantity": 12,
"actual_weight": 160,
"custom_values": {
"barcode": "11223344",
"dimensions": "S",
"temperature_celcius": "-5"
}
}
],
"notes": [
{
"id": 3,
"body": "PremiĂšre note."
}
],
"documents": []
}
]
Paginationâ
La rĂ©ponse est paginĂ©e pour gĂ©rer le volume de donnĂ©es. Pour plus dâinformations sur les en-tĂȘtes et la navigation de pagination, veuillez consulter la documentation sur la pagination.
ProblĂšmes courants et dĂ©pannageâ
-
ProblĂšmes de parsing date/heureâŻ: les paramĂštres
from
etto
sont interprĂ©tĂ©s dans le fuseau horaire de lâemplacement. En cas de rĂ©sultats inattendus, assurez-vous de fournir lâinformation de fuseau horaire.â Correct : from=2023-10-01T08:00:00-04:00
â Correct : from=2023-10-01 08:00 AM EDT
â Incorrect : from=2023-10-01 -
Filtrage par numéro de bon de commande : insensible à la casse mais nécessite une correspondance exacte. Les correspondances partielles ne fonctionnent pas.
â Correspondra : po_number=PO-12345
â Correspondra : po_number=po-12345 (insensible Ă la casse)
â Ne correspondra pas : po_number=12345 (partiel) -
Gestion des dates mal formatĂ©es : Si vous fournissez une date mal formatĂ©e, lâAPI ne retourne actuellement pas dâerreur de validation. Veillez Ă respecter le format pour Ă©viter des rĂ©sultats imprĂ©vus.
-
Seulement les rendez-vous non récurrents : Ce endpoint retourne uniquement les rendez-vous non récurrents. Les modÚles de rendez-vous récurrents ne sont pas inclus.
-
ConsidĂ©rations de performance : Pour de grandes plages de dates, fractionnez vos requĂȘtes en intervalles plus courts pour de meilleures performances (ex. semaine plutĂŽt que mois).
(Pour la suite, suivre le mĂȘme style pour chaque section ci-dessus â en gardant la mise en forme markdown, les exemples de code inchangĂ©s, et en adaptant chaque explication ou table Ă lâĂ©quivalent français/quĂ©bĂ©cois tout en employant la terminologie normalisĂ©e du secteur et du glossaire. Si vous souhaitez une traduction intĂ©grale du fichier complet du dĂ©but Ă la fin dâun bloc, veuillez prĂ©ciser si vous souhaitez recevoir la suite ici ou section par section.)