Aller au contenu principal

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 :

  1. Obtenez votre jeton API auprĂšs du support
  2. Trouvez votre sous-domaine d’emplacement (ex. : votre-entrepot.datadocks.com)
  3. 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"
}
}'
  1. 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ĂštreTypeObligatoireDescriptionExemple
pageEntierNonNuméro de page pour la pagination (par défaut 1)page=2
nameChaĂźneNonFiltrer par nom de produit (insensible Ă  la casse, commence par)name=widget
skuChaĂźneNonFiltrer 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 :

ChampTypeDescription
idEntierIdentifiant unique du produit
nameChaĂźneNom du produit
skuChaĂźneCode 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ĂštreTypeObligatoireDescription
idEntierOuiIdentifiant 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ĂštreTypeObligatoireDescriptionContraintesExemple
nameChaĂźneOuiNom du produitNe doit pas ĂȘtre vide"Premium Widget"
skuChaĂźneOuiSKU du produitDoit ĂȘ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ĂštreTypeObligatoireDescription
idEntierOuiIdentifiant 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’erreurDescriptionCause possible
400RequĂȘte invalideValeurs ou format non valides
404IntrouvableL’ID du produit n’existe pas
422Entité non traitableValidation échouée (ex. SKU en doublon)
401Non autoriséJeton API invalide ou manquant
403InterditPermissions 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ĂštreTypeObligatoireDescription
idEntierOuiIdentifiant 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’erreurDescriptionCause possible
404IntrouvableL’ID du produit n’existe pas
401Non autoriséJeton API invalide ou manquant
403InterditPermissions insuffisantes pour la suppression
422EntitĂ© non traitableSuppression 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 :

ChampRĂšgles de validation
nameObligatoire, ne doit pas ĂȘtre vide
skuObligatoire, 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 :

  1. Consultez la rĂ©ponse d’erreur : La majoritĂ© des erreurs API incluent des informations spĂ©cifiques sur le problĂšme rencontrĂ©
  2. VĂ©rifiez les permissions : Assurez-vous que votre jeton API a les permissions nĂ©cessaires
  3. Testez par Ă©tapes : DĂ©composez les opĂ©rations complexes pour identifier prĂ©cisĂ©ment le problĂšme