Skip to content

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

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 | null
status'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 | null
barcodestring | null
priceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).
compareAtPriceHtstring | null
weightstring | null
lengthstring | null
widthstring | null
heightstring | null
isDefaultbooleanVariante 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) | null
imagesstring (uuid)[]Galerie de médias du produit.

Exemple d’appel

ts
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' } },
});
js
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

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 | null
status'draft' | 'published' | 'archived'
dateCreatedstring (date)Date de création.
dateUpdatedstring (date)Date de dernière modification.
featuredImagestring (uuid) | null
defaultVariantobjet | null
Propriétés
priceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).
compareAtPriceHtstring | null
quantitynumberStock disponible.
metaobjet
Propriétés
totalnumber
pagenumber
limitnumber
totalPagesnumber

Exemple d’appel

ts
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" } },
});
js
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

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 | null
status'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 | null
barcodestring | null
priceHtstringPrix HT, décimal en chaîne (ex. « 12.90 »).
compareAtPriceHtstring | null
weightstring | null
lengthstring | null
widthstring | null
heightstring | null
isDefaultbooleanVariante 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

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.products.get({
  params: { path: { id: '3fa85f64-…' } },
});
js
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

idstring (uuid)Identifiant unique de la catégorie.
namestringNom de la catégorie.
slugstringIdentifiant lisible pour l'URL (ex. « vaisselle »).
descriptionstring | null
parentstring (uuid) | null
imagestring (uuid) | null
sortOrdernumberOrdre d'affichage parmi les catégories de même niveau.
isVisiblebooleanVisible dans la boutique.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.categories.get({
  params: { path: { id: '3fa85f64-…' } },
});
js
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

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.categories.list();
js
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

idstring (uuid)Identifiant unique de la collection.
namestringNom de la collection.
slugstringIdentifiant lisible pour l'URL (ex. « nouveautes »).
descriptionstring | null
imagestring (uuid) | null
isVisiblebooleanVisible dans la boutique.
dateCreatedstring (date)Date de création.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.collections.get({
  params: { path: { id: '3fa85f64-…' } },
});
js
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

metaobjet
Propriétés
totalnumber
pagenumber
limitnumber
totalPagesnumber

Exemple d’appel

ts
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 } },
});
js
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

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.
variantobjet
Propriétés
idstring (uuid)UUID de la variante.
skustring | null
priceHtstringPrix HT unitaire, décimal en chaîne (ex. « 12.90 »).
compareAtPriceHtstring | null
optionValuesobjet[]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) | null
quantitynumberQuantité 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

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.cart.get();
js
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

successbooleanOpération réussie.
mergednumberoptionnelNombre de lignes fusionnées.
convertedbooleanoptionnelLe panier anonyme a été converti en panier client.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.cart.merge();
js
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

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

ts
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"
  },
});
js
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

idstringIdentifiant du moyen de paiement (ex. « stripe », « paypal »).
namestringNom affiché (ex. « Carte bancaire »).
descriptionstringCourte description présentée au client.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.checkout.paymentProviders();
js
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

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

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.taxRates.list();
js
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

customerobjet
Propriétés
idstring (uuid)Identifiant unique du client.
emailstring (email)Adresse e-mail du client.
firstNamestringPrénom.
lastNamestringNom.
phonestring | null
emailVerifiedbooleanL'adresse e-mail a été vérifiée.
marketingOptinbooleanConsentement aux communications marketing.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.auth.me();
js
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

customerobjet
Propriétés
idstring (uuid)Identifiant unique du client.
emailstring (email)Adresse e-mail du client.
firstNamestringPrénom.
lastNamestringNom.

Exemple d’appel

ts
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"
  },
});
js
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

idstring (uuid)Identifiant unique de l'adresse.
type'shipping' | 'billing'
labelstring | null
firstNamestringPrénom du destinataire.
lastNamestringNom du destinataire.
companystring | null
streetstringRue et numéro.
street2string | null
postalCodestringCode postal.
citystringVille.
countryobjetPays de l’adresse.
Propriétés
idstring (uuid)UUID du pays.
namestringNom du pays.
codestringCode ISO du pays (ex. « FR »).
phonestring | null
isDefaultbooleanAdresse par défaut pour ce type.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.addresses.get({
  params: { path: { id: '3fa85f64-…' } },
});
js
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

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.addresses.list();
js
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

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 | null
dateCreatedstring (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) | null
labelstringLibellé 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 | null
Propriétés
providerstringPrestataire de paiement (ex. « stripe », « paypal »).
statusstringStatut du paiement.
amountstringMontant payé (chaîne décimale).
dateCreatedstring (date)Date du paiement.
shipmentobjet | null
Propriétés
statusstringStatut de l’expédition.
trackingNumberstring | null
trackingUrlstring | null
shippedAtstring (date) | null
deliveredAtstring (date) | null
providerobjetTransporteur.
Propriétés
namestringNom du transporteur (ex. « Colissimo »).
typestringType de transporteur (ex. « colissimo »).

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.orders.get({
  params: { path: { id: '3fa85f64-…' } },
});
js
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

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.
metaobjet
Propriétés
totalnumber
pagenumber
limitnumber
totalPagesnumber

Exemple d’appel

ts
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 } },
});
js
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

idstring (uuid)UUID de la page.
slugstringIdentifiant lisible pour l’URL.
titlestringTitre de la page.
seoTitlestring | null
seoDescriptionstring | null
status'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

ts
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' } },
});
js
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

idstring (uuid)UUID de la page.
slugstringIdentifiant lisible pour l’URL.
titlestringTitre de la page.

Exemple d’appel

ts
import { createEchoppeClient } from '@echoppe/client';

const echoppe = createEchoppeClient({ baseUrl: 'https://api.maboutique.fr' });

const { data, error } = await echoppe.pages.list();
js
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"
  }
]

Publié sous licence CeCILL v2.1.