API Produits
đ Pourquoi utiliser lâAPI ProduitsâŻ?â
Les produits sont des Ă©lĂ©ments essentiels dâinventaire dans DataDocks que vous gĂ©rez Ă travers vos entrepĂŽts. LâAPI Produits vous permet de synchroniser de façon programmatique votre catalogue de produits avec DataDocks, assurant ainsi une exactitude et une cohĂ©rence en temps rĂ©el entre vos systĂšmes de gestion dâinventaire et vos opĂ©rations dâentreposage.
ProblĂ©matiques rĂ©elles rĂ©solues par cette APIâ
- Maintenir lâexactitude de lâinventaireâŻ: Gardez les donnĂ©es produits synchronisĂ©es entre votre ERP et DataDocks
- Optimiser la rĂ©ception des marchandisesâŻ: Assurez-vous que les produits soient bien identifiĂ©s lors de la rĂ©ception
- Faciliter la crĂ©ation de listes dâemballageâŻ: Ajoutez rapidement des produits valides dans les listes dâemballage
- AmĂ©liorer le reportingâŻ: Suivez le mouvement des produits Ă travers les entrepĂŽts avec des donnĂ©es de produit cohĂ©rentes
- Ăliminer la double saisieâŻ: Mettez Ă jour les produits une seule fois dans votre systĂšme et synchronisez automatiquement avec DataDocks
DĂ©marrage rapide en 5 minutesâ
Vous souhaitez voir lâAPI en action immĂ©diatementâŻ? Suivez ces Ă©tapes pour crĂ©er votre premier produitâŻ:
- Obtenez votre jeton API auprĂšs du support
- Trouvez votre sous-domaine dâemplacement (ex.âŻ:
votre-entrepot.datadocks.com) - CrĂ©ez un produit de base avec cette commandeâŻ:
Voir exemple cURL
curl -X POST \
https://your-warehouse.datadocks.com/api/v1/products \
-H 'Authorization: Token YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"product": {
"name": "Premium Widget",
"sku": "WIDGET-001"
}
}'
- VoilĂ âŻ! Vous avez créé votre premier produit. VĂ©rifiez sur votre tableau de bord DataDocks.
Aperçu de lâarchitecture de lâAPIâ
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â Votre systĂšme ââââââââ¶â API DataDocks ââââââââ¶â Ops dâentrepĂŽt â
â (ERP/WMS) ââââââââ†(REST/JSON) ââââââââ†(Produits) â
âââââââââââââââââââ âââââââââââââââââââ âââââââââââââââââââ
â âČ
â â
⌠â
âââââââââââââââââââ
â Listes â
â dâemballage & â
â Rendez-vous â
âââââââââââââââââââ
Authentificationâ
Toutes les requĂȘtes API doivent inclure votre jeton API dans lâen-tĂȘte AuthorizationâŻ:
Authorization: Token YOUR_API_TOKEN
Liste des produitsâ
Objectifâ
Obtenez une liste paginée de produits avec possibilité de filtrer par nom ou SKU. Utilisez ce point de terminaison pour rechercher dans votre catalogue de produits, synchroniser avec des systÚmes externes, ou alimenter des listes déroulantes dans vos applications.
Cas dâusage mĂ©tierâ
- Synchroniser les produits avec votre ERP ou WMS
- Alimenter des interfaces de sélection de produits dans vos applications
- GĂ©nĂ©rer des rapports dâinventaire
- Vérifier les informations produits lors du traitement des commandes
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/products
ParamĂštres de requĂȘteâ
| ParamĂštre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
page | Entier | Non | Numéro de page pour la pagination (par défaut 1) | page=2 |
name | ChaĂźne | Non | Filtrer par nom de produit (insensible Ă la casse, commence par) | name=widget |
sku | ChaĂźne | Non | Filtrer par SKU (insensible Ă la casse, correspondance exacte) | sku=ABC123 |
Format de rĂ©ponseâ
La rĂ©ponse contient un tableau paginĂ© dâobjets produits, chacun avec les champs suivantsâŻ:
| Champ | Type | Description |
|---|---|---|
id | Entier | Identifiant unique du produit |
name | ChaĂźne | Nom du produit |
sku | ChaĂźne | Code SKU (Stock Keeping Unit) du produit |
Exemples de codeâ
cURLâ
Voir exemple cURL
# Liste de base
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://YOUR_LOCATION.datadocks.com/api/v1/products
# Filtrer par nom
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/products?name=premium"
# Filtrer par SKU
curl -H "Authorization: Token YOUR_API_TOKEN" \
"https://YOUR_LOCATION.datadocks.com/api/v1/products?sku=WIDGET-001"
JavaScriptâ
Voir exemple JavaScript
// Utilise fetch API avec filtres
const getProducts = async (nameFilter, skuFilter) => {
const params = new URLSearchParams();
if (nameFilter) params.append("name", nameFilter);
if (skuFilter) params.append("sku", skuFilter);
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/products?${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 de la rĂ©cupĂ©ration des produits : ${JSON.stringify(errorData)}`);
}
return response.json();
};
Exemple de rĂ©ponseâ
Voir exemple de réponse
[
{
"id": 1,
"name": "Premium Widget",
"sku": "WIDGET-001"
},
{
"id": 2,
"name": "Standard Widget",
"sku": "WIDGET-002"
},
{
"id": 3,
"name": "Widget Accessories",
"sku": "WIDGET-ACC-001"
}
]
Paginationâ
La rĂ©ponse est paginĂ©e pour gĂ©rer le volume de donnĂ©es. Pour les dĂ©tails sur les en-tĂȘtes de pagination et la navigation, veuillez consulter la documentation Pagination.
RĂ©cupĂ©rer un produit spĂ©cifiqueâ
Objectifâ
Obtenir lâinformation dĂ©taillĂ©e dâun produit spĂ©cifique par identifiant. Utilisez ce point de terminaison lorsque vous avez besoin de donnĂ©es complĂštes sur un produit particulier.
Cas dâusage mĂ©tierâ
- Afficher les dĂ©tails complets dâun produit dans votre application
- VĂ©rifier les dĂ©tails du produit avant dâajouter Ă une liste dâemballage
- RĂ©cupĂ©rer les informations actuelles dâun produit pour la gestion dâinventaire
RequĂȘte HTTPâ
GET https://[location_subdomain].datadocks.com/api/v1/products/:id
ParamĂštres de cheminâ
| ParamĂštre | Type | Obligatoire | Description |
|---|---|---|---|
id | Entier | Oui | Identifiant unique du produit |
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne un code 200 OK avec lâobjet produit complet, au mĂȘme format que la rĂ©ponse de la liste.
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
https://YOUR_LOCATION.datadocks.com/api/v1/products/123
JavaScriptâ
Voir exemple JavaScript
const getProduct = async (productId) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/products/${productId}`,
{
method: "GET",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
}
);
if (!response.ok) {
if (response.status === 404) {
throw new Error(`Produit #${productId} introuvable`);
}
const errorData = await response.json();
throw new Error(
`Ăchec de la rĂ©cupĂ©ration du produit : ${JSON.stringify(errorData)}`
);
}
return await response.json();
} catch (error) {
console.error("Erreur lors de la récupération du produit :", error);
throw error;
}
};
CrĂ©ation dâun produitâ
Objectifâ
Ajouter un nouveau produit Ă votre catalogue DataDocks. Ce point de terminaison permet de crĂ©er des produits qui pourront ensuite ĂȘtre utilisĂ©s dans les listes dâemballage et le suivi de lâinventaire.
Arbre de dĂ©cisionâŻ: Quand crĂ©er un produit via lâAPIâŻ?â
âââââââââââââââââââ
â Besoin dâajouterâ
â un produitâŻ? â
ââââââââââŹâââââââââ
â
âŒ
âââââââââââââââââââ Oui ââââââââââââââââââââ
â Plusieurs ââââââââââââââ¶â Songez Ă â
â produits Ă la â â lâimportation â
â foisâŻ? â â en vrac â
ââââââââââŹâââââââââ âââââââââââââââââââââ
â Non
âŒ
âââââââââââââââââââ Oui âââââââââââââââââââ
â Addition ââââââââââââââ¶â Utiliser â
â uniqueâŻ? â â lâinterface Web â
ââââââââââŹâââââââââ âââââââââââââââââââ
â Non
âŒ
âââââââââââââââââââ
â Parfait â
â pour lâAPIâŻ! â
âââââââââââââââââââ
Cas dâusage mĂ©tierâ
- IntĂ©gration systĂšmeâŻ: CrĂ©ez des produits directement depuis votre ERP ou WMS
- Mises Ă jour automatisĂ©es du catalogueâŻ: Ajoutez des produits de façon automatique Ă votre entrepĂŽt
- Migration de donnĂ©esâŻ: TransfĂ©rez des enregistrements produit depuis des systĂšmes hĂ©ritĂ©s
- IntĂ©gration des fournisseursâŻ: Permettez aux fournisseurs dâenregistrer de nouveaux produits via vos systĂšmes
RequĂȘte HTTPâ
POST https://[location_subdomain].datadocks.com/api/v1/products
Corps de la requĂȘteâ
| ParamĂštre | Type | Obligatoire | Description | Contraintes | Exemple |
|---|---|---|---|---|---|
name | ChaĂźne | Oui | Nom du produit | Ne doit pas ĂȘtre vide | "Premium Widget" |
sku | ChaĂźne | Oui | SKU du produit | Doit ĂȘtre unique pour lâemplacement | "WIDGET-001" |
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne un code 200 OK avec lâobjet produit complet, incluant lâid gĂ©nĂ©rĂ©.
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"product": {
"name": "Premium Widget",
"sku": "WIDGET-001"
}
}' \
https://YOUR_LOCATION.datadocks.com/api/v1/products
JavaScriptâ
Voir exemple JavaScript
const createProduct = async (productData) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/products`,
{
method: "POST",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({ product: productData }),
}
);
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 de la crĂ©ation du produitâŻ:\n${errorMessages}`);
}
return await response.json();
} catch (error) {
console.error("Erreur API :", error);
throw error;
}
};
// Exemple dâutilisation
const newProduct = {
name: "Premium Widget",
sku: "WIDGET-001",
};
createProduct(newProduct)
.then((product) => console.log("Produit créé :", product))
.catch((error) => console.error("Ăchec de la crĂ©ation du produit :", error));
Mise Ă jour dâun produitâ
Objectifâ
Mettre Ă jour les informations dâun produit existant. Ce point de terminaison vous permet de modifier nâimporte quel attribut dâun produit.
Cas dâusage mĂ©tierâ
- Garder vos donnĂ©es Ă jourâŻ: Mettez Ă jour le nom ou le SKU dâun produit lors de changements dans vos systĂšmes
- Corriger les erreursâŻ: Corrigez les fautes de frappe ou donnĂ©es erronĂ©es dans les produits
- Standardiser les donnĂ©es produitsâŻ: Mettez Ă jour lâinformation selon de nouvelles conventions de nommage
- Synchroniser vos systĂšmesâŻ: Gardez DataDocks alignĂ© avec votre gestion dâinventaire
RequĂȘte HTTPâ
PUT https://[location_subdomain].datadocks.com/api/v1/products/:id
ParamĂštres de cheminâ
| ParamĂštre | Type | Obligatoire | Description |
|---|---|---|---|
id | Entier | Oui | Identifiant unique du produit |
Corps de la requĂȘteâ
Le corps de la requĂȘte accepte les mĂȘmes paramĂštres que le point de terminaison de crĂ©ation. Seuls les champs que vous souhaitez modifier doivent ĂȘtre inclus.
ScĂ©narios courants de mise Ă jourâ
Mettre Ă jour le nom du produitâ
{
"product": {
"name": "Premium Widget XL"
}
}
Mettre Ă jour tous les champsâ
{
"product": {
"name": "Premium Widget XL",
"sku": "WIDGET-XL-001"
}
}
Exemples de codeâ
cURLâ
Voir exemple cURL
curl -H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-X PUT \
-d '{
"product": {
"name": "Premium Widget XL"
}
}' \
https://YOUR_LOCATION.datadocks.com/api/v1/products/123
JavaScriptâ
Voir exemple JavaScript
const updateProduct = async (productId, updateData) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/products/${productId}`,
{
method: "PUT",
headers: {
Authorization: "Token YOUR_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({ product: updateData }),
}
);
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Ăchec de la mise Ă jour du produit : ${JSON.stringify(errorData)}`);
}
return await response.json();
} catch (error) {
console.error("Erreur lors de la mise Ă jour du produit :", error);
throw error;
}
};
// ExempleâŻ: mise Ă jour du nom uniquement
const updateProductName = async (productId, newName) => {
try {
const updatedProduct = await updateProduct(productId, {
name: newName,
});
console.log(`Nom du produit #${updatedProduct.id} mis Ă jour avec succĂšs`);
return updatedProduct;
} catch (error) {
console.error(`Ăchec de la mise Ă jour du produit #${productId} :`, error);
throw error;
}
};
Gestion des erreursâ
| Code dâerreur | Description | Cause possible |
|---|---|---|
| 400 | RequĂȘte invalide | Valeurs ou format non valides |
| 404 | Introuvable | LâID du produit nâexiste pas |
| 422 | Entité non traitable | Validation échouée (ex. SKU en doublon) |
| 401 | Non autorisé | Jeton API invalide ou manquant |
| 403 | Interdit | Permissions insuffisantes pour la mise Ă jour |
Suppression dâun produitâ
Objectifâ
Retirer un produit du systÚme. Ce point de terminaison vous permet de supprimer des produits qui ne sont plus nécessaires.
Points importants Ă considĂ©rerâ
Avant de supprimer un produit, tenez compte des Ă©lĂ©ments suivantsâŻ:
- Le produit ne doit pas ĂȘtre rĂ©fĂ©rencĂ© dans une liste dâemballage ou un rendez-vous actif
- La suppression est permanente et irréversible
- Dans de nombreux cas, il est prĂ©fĂ©rable dâarchiver ou de dĂ©sactiver un produit plutĂŽt que le supprimer
Cas dâusage mĂ©tierâ
- Nettoyage des donnĂ©es de testâŻ: Supprimez des produits de test ou factices
- Retrait des produits obsolĂštesâŻ: Supprimez les produits qui ne sont plus dans votre catalogue
- Suppression des doublonsâŻ: Nettoyez les enregistrements aprĂšs dĂ©duplication
- Maintenance systĂšmeâŻ: Retirez les anciens produits inutilisĂ©s
RequĂȘte HTTPâ
DELETE https://[location_subdomain].datadocks.com/api/v1/products/:id
ParamĂštres de cheminâ
| ParamĂštre | Type | Obligatoire | Description |
|---|---|---|---|
id | Entier | Oui | Identifiant unique du produit |
RĂ©ponseâ
Une requĂȘte rĂ©ussie retourne un code 204 No Content, indiquant que le produit 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/products/123
JavaScriptâ
Voir exemple JavaScript
const deleteProduct = async (productId) => {
try {
const response = await fetch(
`https://YOUR_LOCATION.datadocks.com/api/v1/products/${productId}`,
{
method: "DELETE",
headers: {
Authorization: "Token YOUR_API_TOKEN",
},
}
);
if (!response.ok) {
if (response.status === 404) {
throw new Error(`Produit #${productId} introuvable`);
}
const errorData = await response.json();
throw new Error(`Ăchec de la suppression du produit : ${JSON.stringify(errorData)}`);
}
return true; // Suppression réussie
} catch (error) {
console.error("Erreur lors de la suppression du produit :", error);
throw error;
}
};
Gestion des erreursâ
| Code dâerreur | Description | Cause possible |
|---|---|---|
| 404 | Introuvable | LâID du produit nâexiste pas |
| 401 | Non autorisé | Jeton API invalide ou manquant |
| 403 | Interdit | Permissions insuffisantes pour la suppression |
| 422 | EntitĂ© non traitable | Suppression impossible (ex. liĂ© Ă une liste dâemballage) |
RĂšgles de validation des champsâ
Lors de la crĂ©ation ou de la mise Ă jour des produits, les rĂšgles suivantes sâappliquentâŻ:
| Champ | RĂšgles de validation |
|---|---|
name | Obligatoire, ne doit pas ĂȘtre vide |
sku | Obligatoire, doit ĂȘtre unique dans lâemplacement |
Bonnes pratiquesâ
Gestion des donnĂ©esâ
- Conservez des SKU cohĂ©rentsâŻ: Utilisez des formats de SKU cohĂ©rents entre vos systĂšmes
- Validez cĂŽtĂ© clientâŻ: VĂ©rifiez que les donnĂ©es respectent les exigences avant lâenvoi
- Soyez prudent avec la suppressionâŻ: Envisagez une modification du SKU plutĂŽt que la suppression quand possible
- Regroupez vos opĂ©rationsâŻ: Pour mettre Ă jour plusieurs produits, envisagez lâimportation en vrac
Optimisation des performancesâ
- Groupez vos mises Ă jourâŻ: Regroupez les mises Ă jour produits connexes
- Utilisez la paginationâŻ: Ne rĂ©cupĂ©rez que les produits nĂ©cessaires grĂące Ă la pagination
- Filtrez efficacementâŻ: Utilisez les filtres Ă disposition pour limiter le transfert de donnĂ©es
- Mettez en cache les recherches courantesâŻ: Conservez localement les informations produit consultĂ©es frĂ©quemment
PiĂšges frĂ©quents et DĂ©pannageâ
- UnicitĂ© du SKUâŻ: Les SKU des produits doivent ĂȘtre uniques par emplacement. Veillez Ă lâunicitĂ© du SKU Ă la crĂ©ation.
- RĂ©fĂ©rences produitsâŻ: Un produit ne peut ĂȘtre supprimĂ© sâil est utilisĂ© dans des listes dâemballage ou des rendez-vous actifs.
- SensibilitĂ© Ă la casseâŻ: Pour les recherches par nom, lâAPI fait une correspondance «âŻcommence parâŻÂ» insensible Ă la casse.
- Recherche SKUâŻ: Pour les recherches par SKU, lâAPI exige une correspondance exacte, insensible Ă la casse.
Aide et supportâ
Si vous rencontrez des problĂšmes non couverts par cette documentationâŻ:
- Consultez la rĂ©ponse dâerreurâŻ: La majoritĂ© des erreurs API incluent des informations spĂ©cifiques sur le problĂšme rencontrĂ©
- VĂ©rifiez les permissionsâŻ: Assurez-vous que votre jeton API a les permissions nĂ©cessaires
- Testez par Ă©tapesâŻ: DĂ©composez les opĂ©rations complexes pour identifier prĂ©cisĂ©ment le problĂšme