Référence des modèles
Forme de chaque schéma exposé par le SDK (surface boutique), rendue depuis le contrat figé @echoppe/client. Les modèles sont regroupés par namespace de la façade (echoppe.<namespace>.<méthode>()). Chaque modèle liste ses propriétés (type, description, objets imbriqués dépliables) avec un exemple d’appel et un exemple de réponse.
products
ProductDetail
Propriétés
idstring (uuid)Identifiant unique du produit.categorystring (uuid)UUID de la catégorie du produit.taxRatestring (uuid)UUID du taux de TVA appliqué.namestringNom du produit.slugstringIdentifiant lisible pour l'URL.descriptionstring | nullstatus'draft' | 'published' | 'archived'dateCreatedstring (date)Date de création.dateUpdatedstring (date)Date de dernière modification.variantsobjet[]Variantes du produit.Propriétés
idstring (uuid)Identifiant unique de la variante.productstring (uuid)UUID du produit parent.skustring | nullbarcodestring | nullpriceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).compareAtPriceHtstring | nullweightstring | nulllengthstring | nullwidthstring | nullheightstring | nullisDefaultbooleanVariante affichée par défaut sur la fiche produit.status'draft' | 'published' | 'archived'sortOrdernumberOrdre d'affichage.quantitynumberStock disponible.optionValuesstring (uuid)[]Valeurs d’option qui définissent cette variante.optionsobjet[]Options du produit.Propriétés
idstring (uuid)Identifiant unique de l'option.namestringNom de l'option (ex. « Taille », « Couleur »).sortOrdernumberOrdre d'affichage de l'option.valuesobjet[]Valeurs possibles de l'option.Propriétés
idstring (uuid)Identifiant unique de la valeur d'option.optionstring (uuid)UUID de l'option parente.valuestringValeur (ex. « M », « Rouge »).sortOrdernumberOrdre d'affichage.featuredImagestring (uuid) | nullimagesstring (uuid)[]Galerie de médias du produit.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.products.bySlug({
params: { path: { slug: 'mon-slug' } },
});const res = await fetch('https://api.maboutique.fr/products/by-slug/mon-slug', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"category": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"taxRate": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"status": "draft",
"dateCreated": "2024-01-01T12:00:00.000Z",
"dateUpdated": "2024-01-01T12:00:00.000Z",
"variants": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"product": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sku": "string",
"barcode": "string",
"priceHt": "string",
"compareAtPriceHt": "string",
"weight": "string",
"length": "string",
"width": "string",
"height": "string",
"isDefault": true,
"status": "draft",
"sortOrder": 0,
"quantity": 0,
"optionValues": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}
],
"options": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"sortOrder": 0,
"values": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"option": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"value": "string",
"sortOrder": 0
}
]
}
],
"featuredImage": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"images": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}ProductList
Propriétés
dataobjet[]Propriétés
idstring (uuid)Identifiant unique du produit.categorystring (uuid)UUID de la catégorie du produit.taxRatestring (uuid)UUID du taux de TVA appliqué.namestringNom du produit.slugstringIdentifiant lisible pour l'URL.descriptionstring | nullstatus'draft' | 'published' | 'archived'dateCreatedstring (date)Date de création.dateUpdatedstring (date)Date de dernière modification.featuredImagestring (uuid) | nulldefaultVariantobjet | nullPropriétés
priceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).compareAtPriceHtstring | nullquantitynumberStock disponible.metaobjetPropriétés
totalnumberpagenumberlimitnumbertotalPagesnumberExemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.products.list({
params: { query: { page: 1, limit: 20, search: "string", category: "3fa85f64-5717-4562-b3fc-2c963f66afa6", minPrice: 0, maxPrice: 0, inStock: true, sort: "price", order: "asc" } },
});const res = await fetch('https://api.maboutique.fr/products/?page=1&limit=20&search=string&category=3fa85f64-5717-4562-b3fc-2c963f66afa6&minPrice=0&maxPrice=0&inStock=true&sort=price&order=asc', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"category": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"taxRate": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"status": "draft",
"dateCreated": "2024-01-01T12:00:00.000Z",
"dateUpdated": "2024-01-01T12:00:00.000Z",
"featuredImage": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"defaultVariant": {
"priceHt": "string",
"compareAtPriceHt": "string",
"quantity": 0
}
}
],
"meta": {
"total": 0,
"page": 0,
"limit": 0,
"totalPages": 0
}
}ProductWithVariants
Propriétés
idstring (uuid)Identifiant unique du produit.categorystring (uuid)UUID de la catégorie du produit.taxRatestring (uuid)UUID du taux de TVA appliqué.namestringNom du produit.slugstringIdentifiant lisible pour l'URL.descriptionstring | nullstatus'draft' | 'published' | 'archived'dateCreatedstring (date)Date de création.dateUpdatedstring (date)Date de dernière modification.variantsobjet[]Variantes du produit.Propriétés
idstring (uuid)Identifiant unique de la variante.productstring (uuid)UUID du produit parent.skustring | nullbarcodestring | nullpriceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).compareAtPriceHtstring | nullweightstring | nulllengthstring | nullwidthstring | nullheightstring | nullisDefaultbooleanVariante affichée par défaut sur la fiche produit.status'draft' | 'published' | 'archived'sortOrdernumberOrdre d'affichage.quantitynumberStock disponible.optionValuesstring (uuid)[]Valeurs d’option qui définissent cette variante.optionsobjet[]Options du produit.Propriétés
idstring (uuid)Identifiant unique de l'option.namestringNom de l'option (ex. « Taille », « Couleur »).sortOrdernumberOrdre d'affichage de l'option.valuesobjet[]Valeurs possibles de l'option.Propriétés
idstring (uuid)Identifiant unique de la valeur d'option.optionstring (uuid)UUID de l'option parente.valuestringValeur (ex. « M », « Rouge »).sortOrdernumberOrdre d'affichage.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.products.get({
params: { path: { id: '3fa85f64-…' } },
});const res = await fetch('https://api.maboutique.fr/products/3fa85f64-…', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"category": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"taxRate": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"status": "draft",
"dateCreated": "2024-01-01T12:00:00.000Z",
"dateUpdated": "2024-01-01T12:00:00.000Z",
"variants": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"product": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sku": "string",
"barcode": "string",
"priceHt": "string",
"compareAtPriceHt": "string",
"weight": "string",
"length": "string",
"width": "string",
"height": "string",
"isDefault": true,
"status": "draft",
"sortOrder": 0,
"quantity": 0,
"optionValues": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}
],
"options": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"sortOrder": 0,
"values": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"option": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"value": "string",
"sortOrder": 0
}
]
}
]
}categories
Category
Propriétés
idstring (uuid)Identifiant unique de la catégorie.namestringNom de la catégorie.slugstringIdentifiant lisible pour l'URL (ex. « vaisselle »).descriptionstring | nullparentstring (uuid) | nullimagestring (uuid) | nullsortOrdernumberOrdre d'affichage parmi les catégories de même niveau.isVisiblebooleanVisible dans la boutique.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.categories.get({
params: { path: { id: '3fa85f64-…' } },
});const res = await fetch('https://api.maboutique.fr/categories/3fa85f64-…', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"parent": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"image": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sortOrder": 0,
"isVisible": true
}CategoryList
Tableau de Category.
Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.categories.list();const res = await fetch('https://api.maboutique.fr/categories/', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"parent": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"image": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sortOrder": 0,
"isVisible": true
}
]collections
Collection
Propriétés
idstring (uuid)Identifiant unique de la collection.namestringNom de la collection.slugstringIdentifiant lisible pour l'URL (ex. « nouveautes »).descriptionstring | nullimagestring (uuid) | nullisVisiblebooleanVisible dans la boutique.dateCreatedstring (date)Date de création.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.collections.get({
params: { path: { id: '3fa85f64-…' } },
});const res = await fetch('https://api.maboutique.fr/collections/3fa85f64-…', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"image": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"isVisible": true,
"dateCreated": "2024-01-01T12:00:00.000Z"
}CollectionList
Propriétés
dataCollection[]metaobjetPropriétés
totalnumberpagenumberlimitnumbertotalPagesnumberExemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.collections.list({
params: { query: { page: 1, limit: 20 } },
});const res = await fetch('https://api.maboutique.fr/collections/?page=1&limit=20', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"description": "string",
"image": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"isVisible": true,
"dateCreated": "2024-01-01T12:00:00.000Z"
}
],
"meta": {
"total": 0,
"page": 0,
"limit": 0,
"totalPages": 0
}
}cart
Cart
Propriétés
idstring (uuid) | nullUUID du panier, ou null si aucun panier actif.status'active' | 'converted' | 'abandoned' | 'empty'itemsobjet[]Lignes du panier.Propriétés
idstring (uuid)UUID de la ligne de panier.variantobjetPropriétés
idstring (uuid)UUID de la variante.skustring | nullpriceHtstringPrix HT unitaire, décimal en chaîne (ex. « 12.90 »).compareAtPriceHtstring | nulloptionValuesobjet[]Options de la variante (ex. Couleur : Argent, Taille : 52).Propriétés
optionstringNom de l’option (ex. « Couleur »).valuestringValeur choisie (ex. « Argent »).productobjetProduit rattaché à la variante.Propriétés
idstring (uuid)UUID du produit.namestringNom du produit.slugstringIdentifiant lisible pour l'URL.featuredImagestring (uuid) | nullquantitynumberQuantité commandée.dateAddedstring (date)Date d’ajout au panier.itemCountnumberNombre total d’articles (somme des quantités).totalHtstringTotal HT, décimal en chaîne.dateCreatedstring (date) | nullDate de création, ou null.dateUpdatedstring (date) | nullDate de dernière modification, ou null.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.cart.get();const res = await fetch('https://api.maboutique.fr/cart/', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "active",
"items": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"variant": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sku": "string",
"priceHt": "string",
"compareAtPriceHt": "string",
"optionValues": [
{
"option": "string",
"value": "string"
}
],
"product": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"featuredImage": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
},
"quantity": 0,
"dateAdded": "2024-01-01T12:00:00.000Z"
}
],
"itemCount": 0,
"totalHt": "string",
"dateCreated": "2024-01-01T12:00:00.000Z",
"dateUpdated": "2024-01-01T12:00:00.000Z"
}CartMerge
Propriétés
successbooleanOpération réussie.mergednumberoptionnelNombre de lignes fusionnées.convertedbooleanoptionnelLe panier anonyme a été converti en panier client.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.cart.merge();const res = await fetch('https://api.maboutique.fr/cart/merge', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"success": true,
"merged": 0,
"converted": true
}checkout
CheckoutResult
Propriétés
orderIdstring (uuid)UUID de la commande créée.orderNumberstringNuméro de commande lisible (ex. « CMD-2024-0001 »).paymentUrlstringURL de redirection vers le paiement.providerstringMoyen de paiement retenu.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.checkout.create({
body: {
"shippingAddress": {
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"countryCode": "string",
"phone": "string"
},
"billingAddress": {
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"countryCode": "string",
"phone": "string"
},
"useSameAddress": true,
"customerNote": "string",
"paymentProvider": "stripe",
"successUrl": "string",
"cancelUrl": "string"
},
});const res = await fetch('https://api.maboutique.fr/checkout/', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"shippingAddress": {
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"countryCode": "string",
"phone": "string"
},
"billingAddress": {
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"countryCode": "string",
"phone": "string"
},
"useSameAddress": true,
"customerNote": "string",
"paymentProvider": "stripe",
"successUrl": "string",
"cancelUrl": "string"
}),
});
const data = await res.json();Exemple de réponse
{
"orderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "string",
"paymentUrl": "string",
"provider": "string"
}PaymentProviderList
Propriétés
idstringIdentifiant du moyen de paiement (ex. « stripe », « paypal »).namestringNom affiché (ex. « Carte bancaire »).descriptionstringCourte description présentée au client.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.checkout.paymentProviders();const res = await fetch('https://api.maboutique.fr/checkout/payment-providers', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
[
{
"id": "string",
"name": "string",
"description": "string"
}
]taxRates
TaxRateList
Propriétés
idstring (uuid)Identifiant unique du taux de TVA.namestringNom du taux (ex. « TVA 20 % »).ratestringTaux en pourcentage, décimal en chaîne (ex. « 20.00 »).isDefaultbooleanTaux appliqué par défaut aux nouveaux produits.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.taxRates.list();const res = await fetch('https://api.maboutique.fr/tax-rates/', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"rate": "string",
"isDefault": true
}
]auth
CustomerAuth
Propriétés
customerobjetPropriétés
idstring (uuid)Identifiant unique du client.emailstring (email)Adresse e-mail du client.firstNamestringPrénom.lastNamestringNom.phonestring | nullemailVerifiedbooleanL'adresse e-mail a été vérifiée.marketingOptinbooleanConsentement aux communications marketing.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.auth.me();const res = await fetch('https://api.maboutique.fr/customer/auth/me', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"customer": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "client@exemple.fr",
"firstName": "string",
"lastName": "string",
"phone": "string",
"emailVerified": true,
"marketingOptin": true
}
}LoginResult
Propriétés
customerobjetPropriétés
idstring (uuid)Identifiant unique du client.emailstring (email)Adresse e-mail du client.firstNamestringPrénom.lastNamestringNom.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.auth.login({
body: {
"email": "client@exemple.fr",
"password": "string"
},
});const res = await fetch('https://api.maboutique.fr/customer/auth/login', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"email": "client@exemple.fr",
"password": "string"
}),
});
const data = await res.json();Exemple de réponse
{
"customer": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "client@exemple.fr",
"firstName": "string",
"lastName": "string"
}
}addresses
Address
Propriétés
idstring (uuid)Identifiant unique de l'adresse.type'shipping' | 'billing'labelstring | nullfirstNamestringPrénom du destinataire.lastNamestringNom du destinataire.companystring | nullstreetstringRue et numéro.street2string | nullpostalCodestringCode postal.citystringVille.countryobjetPays de l’adresse.Propriétés
idstring (uuid)UUID du pays.namestringNom du pays.codestringCode ISO du pays (ex. « FR »).phonestring | nullisDefaultbooleanAdresse par défaut pour ce type.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.addresses.get({
params: { path: { id: '3fa85f64-…' } },
});const res = await fetch('https://api.maboutique.fr/customer/addresses/3fa85f64-…', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "shipping",
"label": "string",
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"country": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"code": "string"
},
"phone": "string",
"isDefault": true
}AddressList
Tableau de Address.
Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.addresses.list();const res = await fetch('https://api.maboutique.fr/customer/addresses/', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "shipping",
"label": "string",
"firstName": "string",
"lastName": "string",
"company": "string",
"street": "string",
"street2": "string",
"postalCode": "string",
"city": "string",
"country": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"code": "string"
},
"phone": "string",
"isDefault": true
}
]orders
Order
Propriétés
idstring (uuid)Identifiant unique de la commande.orderNumberstringNuméro de commande lisible (ex. « CMD-2025-00001 »).status'pending' | 'confirmed' | 'processing' | 'shipped' | 'delivered' | 'cancelled' | 'refunded'shippingAddressunknownAdresse de livraison figée au moment de la commande.billingAddressunknownAdresse de facturation figée au moment de la commande.subtotalHtstringSous-total HT des articles (chaîne décimale).shippingHtstringFrais de port HT (chaîne décimale).discountHtstringRemise HT appliquée (chaîne décimale).totalHtstringTotal HT (chaîne décimale).totalTaxstringMontant total de TVA (chaîne décimale).totalTtcstringTotal TTC (chaîne décimale).customerNotestring | nulldateCreatedstring (date)Date de création de la commande.dateUpdatedstring (date)Date de dernière mise à jour.itemsobjet[]Lignes de la commande.Propriétés
idstring (uuid)Identifiant unique de la ligne.variantstring (uuid) | nulllabelstringLibellé du produit tel qu’acheté (ex. « Bague Lune — Argent / 52 »).quantitynumberQuantité commandée.unitPriceHtstringPrix unitaire HT (chaîne décimale).taxRatestringTaux de TVA appliqué, en pourcentage (chaîne décimale).totalHtstringTotal HT de la ligne (chaîne décimale).totalTtcstringTotal TTC de la ligne (chaîne décimale).paymentobjet | nullPropriétés
providerstringPrestataire de paiement (ex. « stripe », « paypal »).statusstringStatut du paiement.amountstringMontant payé (chaîne décimale).dateCreatedstring (date)Date du paiement.shipmentobjet | nullPropriétés
statusstringStatut de l’expédition.trackingNumberstring | nulltrackingUrlstring | nullshippedAtstring (date) | nulldeliveredAtstring (date) | nullproviderobjetTransporteur.Propriétés
namestringNom du transporteur (ex. « Colissimo »).typestringType de transporteur (ex. « colissimo »).Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.orders.get({
params: { path: { id: '3fa85f64-…' } },
});const res = await fetch('https://api.maboutique.fr/customer/orders/3fa85f64-…', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "string",
"status": "pending",
"shippingAddress": "string",
"billingAddress": "string",
"subtotalHt": "string",
"shippingHt": "string",
"discountHt": "string",
"totalHt": "string",
"totalTax": "string",
"totalTtc": "string",
"customerNote": "string",
"dateCreated": "2024-01-01T12:00:00.000Z",
"dateUpdated": "2024-01-01T12:00:00.000Z",
"items": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"variant": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"label": "string",
"quantity": 0,
"unitPriceHt": "string",
"taxRate": "string",
"totalHt": "string",
"totalTtc": "string"
}
],
"payment": {
"provider": "string",
"status": "string",
"amount": "string",
"dateCreated": "2024-01-01T12:00:00.000Z"
},
"shipment": {
"status": "string",
"trackingNumber": "string",
"trackingUrl": "string",
"shippedAt": "2024-01-01T12:00:00.000Z",
"deliveredAt": "2024-01-01T12:00:00.000Z",
"provider": {
"name": "string",
"type": "string"
}
}
}OrderList
Propriétés
dataobjet[]Propriétés
idstring (uuid)Identifiant unique de la commande.orderNumberstringNuméro de commande lisible (ex. « CMD-2025-00001 »).status'pending' | 'confirmed' | 'processing' | 'shipped' | 'delivered' | 'cancelled' | 'refunded'totalTtcstringTotal TTC de la commande (chaîne décimale).dateCreatedstring (date)Date de création de la commande.metaobjetPropriétés
totalnumberpagenumberlimitnumbertotalPagesnumberExemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.orders.list({
params: { query: { page: 1, limit: 20 } },
});const res = await fetch('https://api.maboutique.fr/customer/orders/?page=1&limit=20', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "string",
"status": "pending",
"totalTtc": "string",
"dateCreated": "2024-01-01T12:00:00.000Z"
}
],
"meta": {
"total": 0,
"page": 0,
"limit": 0,
"totalPages": 0
}
}pages
Page
Propriétés
idstring (uuid)UUID de la page.slugstringIdentifiant lisible pour l’URL.titlestringTitre de la page.seoTitlestring | nullseoDescriptionstring | nullstatus'draft' | 'published'sectionsobjet[]Sections de la page, ordonnées.Propriétés
idstring (uuid)UUID de la section.typestringType de bloc (défini dans le registre).dataunknownChamps du bloc — forme selon `type`.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.pages.bySlug({
params: { path: { slug: 'mon-slug' } },
});const res = await fetch('https://api.maboutique.fr/pages/by-slug/mon-slug', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"slug": "string",
"title": "string",
"seoTitle": "string",
"seoDescription": "string",
"status": "draft",
"sections": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "string",
"data": "string"
}
]
}PageList
Propriétés
idstring (uuid)UUID de la page.slugstringIdentifiant lisible pour l’URL.titlestringTitre de la page.Exemple d’appel
import { createEchoppeClient } from '@echoppe/client';
const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });
const { data, error } = await echoppe.pages.list();const res = await fetch('https://api.maboutique.fr/pages/', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();Exemple de réponse
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"slug": "string",
"title": "string"
}
]