Connectez votre boutique à notre API.

Envoyez des lots d’annonces pour un fournisseur auquel vous avez accès. Les lots asynchrones, la voie recommandée, sont acceptés aussitôt et traités par nos soins ; les lots synchrones renvoient les résultats des écritures terminées.

Flux habituelDeux modes
  1. 01Envoyez jusqu’à 100 entréesPOST · PATCH · PUT · DELETE
  2. 02
    AsynchroneRecommandéAccepté pour traitementHTTP 202
    SynchroneÉcritures terminéesHTTP 200
  3. 03
    AsynchroneRien à interroger ; nous prenons le relaisaucun suivi nécessaire
    SynchroneNe renvoyer que les entrées en échec[] = tout est écrit

I — Fonctionnement des lots

Deux façons d’envoyer un lot.

Les deux modes acceptent les mêmes lots d’annonces pour le même fournisseur : jusqu’à 100 entrées, POST pour créer, PATCH pour mettre à jour, PUT pour l’upsert et DELETE pour retirer. Ils diffèrent par ce que la réponse confirme ; le mode asynchrone est recommandé par défaut.

AsynchroneRecommandéHTTP 202
Envoyez le lot et passez à la suite : nous traitons les entrées acceptées, sans rien à interroger ni à confirmer.
SynchroneHTTP 200
Choisissez-le lorsque votre système a besoin du résultat d’écriture de chaque entrée avant de continuer.

AsynchroneRecommandé

HTTP 202 · Accepté

Accepté maintenant, traité par nos soins.

Endpoint · POST · PATCH · PUT · DELETE/v1/listing-sources/{listingSourceId}/product-listings/async
La réponse
HTTP 202 renvoie un rapport d’acceptation : submissionId, acceptedCount et un échec pour chaque entrée dont l’acceptation n’est pas confirmée.
En cas d’échec
Les entrées acceptées suivent leur cours. L’existence de l’annonce, les enchères et l’autorisation du fournisseur sont vérifiées pendant le traitement, pas dans la réponse. Si rien n’est accepté, 400, 413, 500 ou 503 renvoie le même rapport.
Nouvel essai
Après une réponse perdue ou incertaine, renvoyez le lot inchangé avec la même Idempotency-Key. Corrigez les entrées invalides dans un nouveau lot avec une nouvelle clé.
Ensuite
Rien à interroger : une fois acceptée, l’entrée est entre nos mains et nous la traitons. Pour vérifier malgré tout, relisez les annonces avec GET ; les jetons délégués ont aussi besoin de product-listings:read.

Synchrone

HTTP 200 · Terminé

Des écritures terminées, dans la réponse.

Endpoint · POST · PATCH · PUT · DELETE/v1/listing-sources/{listingSourceId}/product-listings
La réponse
HTTP 200 ne liste que les entrées en échec ; [] signifie que toutes les entrées sont terminées, lot vide compris.
En cas d’échec
Chaque entrée a sa propre transaction : les écritures terminées restent enregistrées. Si toutes les entrées échouent, une réponse de problème est renvoyée à la place.
Nouvel essai
Corrigez et renvoyez uniquement les entrées en échec.
Ensuite
La visibilité dans la recherche suit séparément ; une écriture terminée n’apparaît pas encore dans la recherche.

II — Guide de configuration

Du jeton d’accès au premier lot d’annonces.

Un parcours pratique pour connecter un système de boutique sur mesure à Aura Historia, dans l’un ou l’autre mode.

  1. Étape 1

    Sélectionner un fournisseur accessible

    Sélectionnez un fournisseur auquel vous avez actuellement accès pour cette intégration. L’accès ne confirme ni la propriété ni le droit de modifier les informations du fournisseur.

    À vérifierUtilisez l’ID canonique du fournisseur pour l’intégration ; les deux modes utilisent le même.

  2. Étape 2

    Créer un jeton d’accès utilisateur

    Créez un jeton d’accès utilisateur avec product-listings:write pour un compte disposant d’un accès en cours au fournisseur cible. Le même jeton fonctionne dans les deux modes.

    À vérifierCopiez immédiatement le jeton : il n’est affiché qu’une seule fois. Conservez-le en lieu sûr et envoyez-le comme jeton Bearer avec chaque requête API.

    Nom
    Synchronisation produits par API personnalisée
    Autorisation
    product-listings:write
    Fournisseur
    Non sélectionné
  3. Étape 3

    Préparer et envoyer votre première requête produit

    Le mode asynchrone est sélectionné ; passez au mode synchrone si vous avez besoin des résultats d’écriture dans la réponse. L’URL utilise le listingSourceId du fournisseur sélectionné. Remplacez YOUR_USER_ACCESS_TOKEN sur votre serveur, en asynchrone aussi YOUR_BATCH_KEY, puis envoyez le lot d’exemple en POST.

    À vérifierAsynchrone : vérifiez HTTP 202, acceptedCount et failures ; nous traitons ensuite les entrées acceptées. Synchrone : vérifiez HTTP 200 et le tableau d’échecs.

    cURL · POST
    curl --request POST \
      --url 'https://api.aura-historia.com/v1/listing-sources/YOUR_LISTING_SOURCE_ID/product-listings/async' \
      --header 'Authorization: Bearer YOUR_USER_ACCESS_TOKEN' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: YOUR_BATCH_KEY' \
      --data '[
      {
        "sourceListingId": "demo-violin-001",
        "title": {
          "text": "Baroque Violin",
          "language": "en"
        },
        "description": {
          "text": "A baroque violin with a carved scroll.",
          "language": "en"
        },
        "price": {
          "type": "MONETARY",
          "currency": "EUR",
          "amount": 420000
        },
        "availability": null,
        "url": "https://example-shop.com/products/demo-violin-001",
        "images": [
          "https://example-shop.com/images/demo-violin.jpg"
        ]
      }
    ]'

    Renvoie 202 · accepté, traité par nos soins

  4. Étape 4

    Lisez le résultat selon votre mode

    Asynchrone : acceptedCount plus failures correspond aux entrées envoyées, chaque échec à son index d’origine ; les entrées acceptées ne demandent aucun suivi. Synchrone : [] signifie que toutes les entrées sont terminées ; en cas de succès partiel, seules les entrées en échec sont citées ; un lot entièrement en échec renvoie une réponse de problème.

    À vérifierConservez les réponses en sécurité. Renvoyez un lot asynchrone incertain à l’identique avec la même clé ; ne renvoyez en synchrone que les échecs corrigibles.

    Endpoints concernés
    async/v1/listing-sources/{listingSourceId}/product-listings/async
    sync/v1/listing-sources/{listingSourceId}/product-listings

    Asynchrone · accepté pour traitement

    Tout accepté
    202 · rapport
    Accepté en partie
    202 · échecs
    Rien d’accepté
    4xx · 5xx · rapport

    Synchrone · écritures terminées

    Tout écrit
    200 · []
    Partiel
    200 · échecs
    Tout en échec
    problem+json

III — Référence

Référence de l’API produits partenaires.

Les règles de chaque méthode dans les deux modes, puis la référence OpenAPI intégrée des endpoints de lots asynchrones et synchrones.

  • ASYNC

    Résultats d’acceptation

    POST, PATCH, PUT et DELETE sur /product-listings/async acceptent les mêmes entrées, maxItems 100. HTTP 202 signifie qu’au moins une entrée a été acceptée de façon confirmée, ou que le lot était vide ; nous traitons ensuite les entrées acceptées, sans rien à interroger. Le rapport est { submissionId, acceptedCount, failures } : acceptedCount plus failures correspond aux entrées envoyées, et chaque échec comporte index, error, retryable et, lorsqu’il peut être renvoyé sans risque, sourceListingId. Si rien n’est accepté : 503 pour des envois non confirmés, réessayables ou bloqués ; sinon 500 pour les erreurs internes ; 413 lorsque seule la taille échoue ; sinon 400. L’existence de l’annonce, les enchères et l’autorisation du fournisseur sont vérifiées pendant le traitement.

  • ASYNC

    Idempotence et nouveaux essais

    Envoyez un seul en-tête Idempotency-Key : 1 à 128 caractères ASCII visibles, sans virgule. Sans en-tête, une clé est générée et renvoyée dans le rapport ; si cette réponse est perdue, la clé ne peut pas être récupérée. Après une réponse perdue ou incertaine, renvoyez exactement le même lot, inchangé et dans le même ordre, avec la même clé, entrées refusées comprises. retryable signale les échecs pour lesquels ce renvoi convient (ENQUEUE_UNCONFIRMED est peut-être déjà en file) ; les erreurs de validation et de taille ne sont pas réessayables. Corrigez les entrées invalides dans une nouvelle requête avec une nouvelle clé, sans les entrées acceptées ni incertaines. submissionId sert uniquement à la corrélation. Pour consulter vous-même les annonces, utilisez GET sur /product-listings ; les jetons délégués ont aussi besoin de product-listings:read.

  • SYNC

    Résultats des écritures terminées

    POST, PATCH, PUT et DELETE sur /product-listings : maxItems 100 ; [] renvoie HTTP 200 avec []. Chaque entrée s’exécute dans sa propre transaction. En cas de succès partiel, HTTP 200 renvoie uniquement les échecs sous la forme { listingSourceId, sourceListingId, error }. Si toutes les entrées d’un lot non vide échouent, le premier échec devient une réponse application/problem+json. Ne renvoyez pas les entrées réussies.

  • POST

    Champs de création et prix

    POST exige sourceListingId, url et images ; incluez title et description localisés lorsqu’ils sont disponibles (le contrat actuel autorise leur omission ou null). Les champs vendeur et adresse ne sont pas pris en charge. availability peut être null. Le prix est { type: MONETARY, currency: EUR, amount: 420000 } en unités monétaires mineures, ou { type: ON_REQUEST } ; null n’enregistre aucun prix.

  • PATCH

    Conserver ou effacer

    Les champs omis préservent les valeurs existantes. null efface title, description, availability, price et chaque estimation de prix. url: null, images: null et auction: null sont invalides (400 BAD_BODY_VALUE). images: [] efface les images. Le contrat du lot complet est validé avant le début des transactions.

  • PUT

    Sémantique de création ou mise à jour

    Pour les annonces existantes, omettez title, description, availability ou les prix pour conserver, envoyez null pour effacer ou une valeur pour définir. Omettez images pour conserver, [] pour effacer ou un tableau pour remplacer ; null est invalide. Omettre url ou envoyer null la conserve ; une valeur la remplace. Les nouvelles annonces exigent sourceListingId, url et images ; title, description, availability et prix omis/null n’enregistrent aucune valeur.

  • AUCTION

    Appartenance à une vente et horaires du lot

    Omettre auction préserve son contexte ; auction: null est invalide. Dans auction, auctionId doit identifier une vente existante du même fournisseur : omission pour conserver l’appartenance, null pour l’effacer, un ID pour la définir. Pour lotNumber, cataloguePosition et chaque champ horaire (biddingOpens, scheduledCloses, reportedClosedAt), omettez pour conserver, null pour effacer ou une valeur pour définir. Les horaires sont des instants RFC3339.

  • DELETE

    Retrait par lots et restauration

    DELETE accepte un tableau de { sourceListingId } sur l’un ou l’autre chemin. Il retire les annonces, de façon réversible, en conservant leur historique ; PUT restaure une annonce retirée avant d’appliquer les données actuelles. Lisez le résultat selon votre mode : le rapport d’acceptation en asynchrone, les entrées en échec en synchrone.

OpenAPI · Produits partenairesDocumentation complète(s’ouvre dans un nouvel onglet)

Référence de l’API produits partenaire