Aller au contenu
Menu documentation

Commencez

Démarrage rapide

Créez une clé d'API et effectuez vos premières appels à l'API TradeCatalog en cinq minutes.

Vous devez être le propriétaire d'un espace de travail TradeCatalog avec une licence Pro ou un compte pilote. Les espaces de travail de démonstration ne peuvent pas utiliser l'API.

1. Créer une clé d'APILien vers cette section#

  1. Ouvrez votre espace de travail et allez dans Paramètres → API.
  2. Donnez un nom à la clé que vous reconnaîtrez plus tard, comme « synchronisation des stocks Sage ».
  3. Choisissez Lecture seule pour consulter des informations, ou Lecture et écriture pour mettre à jour des produits, clients et commandes.
  4. Cliquez sur Créer la clé et copiez-la. Elle commence par tc_live_.

Copiez-la maintenant

Nous ne montrons une clé qu'une seule fois, et nous ne conservons qu'un hachage de celle-ci. Si vous la perdez, révoquez-la et créez-en une nouvelle.

Placez la clé dans une variable d'environnement pour qu'elle reste hors de votre code :

bash
export TRADECATALOG_API_KEY="tc_live_…"

2. Vérifier que la clé fonctionneLien vers cette section#

bash
curl https://tradecatalog.app/api/v1/workspace \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
json
{
  "data": {
    "id": "0b6c1f5e-6f7a-4a57-9a0c-2f4d4c1e8a11",
    "slug": "northgate",
    "name": "Northgate Fixings",
    "currency": "GBP",
    "timezone": "Europe/London",
    "taxLabel": "ex VAT",
    "key": { "name": "Sage stock sync", "scope": "write" }
  }
}

3. Rechercher des produitsLien vers cette section#

bash
curl "https://tradecatalog.app/api/v1/products?q=hinge&limit=2" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"

L'argent est toujours en unités mineures de la devise de l'espace de travail, donc 1850 est £18.50.. Voir Conventions.

4. Obtenir le prix d'un clientLien vers cette section#

Transmettez le code (ou l'identifiant) du compte client et un SKU :

bash
curl "https://tradecatalog.app/api/v1/prices?customer=OAK01&sku=HX-8510&qty=10" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
json
{
  "data": {
    "customer": {
      "id": "7d2e4f0a-1b3c-4d5e-8f90-a1b2c3d4e5f6",
      "accountCode": "OAK01",
      "name": "Oakfield Joinery"
    },
    "sku": "HX-8510",
    "name": "Hex bolt M10 x 50 zinc",
    "qty": 10,
    "unit": 1573,
    "line": 15730,
    "list": 1850,
    "discountBp": 1500,
    "source": "brand",
    "label": "Brand discount −15%"
  },
  "currency": "GBP"
}

Comment sont calculés les prix explique source et label.

5. Créer ou mettre à jour un produitLien vers cette section#

Cela nécessite une clé Lecture et écriture.

bash
curl -X PUT https://tradecatalog.app/api/v1/products \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      {
        "sku": "HX-8512",
        "name": "Hex bolt M12 x 50 zinc",
        "listPrice": 2240,
        "unitLabel": "Box of 100",
        "brand": "Northgate",
        "category": "Bolts"
      }
    ]
  }'
json
{
  "data": {
    "created": 1,
    "updated": 0,
    "priceChanges": 0,
    "priceChangeId": null,
    "unknownCustomers": []
  }
}

Les nouveaux produits sont immédiatement disponibles à leur prix de liste. Si vous envoyez un prix différent pour un produit déjà existant, le prix ne change pas encore. Il est placé dans un changement de prix en brouillon que vous devez examiner et publier dans l'application. Voir Produits.

Le même code en JavaScriptLien vers cette section#

js
const api = (path, init = {}) =>
  fetch(`https://tradecatalog.app/api/v1${path}`, {
    ...init,
    headers: {
      Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}`,
      'Content-Type': 'application/json',
      ...init.headers,
    },
  }).then(async (res) => {
    const body = await res.json()
    if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`)
    return body
  })

const { data: workspace } = await api('/workspace')
const { data: price } = await api('/prices?customer=OAK01&sku=HX-8510&qty=10')
console.log(`${workspace.name}: ${price.name} is ${price.unit / 100} each`)

Étapes suivantesLien vers cette section#