Aller au contenu principal

API des limites de produits

🚀 Pourquoi utiliser l’API des limites de produits ?​

Les limites de produits définissent la quantité d’un produit (ou d’une catégorie) pouvant transiter par un emplacement durant une période donnée. L’API des limites de produits est en lecture seule : elle vous permet de consulter les limites actives et leurs dérogations sur une période définie afin que les systèmes de planification, WMS ou d’analytique s'alignent sur les mêmes règles appliquées dans l’entrepôt via DataDocks.

Problèmes réels que cette API résout​

  • Planification tenant compte de la capacité : Extraire les limites applicables à une plage de dates d’expédition sans devoir interroger l’interface utilisateur.
  • Exceptions dans une seule réponse : Chaque limite inclut des overrides qui s’appliquent dans la plage demandée.
  • Cohérence inter-systèmes : Utilisez les mêmes limites actives appliquées par DataDocks pour les flux entrants, sortants et de dépôt de remorque/conteneur.

Cet endpoint ne permet pas de créer, modifier ou supprimer des limites. Veuillez utiliser le logiciel DataDocks pour gérer vos limites de produits.

Démarrage rapide en 5 minutes​

  1. Obtenez un jeton API et le sous-domaine de votre emplacement (voir Authentification).
  2. Interrogez l'endpoint de liste (voir les paramètres par défaut ci-dessous).
Voir un exemple cURL (plage de dates par défaut)
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/product_limits"

Intégration avec les autres systèmes​

Authentification​

Toutes les requêtes doivent inclure votre jeton dans l’en-tête Authorization (identique aux autres APIs d’emplacement). Consultez Authentification pour plus de détails.

Authorization: Token YOUR_API_TOKEN

Consultation des limites de produits​

Objectif​

Retourne une liste paginée des limites de produits activées, dont la plage de dates configurée chevauche la plage demandée (ou celle par défaut). Pour chaque limite, le champ overrides n’inclut que les dérogations dont les dates chevauchent votre plage de recherche.

Requête HTTP​

GET https://[location_subdomain].datadocks.com/api/v1/product_limits

Paramètres de requête​

ParamètreTypeObligatoireDescriptionExemple
start_dateDateNonDébut inclusif de la fenêtre de recherche (AAAA-MM-JJ). Si start_date et end_date sont omis, la plage par défaut commence aujourd’hui et finit dans 7 jours. Si un seul des deux est envoyé, la borne manquante utilise la date fournie.start_date=2026-04-01
end_dateDateNonFin inclusive de la fenêtre de recherche (AAAA-MM-JJ). Même comportement par défaut et règle que start_date.end_date=2026-04-30
product_nameChaîneNonRecherche exacte sur le nom du produit (sans tenir compte de la casse, espaces supprimés). Si défini, les résultats incluent les limites liées à ce produit ou celles avec all_products: true.product_name=Widgets
pageEntierNonNuméro de page pour la pagination (même schéma que les autres APIs d’emplacement).page=2

Règles sur la plage de dates​

  • Les deux omis : de la date actuelle jusqu’à la date actuelle + 7 jours (inclusivement).
  • Seulement start_date : end_date est alors la même date que start_date.
  • Seulement end_date : start_date est alors la même date que end_date.
  • start_date postérieure à end_date : la requête échoue avec une erreur 400 Bad Request (voir Erreurs).

Comportement du filtrage​

  • Seules les limites avec enabled: true sont retournées.
  • Une limite est incluse si sa plage start_date / end_date chevauche la plage demandée. Si start_date ou end_date sur la limite est null, cela signifie que le côté en question n’a pas de borne.
  • Les overrides imbriqués sont filtrés en mémoire : une dérogation apparaît seulement si sa plage start_date..end_date chevauche la plage recherchée.

Format de la réponse​

La racine du JSON est un objet contenant un tableau product_limits (jamais un tableau brut en haut de la réponse).

Champs de product_limits[]​

ChampTypeDescription
idEntierIdentifiant de l’enregistrement de la limite
nameChaîneNom affiché de la limite
limitable_typeChaîneMode de mesure de la limite ; typiquement quantity (quantité) ou weight (poids)
limitNombrePlafond numérique de la limite
enabledBooléenToujours true dans les résultats de cet endpoint
start_dateDate/nullDébut d’effet de la limite (null = aucune borne inférieure)
end_dateDate/nullFin d’effet de la limite (null = aucune borne supérieure)
start_timeChaîne/nullDébut de la plage horaire applicable (si configuré)
end_timeChaîne/nullFin de la plage horaire applicable (si configuré)
limitable_periodChaînePériode de granularité ; souvent hour, day ou week
outboundBooléen/nullS’applique aux flux sortants si vrai (correspond à la configuration du système)
drop_trailerBooléen/nullS’applique aux dépôts de remorque/conteneur si vrai
all_productsBooléenSi vrai, la limite est générale (voir comportement du filtre product_name)
location_nameChaîneNom de l’emplacement
product_nameChaîne/nullNom du produit associé, si applicable
product_category_nameChaîne/nullNom de la catégorie associée, si applicable
week_daysTableauJours de la semaine en anglais (ex. : "Monday", "Tuesday") selon le paramétrage
companiesTableauNoms des entreprises associés à partir des IDs stockés
overridesTableauDérogations valides sur la plage demandée (voir ci-dessous)

Champs de overrides[]​

ChampTypeDescription
idEntierIdentifiant de la dérogation
product_limit_idEntierIdentifiant parent de la limite
limitNombreNouveau plafond appliqué en dérogation
start_dateDateDébut d’effet de la dérogation
end_dateDateFin d’effet de la dérogation

Erreurs​

Des dates invalides, ou un start_date postérieur à end_date, donnent une réponse 400 Bad Request avec un corps JSON :

{ "error": "<message>" }

Le message vient du système de validation des dates, par exemple : start_date must be on or before end_date (‘start_date doit précéder ou être égal à end_date’).

Exemples de code​

cURL​

Plage par défaut (aujourd'hui à aujourd'hui + 7 jours)
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/product_limits"
Plage de dates explicite
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/product_limits?start_date=2026-04-01&end_date=2026-04-30"
Filtrer selon le nom du produit (exact, insensible à la casse)
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/product_limits?product_name=Widgets&start_date=2026-04-01&end_date=2026-04-07"

JavaScript​

Voir exemple JavaScript
const getProductLimits = async ({ startDate, endDate, productName, page } = {}) => {
const params = new URLSearchParams();
if (startDate) params.append("start_date", startDate);
if (endDate) params.append("end_date", endDate);
if (productName) params.append("product_name", productName);
if (page) params.append("page", String(page));

const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/product_limits?${params.toString()}`,
{
method: "GET",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
}
);

if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(`Échec de récupération des limites de produits : ${JSON.stringify(errorData)}`);
}

return response.json();
};

Exemple de réponse​

Voir un exemple de réponse
{
"product_limits": [
{
"id": 101,
"name": "Palettes entrantes — haute saison",
"limitable_type": "quantity",
"limit": 40,
"enabled": true,
"start_date": "2026-04-01",
"end_date": "2026-04-30",
"start_time": "06:00",
"end_time": "18:00",
"limitable_period": "day",
"outbound": false,
"drop_trailer": null,
"all_products": false,
"location_name": "Main DC",
"product_name": "Widgets",
"product_category_name": null,
"week_days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"companies": ["Acme Logistics", "Beta Foods"],
"overrides": [
{
"id": 5001,
"product_limit_id": 101,
"limit": 55,
"start_date": "2026-04-10",
"end_date": "2026-04-12"
}
]
},
{
"id": 102,
"name": "Plafond général sur le poids sortant",
"limitable_type": "weight",
"limit": 120000,
"enabled": true,
"start_date": null,
"end_date": null,
"start_time": null,
"end_time": null,
"limitable_period": "week",
"outbound": true,
"drop_trailer": false,
"all_products": true,
"location_name": "Main DC",
"product_name": null,
"product_category_name": null,
"week_days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"companies": [],
"overrides": []
}
]
}

Pagination​

Les résultats sont paginés comme les autres APIs d’emplacement. Consultez la page Pagination pour plus de détails sur les en-têtes et la navigation avec le paramètre page.