stock.geolock.fr/docs/amazon-sp-api.md
2026-02-24 16:10:30 +00:00

5.9 KiB

Amazon SP-API — Documentation de référence

Authentification LWA (Login with Amazon)

OAuth2 standard. 3 credentials nécessaires :

  • client_id (LWA Client ID) — depuis Seller Central > Developer
  • client_secret (LWA Client Secret) — expire tous les 180 jours
  • refresh_token — obtenu après auto-autorisation de l'app privée

Obtenir un access_token

POST https://api.amazon.com/auth/o2/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token=Atzr|...
&client_id=amzn1.application-oa2-client.xxx
&client_secret=xxx

Réponse :

{
  "access_token": "Atza|...",
  "token_type": "bearer",
  "expires_in": 3600
}

L'access_token expire après 1 heure.

Endpoints

Base URL Europe : https://sellingpartnerapi-eu.amazon.com URL LWA (globale) : https://api.amazon.com/auth/o2/token

Marketplace IDs

Pays MarketplaceId
France A13V1IB3VIYZZH
Allemagne A1PA6795UKMFR9
Italie APJ6JRA9NG5V4
Espagne A1RKKUPIHCS9HS
Belgique AMEN7PMS3EDWL

Orders API

GET /orders/v0/orders

Récupère la liste des commandes.

Paramètres obligatoires :

  • MarketplaceIds — ex: A13V1IB3VIYZZH
  • CreatedAfter OU LastUpdatedAfter — date ISO 8601

Paramètres optionnels :

  • OrderStatusesUnshipped, PartiallyShipped, Shipped, Pending, Canceled...
  • FulfillmentChannelsMFN (expédié par le vendeur) ou AFN (FBA)
  • MaxResultsPerPage — défaut 100
  • NextToken — pagination

Réponse : response.payload.Orders (tableau)

GET /orders/v0/orders/{orderId}/orderItems

Récupère les articles d'une commande.

Réponse : response.payload.OrderItems (tableau)

Structure des données

Order

{
  "AmazonOrderId": "123-4567890-1234567",
  "PurchaseDate": "2026-02-18T14:30:00Z",
  "LastUpdateDate": "2026-02-18T15:00:00Z",
  "OrderStatus": "Unshipped",
  "FulfillmentChannel": "MFN",
  "SalesChannel": "Amazon.fr",
  "OrderTotal": { "CurrencyCode": "EUR", "Amount": "129.99" },
  "NumberOfItemsShipped": 0,
  "NumberOfItemsUnshipped": 2,
  "MarketplaceId": "A13V1IB3VIYZZH",
  "EarliestShipDate": "2026-02-19T00:00:00Z",
  "LatestShipDate": "2026-02-21T23:59:59Z"
}

OrderItem

{
  "ASIN": "B09XXXXXXXXX",
  "SellerSKU": "FMC920-FR-01",
  "OrderItemId": "12345678901234",
  "Title": "Traceur GPS FMC920",
  "QuantityOrdered": 2,
  "QuantityShipped": 0,
  "ItemPrice": { "CurrencyCode": "EUR", "Amount": "99.99" }
}

Rate Limits

Endpoint Rate Burst
getOrders 1 req / 60 sec 20
getOrder 1 req / 2 sec 30
getOrderItems 1 req / 2 sec 30

HTTP 429 en cas de throttling. Header x-amzn-RateLimit-Limit.

SDK Node.js recommandé

Package amazon-sp-api (le plus simple, gestion auto du throttling + tokens) :

pnpm add amazon-sp-api
import { SellingPartner } from 'amazon-sp-api'

const spClient = new SellingPartner({
  region: 'eu',
  refresh_token: '<REFRESH_TOKEN>',
  credentials: {
    SELLING_PARTNER_APP_CLIENT_ID: '<CLIENT_ID>',
    SELLING_PARTNER_APP_CLIENT_SECRET: '<CLIENT_SECRET>'
  },
  options: {
    auto_request_throttled: true
  }
})

const orders = await spClient.callAPI({
  operation: 'getOrders',
  endpoint: 'orders',
  query: {
    MarketplaceIds: ['A13V1IB3VIYZZH'],
    CreatedAfter: '2026-02-01T00:00:00Z',
    OrderStatuses: ['Unshipped', 'PartiallyShipped']
  }
})

const items = await spClient.callAPI({
  operation: 'getOrderItems',
  endpoint: 'orders',
  path: { orderId: '123-4567890-1234567' }
})

Statuts de commande pertinents

  • Unshipped — payée, rien expédié → à traiter
  • PartiallyShipped — partiellement expédié
  • Shipped — tout expédié
  • Canceled — annulée

Stockage des credentials (notre app)

Dans la table api_keys, même pattern qu'Axonaut :

  • provider=amazon, label=client_id
  • provider=amazon, label=client_secret
  • provider=amazon, label=refresh_token

Adresse de livraison

GET /orders/v0/orders/{orderId}/address — nécessite un Restricted Data Token (RDT) pour accéder aux PII (données personnelles). L'adresse est nécessaire pour générer les étiquettes Colissimo.

Notes vendeur / commentaires internes

IMPORTANT : L'API SP-API ne permet PAS d'ajouter des notes vendeur ou commentaires internes sur une commande.

Ce qui n'existe PAS

  • Aucun endpoint pour créer/modifier des notes sur une commande
  • Aucun champ seller_note, internal_note ou comment dans l'API Orders v0 ou v2026-01-01
  • Aucun feed POST_ORDER_ACKNOWLEDGEMENT_DATA avec support de notes personnalisées
  • Les opérations disponibles se limitent à : updateShipmentStatus, updateVerificationStatus, confirmShipment

Alternatives recommandées

  1. Stockage en base de données locale (recommandé pour notre projet)

    • Créer une table order_notes liée à orders via amazon_order_id
    • Permet de stocker commentaires, IMEI scannés, statuts de traitement internes
    • Indépendant d'Amazon — aucune synchronisation possible
  2. Seller Central web interface (manuel)

    • Seller Central propose une interface web pour ajouter des notes sur les commandes MFN
    • Ces notes ne sont PAS accessibles via l'API SP-API (lecture ni écriture)
    • Utilisation manuelle uniquement
  3. Champ BuyerCustomizedInfo (lecture seule)

    • Contient des informations de personnalisation côté acheteur (texte gravure, etc.)
    • Nécessite un Restricted Data Token (RDT)
    • Lecture seule — ne peut pas être modifié par le vendeur

Conclusion

Pour tracker les IMEI scannés, les statuts de préparation ou toute donnée interne liée à une commande Amazon, il est nécessaire de gérer ces informations dans notre propre base de données. Amazon SP-API ne fournit aucun mécanisme pour stocker des métadonnées vendeur personnalisées.