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
overridesqui 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​
- Obtenez un jeton API et le sous-domaine de votre emplacement (voir Authentification).
- 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ètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
start_date | Date | Non | Dé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_date | Date | Non | Fin 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_name | Chaîne | Non | Recherche 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 |
page | Entier | Non | Numé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_dateest alors la même date questart_date. - Seulement
end_date:start_dateest alors la même date queend_date. start_datepostérieure Ãend_date : la requête échoue avec une erreur400 Bad Request(voir Erreurs).
Comportement du filtrage​
- Seules les limites avec
enabled: truesont retournées. - Une limite est incluse si sa plage
start_date /Âend_datechevauche la plage demandée. Sistart_dateouend_datesur la limite est null, cela signifie que le côté en question n’a pas de borne. - Les
overridesimbriqués sont filtrés en mémoire : une dérogation apparaît seulement si sa plagestart_date..end_datechevauche 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[]​
| Champ | Type | Description |
|---|---|---|
id | Entier | Identifiant de l’enregistrement de la limite |
name | Chaîne | Nom affiché de la limite |
limitable_type | Chaîne | Mode de mesure de la limite ; typiquement quantity (quantité) ou weight (poids) |
limit | Nombre | Plafond numérique de la limite |
enabled | Booléen | Toujours true dans les résultats de cet endpoint |
start_date | Date/null | Début d’effet de la limite (null = aucune borne inférieure) |
end_date | Date/null | Fin d’effet de la limite (null = aucune borne supérieure) |
start_time | Chaîne/null | Début de la plage horaire applicable (si configuré) |
end_time | Chaîne/null | Fin de la plage horaire applicable (si configuré) |
limitable_period | Chaîne | Période de granularité ; souvent hour, day ou week |
outbound | Booléen/null | S’applique aux flux sortants si vrai (correspond à la configuration du système) |
drop_trailer | Booléen/null | S’applique aux dépôts de remorque/conteneur si vrai |
all_products | Booléen | Si vrai, la limite est générale (voir comportement du filtre product_name) |
location_name | Chaîne | Nom de l’emplacement |
product_name | Chaîne/null | Nom du produit associé, si applicable |
product_category_name | Chaîne/null | Nom de la catégorie associée, si applicable |
week_days | Tableau | Jours de la semaine en anglais (ex. : "Monday", "Tuesday") selon le paramétrage |
companies | Tableau | Noms des entreprises associés à partir des IDs stockés |
overrides | Tableau | Dérogations valides sur la plage demandée (voir ci-dessous) |
Champs de overrides[]​
| Champ | Type | Description |
|---|---|---|
id | Entier | Identifiant de la dérogation |
product_limit_id | Entier | Identifiant parent de la limite |
limit | Nombre | Nouveau plafond appliqué en dérogation |
start_date | Date | Début d’effet de la dérogation |
end_date | Date | Fin 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.