Conecte su tienda con nuestra API.

Envíe lotes de anuncios para un proveedor al que tenga acceso. Los lotes asíncronos, la vía recomendada, se aceptan al instante y los procesamos nosotros; los lotes síncronos devuelven los resultados de escritura completados.

Flujo habitualDos modos
  1. 01Envíe hasta 100 entradasPOST · PATCH · PUT · DELETE
  2. 02
    AsíncronoRecomendadoAceptado para su procesamientoHTTP 202
    SíncronoEscrituras completadasHTTP 200
  3. 03
    AsíncronoNada que consultar; nosotros nos encargamossin seguimiento
    SíncronoReintente solo las entradas fallidas[] = todo escrito

I — Cómo funcionan los lotes

Dos formas de enviar un lote.

Ambos modos aceptan los mismos lotes de anuncios para el mismo proveedor: hasta 100 entradas, POST para crear, PATCH para actualizar, PUT para upsert y DELETE para retirar. Se diferencian en lo que confirma la respuesta; el modo asíncrono es la opción recomendada.

AsíncronoRecomendadoHTTP 202
Envíe el lote y siga adelante: las entradas aceptadas las procesamos nosotros, sin nada que consultar ni confirmar.
SíncronoHTTP 200
Elíjalo cuando su sistema necesite el resultado de escritura de cada entrada antes de continuar.

AsíncronoRecomendado

HTTP 202 · Aceptado

Aceptado ahora, procesado por nosotros.

Endpoint · POST · PATCH · PUT · DELETE/v1/listing-sources/{listingSourceId}/product-listings/async
La respuesta
HTTP 202 devuelve un informe de aceptación: submissionId, acceptedCount y un error por cada entrada cuya aceptación no se confirmó.
Si fallan entradas
Las entradas aceptadas siguen adelante. La existencia del anuncio, las subastas y la autorización del proveedor se comprueban durante el procesamiento, no en la respuesta. Si no se acepta nada, 400, 413, 500 o 503 devuelven el mismo informe.
Reintentos
Tras una respuesta perdida o incierta, reenvíe el lote sin cambios con la misma Idempotency-Key. Corrija las entradas no válidas en un lote nuevo con una clave nueva.
Después
Nada que consultar: una vez aceptada, la entrada queda en nuestras manos y la procesamos nosotros. Si aun así quiere comprobarlo, lea los anuncios con GET; los tokens delegados también necesitan product-listings:read.

Síncrono

HTTP 200 · Completado

Escrituras completadas, en la respuesta.

Endpoint · POST · PATCH · PUT · DELETE/v1/listing-sources/{listingSourceId}/product-listings
La respuesta
HTTP 200 enumera solo las entradas fallidas; [] indica que todas se completaron, incluso en un lote vacío.
Si fallan entradas
Cada entrada tiene su propia transacción, así que las escrituras completadas se conservan. Si fallan todas las entradas, se devuelve en su lugar una respuesta de problema.
Reintentos
Corrija y reenvíe solo las entradas fallidas.
Después
La visibilidad en búsquedas llega por separado; una escritura completada aún no aparece en la búsqueda.

II — Guía de configuración

Del token de acceso al primer lote de anuncios.

Un flujo práctico para conectar un sistema de tienda propio con Aura Historia, en cualquiera de los dos modos.

  1. Paso 1

    Seleccionar un proveedor accesible

    Seleccione para esta integración un proveedor al que tenga acceso actualmente. El acceso no acredita la propiedad ni el permiso para modificar los datos del proveedor.

    Qué revisarUse el ID canónico del proveedor para la integración; ambos modos usan el mismo.

  2. Paso 2

    Crea un token de acceso de usuario

    Cree un token de acceso de usuario con product-listings:write para una cuenta con acceso vigente al proveedor de destino. El mismo token sirve para ambos modos.

    Qué revisarCopia el token inmediatamente: solo se muestra una vez. Guárdalo de forma segura y envíalo como token Bearer en cada solicitud a la API.

    Nombre
    Sincronización de productos por API propia
    Permiso
    product-listings:write
    Proveedor
    Sin seleccionar
  3. Paso 3

    Prepara y envía tu primera solicitud de productos

    El modo asíncrono está seleccionado; cambie a síncrono si necesita los resultados de escritura en la respuesta. La URL usa el listingSourceId del proveedor seleccionado. Sustituya YOUR_USER_ACCESS_TOKEN en su servidor, en asíncrono también YOUR_BATCH_KEY, y envíe el lote de ejemplo con POST.

    Qué revisarAsíncrono: compruebe HTTP 202, acceptedCount y failures; después procesamos nosotros las entradas aceptadas. Síncrono: compruebe HTTP 200 y el array de errores.

    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"
        ]
      }
    ]'

    Devuelve 202 · aceptado, lo procesamos nosotros

  4. Paso 4

    Lea el resultado de su modo

    Asíncrono: acceptedCount más failures equivale a las entradas enviadas, cada error en su índice original; las entradas aceptadas no requieren seguimiento. Síncrono: [] indica que todas las entradas se completaron; con éxito parcial solo se nombran las entradas fallidas; un lote totalmente fallido devuelve una respuesta de problema.

    Qué revisarGuarde las respuestas de forma segura. Reenvíe sin cambios y con la misma clave un lote asíncrono incierto; reenvíe solo los errores síncronos que puedan corregirse.

    Endpoints relevantes
    async/v1/listing-sources/{listingSourceId}/product-listings/async
    sync/v1/listing-sources/{listingSourceId}/product-listings

    Asíncrono · aceptado para su procesamiento

    Todo aceptado
    202 · informe
    Aceptado en parte
    202 · errores
    Nada aceptado
    4xx · 5xx · informe

    Síncrono · escrituras completadas

    Todo escrito
    200 · []
    Parcial
    200 · errores
    Todo fallido
    problem+json

III — Referencia

Referencia de la API de productos para socios.

Las reglas de cada método en ambos modos y, después, la referencia OpenAPI integrada de los endpoints de lotes asíncronos y síncronos.

  • ASYNC

    Resultados de aceptación

    POST, PATCH, PUT y DELETE en /product-listings/async aceptan las mismas entradas, maxItems 100. HTTP 202 indica que se confirmó la aceptación de al menos una entrada, o que el lote estaba vacío; después procesamos nosotros las entradas aceptadas, sin nada que consultar. El informe es { submissionId, acceptedCount, failures }: acceptedCount más failures equivale a las entradas enviadas, y cada error incluye index, error, retryable y, cuando puede devolverse con seguridad, sourceListingId. Si no se acepta nada: 503 para envíos no confirmados, reintentables o bloqueados; si no, 500 para errores internos; 413 cuando solo falla el tamaño; en otro caso, 400. La existencia del anuncio, las subastas y la autorización del proveedor se comprueban durante el procesamiento.

  • ASYNC

    Idempotencia y reintentos

    Envíe una sola cabecera Idempotency-Key: de 1 a 128 caracteres ASCII visibles, sin comas. Sin ella, se genera una clave y se devuelve en el informe; si esa respuesta se pierde, la clave no se puede recuperar. Tras una respuesta perdida o incierta, reenvíe exactamente el mismo lote, sin cambios y en el mismo orden, con la misma clave, incluidas las entradas rechazadas. retryable marca los errores en los que procede ese reenvío (ENQUEUE_UNCONFIRMED puede estar ya en cola); los errores de validación y de tamaño no son reintentables. Corrija las entradas no válidas en una solicitud nueva con una clave nueva, sin las entradas aceptadas ni las inciertas. submissionId solo sirve para correlacionar. Para consultar los anuncios usted mismo, use GET en /product-listings; los tokens delegados también necesitan product-listings:read.

  • SYNC

    Resultados de escrituras completadas

    POST, PATCH, PUT y DELETE en /product-listings: maxItems 100; [] devuelve HTTP 200 con []. Cada entrada se ejecuta en su propia transacción. Con éxito parcial, HTTP 200 devuelve solo errores como { listingSourceId, sourceListingId, error }. Si todas las entradas de un lote no vacío fallan, el primer error se devuelve como application/problem+json. No repita las entradas correctas.

  • POST

    Campos de creación y precios

    POST requiere sourceListingId, url e images; incluya title y description localizados cuando estén disponibles (el contrato actual permite omisión o null). No se admiten campos de vendedor ni dirección. availability puede ser null. El precio es { type: MONETARY, currency: EUR, amount: 420000 } en unidades monetarias menores, o { type: ON_REQUEST }; null no registra precio.

  • PATCH

    Conservar o borrar

    Los campos omitidos conservan los valores existentes. null borra title, description, availability, price y cada estimación de precio. url: null, images: null y auction: null son inválidos (400 BAD_BODY_VALUE). images: [] borra las imágenes. Se valida el contrato del lote completo antes de iniciar las transacciones.

  • PUT

    Semántica de inserción o actualización

    En anuncios existentes, omita title, description, availability o precios para conservar, envíe null para borrar o un valor para establecer. Omita images para conservar, [] para borrar o un array para reemplazar; null es inválido. Omitir url o enviar null conserva la URL; un valor la reemplaza. Los nuevos anuncios requieren sourceListingId, url e images; title, description, availability y precios omitidos/null no registran valor.

  • AUCTION

    Pertenencia a subasta y horarios del lote

    Omitir auction conserva su contexto; auction: null es inválido. Dentro de auction, auctionId debe identificar una subasta existente del mismo proveedor: omitir conserva la pertenencia, null la borra y un ID la establece. Para lotNumber, cataloguePosition y cada campo temporal (biddingOpens, scheduledCloses, reportedClosedAt), omita para conservar, null para borrar o un valor para establecer. Los tiempos son instantes RFC3339.

  • DELETE

    Retirada por lotes y restauración

    DELETE acepta un array de { sourceListingId } en cualquiera de las dos rutas. Retira anuncios, algo reversible, y conserva su historial; PUT restaura un anuncio retirado antes de aplicar los datos actuales. Lea el resultado según su modo: el informe de aceptación en asíncrono, las entradas fallidas en síncrono.

OpenAPI · Productos de sociosDocumentación completa(se abre en una pestaña nueva)

Referencia de la API de productos partner