Aller au contenu principal

API d’Organisation

Pourquoi utiliser l’API d’Organisation?

Connectez votre ERP, TMS ou WMS à plusieurs emplacements DataDocks via une seule URL d’organisation. Listez les enregistrements sur vos entrepôts accessibles, ou consultez et mettez à jour un enregistrement par identifiant sans indiquer le nom de l’entrepôt.

  • Gérez plusieurs entrepôts — Utilisez une seule URL de base pour les rendez-vous, les produits et les bons de commande sur tous vos sites.
  • Découvrez les emplacements disponibles — Récupérez la liste des emplacements auxquels votre utilisateur API peut accéder.
  • Créez des commandes avant d’assigner un entrepôt — Ajoutez un bon de commande maintenant et attribuez son emplacement plus tard.

Pour une organisation nommée Acme, l’URL de base est :

https://acme.datadocks.com/api/v1

Vous pouvez continuer d'utiliser l’API par emplacement à des URL comme https://toronto-acme.datadocks.com/api/v1.

Démarrage rapide en 5 minutes

Voici comment récupérer les produits dans un de vos entrepôts :

  1. Obtenez votre jeton API

    Contactez support@datadocks.com avec le nom de votre organisation et la liste des sites auxquels vous souhaitez accéder. Si vous avez déjà un jeton API, vous pouvez l’utiliser avec l’API d’organisation.

  2. Trouvez vos emplacements

Voir exemple cURL
curl -H "Authorization: Token VOTRE_JETON_API" \
https://acme.datadocks.com/api/v1/locations

Une réponse réussie retourne les emplacements disponibles :

[
{ "name": "Toronto", "url": "toronto-acme" },
{ "name": "Vancouver", "url": "vancouver-acme" }
]
  1. Obtenez les produits d’un emplacement

Utilisez un name de la réponse comme location_name :

Voir exemple cURL
curl -H "Authorization: Token VOTRE_JETON_API" \
"https://acme.datadocks.com/api/v1/products?location_name=Toronto"

Une requête réussie retourne un 200 OK avec les produits de l’emplacement. Voir Ressources de l’API d’Organisation pour des exemples de rendez-vous, produits, entreprises et limites produit.

Authentification et accès

Incluez votre jeton API dans chaque requête :

Authorization: Token VOTRE_JETON_API

Votre utilisateur API doit avoir :

  • Un accès administrateur à un emplacement de l’organisation.
  • Un accès à chaque emplacement sur lequel vous souhaitez agir, avec une permission pour l’action demandée.

Par exemple, un administrateur à Toronto doit également avoir accès à Vancouver pour gérer les rendez-vous de Vancouver. Si son rôle pour Vancouver est lecture seule, il peut consulter les rendez-vous mais ne peut pas les créer ou les modifier.

Contactez le support si vous devez ajouter un autre emplacement à votre intégration.

Au moins un emplacement dans votre organisation doit avoir un abonnement payant. Une fois cette exigence satisfaite, vous pouvez utiliser l’API d’organisation pour tout site auquel votre utilisateur API peut accéder, y compris les emplacements non payants.

Choisir un emplacement

Utilisez le nom d’affichage de l’emplacement affiché par GET /locations, comme Toronto. Les noms ne tiennent pas compte de la casse, et les espaces au début ou à la fin sont ignorés. Si un emplacement est renommé, mettez à jour le nom dans votre intégration.

Ressourcelocation_name requis ?Plus d’information
Rendez-vousUniquement pour la créationRendez-vous
ProduitsUniquement pour la créationProduits
EntreprisesNonEntreprises
Limites produitNonLimites produit
EmplacementsNonListe des emplacements
Bons de commandeNonBons de commande

Lecture ou suppression d’enregistrements

Omettez location_name pour lister les enregistrements sur tous les emplacements accessibles. Les actions de consultation, modification et suppression (là où c’est pris en charge) déduisent l’emplacement à partir de l’ID de l’enregistrement. Ajoutez location_name pour limiter la recherche ; un ID hors de ce filtre retourne une 404. Utilisez --data-urlencode pour les noms contenant des espaces :

curl -G -H "Authorization: Token VOTRE_JETON_API" \
--data-urlencode "location_name=Entrepôt Toronto" \
https://acme.datadocks.com/api/v1/products

Création ou modification d’enregistrements

La création d’un rendez-vous ou d’un produit exige un location_name dans l’enregistrement ou dans l’URL. Les modifications déduisent l’emplacement existant et n’en nécessitent pas. Les entreprises ne requièrent jamais d’emplacement. Par exemple, pour créer un produit :

{
"product": {
"location_name": "Toronto",
"name": "Premium Widget",
"sku": "WIDGET-001"
}
}

Vous pouvez également transmettre l’emplacement dans l’URL. Si vous l’indiquez aux deux endroits, les noms doivent correspondre. Les listes d’emballage et les items de bon de commande utilisent l’emplacement de la requête principale.

Changer le location_name ne déplace pas un rendez-vous ou un produit vers un autre entrepôt. Les bons de commande permettent de changer leur emplacement assigné.

Noms des emplacements dans les réponses

RessourceChamp de l’emplacement
Rendez-vouslocation_name; location demeure en alias de compatibilité
Produits et limites de produitlocation_name
Bons de commandelocation_name, ou null s’il n’est pas attribué
Emplacementsname
EntreprisesAucun ; les entreprises appartiennent à l’organisation

Les listes d’emballage et les items de bons de commande héritent de l’emplacement parent. Les rendez-vous imbriqués comprennent leur propre location_name et l’alias de compatibilité location. Utilisez location_name pour toute nouvelle intégration.

Estampilles temporelles et fuseaux horaires

Chaque date-heure retournée utilise la norme ISO 8601 avec un décalage UTC, y compris pour created_at, updated_at et les dates imbriquées. Chaque entité utilise le fuseau horaire de son entrepôt au moment donné. Une entité sans emplacement utilise l’UTC. Un filtre d’emplacement ne modifie pas cette règle.

Une liste de rendez-vous sur plusieurs emplacements peut inclure :

[
{ "id": 123, "location": "Toronto", "scheduled_at": "2026-10-01T12:00:00-04:00" },
{ "id": 456, "location": "Vancouver", "scheduled_at": "2026-10-01T09:00:00-07:00" }
]

Ces dates représentent le même instant. Les décalages tiennent compte de l’heure avancée. Les listes d’emballage et les items de commandes héritent de l’emplacement parent ; les rendez-vous imbriqués emploient leur propre emplacement. Les horaires absents restent à null.

Incluez un décalage dans vos dates lors de la saisie si possible. Sinon, lors de la création ou la modification, l’opération utilisera le fuseau horaire de l’emplacement de l’entité, ou l’UTC si non assigné. Les filtres de période pour les listes se servent du filtre d’emplacement (optionnel), ou de l’UTC pour des recherches tous emplacements. Un filtre de période invalide retourne 400.

Les champs de date seuls conservent le format AAAA-MM-JJ. Les heures de début/fin récurrentes pour les limites produit restent des horaires locaux sans date. Les valeurs arbitraires JSON et textes gardent leur signification.

Pagination

Utilisez le paramètre page pour consulter des résultats supplémentaires dans les rendez-vous, produits, entreprises, bons de commande et limites produit :

curl -H "Authorization: Token VOTRE_JETON_API" \
"https://acme.datadocks.com/api/v1/products?location_name=Toronto&page=2"

Les en-têtes de réponse incluent Current-Page, Page-Items, Total-Pages, Total-Count et Link. Suivez les URL du champ Link pour naviguer entre les pages ; elles conservent un filtre d’emplacement seulement si vous en avez fourni un.

Les listes d’emplacements ne sont pas paginées. Le point de terminaison des bons de commande avec rendez-vous réservés utilise plutôt limit et offset.

Limites de requête

Les requêtes API d’organisation et par emplacement partagent les limites suivantes lorsque vous utilisez le même en-tête Authorization :

LimiteNombre de requêtes
Par minute120
Par heure5 000

Si vous dépassez la limite, l’API retournera un 429 Too Many Requests avec un champ JSON error et les en-têtes suivants :

En-têteDescription
X-RateLimit-LimitLa limite dépassée
X-RateLimit-Remaining0
X-RateLimit-ResetQuand reprendre, au format ISO 8601 UTC

Attendez la fin du temps de réinitialisation avant de réessayer. Ces en-têtes sont fournis en cas de dépassement de limite ; l’en-tête Retry-After n’est pas fourni.

Gestion des erreurs

CodeDescriptionÀ vérifier
400Requête invalideIndiquez un nom d’emplacement valide lorsque nécessaire. Si présent dans l’URL et le corps, utilisez le même nom.
401Non autoriséVérifiez votre jeton API et l’en-tête Authorization.
402Paiement requisConfirmez qu’au moins un de vos emplacements est payant.
403InterditVérifiez que votre utilisateur API a des droits d’administrateur dans l’organisation et l’accès requis sur l’emplacement choisi.
404IntrouvableVérifiez le nom de l’emplacement et l’ID de l’enregistrement. L’enregistrement doit être accessible à cet emplacement.
422Entité non traitableConsultez le champ errors de la réponse pour savoir quels champs corriger.
429Trop de requêtesAttendez la fin de la réinitialisation du quota avant de réessayer.

Par exemple, créer un produit sans emplacement retourne une 400 :

{
"error": "location_name is required"
}

Prochaines étapes

Pour obtenir de l’aide avec votre intégration, contactez support@datadocks.com.