SVILUPPATORI · Riferimento API di integrazione

Riferimento API Fabrixa Integration

6 min di lettura Ultimo aggiornamento: 10-06-2026 15:28

L’API Integration ti aiuta a creare e gestire ordini Fabrixa, avviare Fabrixa Studio e restare sincronizzato con produzione e fulfilment tramite webhook. L’API segue le convenzioni REST e usa JSON per tutti i body di richiesta e risposta.

URL BASE

https://api.fabrixa.com/v2/integration

Invia tutte le richieste a questo URL base seguito dal percorso endpoint specifico. L’URL base è il punto di partenza per interagire con la Fabrixa API: recuperare, creare, aggiornare o eliminare risorse.

PRIMA DELLA TUA PRIMA RICHIESTA

Autenticazione

Per accedere all’API Integration, autentica le richieste usando sia un Application Access Token sia una Application Key:

Intestazione dell'autorizzazione
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Intestazione della chiave dell'applicazione
X-Application-Key: APPLICATION_KEY
Esempio di comando cURL
curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/ping' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Sostituisci APPLICATION_ACCESS_TOKEN con il tuo token di accesso effettivo e APPLICATION_KEY con la tua chiave di applicazione effettiva.

COME SONO STRUTTURATE LE RISPOSTE

Endpoint e richieste

Gli endpoint dell’API Integration sono organizzati per tipo di risorsa e seguono lo stile REST. Ogni endpoint rappresenta una risorsa e le azioni sono eseguite con metodi HTTP standard.

Tutte le richieste e risposte dell’API Integration usano JSON, offrendo un’interfaccia coerente e semplice.

Per i dettagli completi su ogni endpoint, inclusi esempi di richieste e risposte, consulta il nostro Swagger documentation.

Formato della risposta

Tutti gli endpoint restituiscono i dati in un formato standardizzato con questi oggetti:

{
  "links": {
    "self": "https://api.fabrixa.com/v2/integration/products",
    "first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
    "last_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "next_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "prev_page": null
  },
  "meta": {
    "total": 2,
    "current_page": 1,
    "per_page": 10
  },
  "data": [
    {
      "id": 1,
      "name": "Product 1",
      "description": "Description of Product 1"
    },
    {
      "id": 2,
      "name": "Product 2",
      "description": "Description of Product 2"
    }
  ]
}

Descrizione degli oggetti di risposta

links

Contiene collegamenti di impaginazione per navigare tra i risultati.

  • self — l'URL della pagina corrente.
  • first_page — l'URL della prima pagina dei risultati.
  • last_page — l'URL dell'ultima pagina dei risultati.
  • next_page — l'URL della pagina successiva. null se non è presente la pagina successiva.
  • prev_page — l'URL della pagina precedente. null se non esiste una pagina precedente.

meta

Contiene metadati sulla risposta, come le informazioni sull'impaginazione.

  • total — il numero totale di elementi disponibili in tutte le pagine.
  • current_page — il numero di pagina corrente dei risultati.
  • per_page — il numero di elementi per pagina.

data

Il contenuto principale della risposta. data varia in base all'endpoint: può essere un singolo oggetto, ad esempio un prodotto, o una serie di oggetti, ad esempio un elenco di prodotti.

QUANDO QUALCOSA VA storto

Errori e codici di stato

Tutte le richieste API restituiscono codici di stato HTTP che forniscono informazioni dettagliate sulla risposta.

400 Bad Request

Il server non può elaborare la richiesta a causa di errori di convalida: parametri mancanti o non validi.

401 Unauthorized

Il client non ha fornito credenziali di autenticazione valide. Restituito anche quando il token di accesso è stato revocato.

403 Forbidden

Il server ha rifiutato la richiesta a causa di diritti di accesso insufficienti, generalmente causati da autorizzazioni di accesso errate o mancanti.

404 Not Found

Impossibile trovare la risorsa richiesta sul server.

429 Too Many Requests

Il client ha superato il numero consentito di richieste in un determinato periodo di tempo. Vedere Rate Limits.

5xx Errors

Si è verificato un errore interno del server. Contatta il supporto Fabrica con i dettagli della richiesta non riuscita.

Corpo della risposta all'errore

Un esempio di corpo della risposta all'errore:

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/ping"
    },
    "meta": [],
    "errors": {
        "messages": [
            "Application Key is not specified."
        ]
    }
}

errors contiene dettagli su ciò che non è riuscito. L'array messages elenca le descrizioni degli errori. Per una richiesta errata, riceverai i nomi dei campi che non hanno superato la convalida.

CONOSCI I LIMITI DELLA TUA RICHIESTA

Limiti di richiesta

L'API di integrazione supporta un limite di 30 richieste per applicazione al minuto.

Se superi questo limite riceverai una risposta 429 Too Many Requests.

Tutte le risposte dell'API di integrazione includono l'intestazione X-RateLimit-Remaining, il numero di richieste che il client può ancora effettuare e l'intestazione X-RateLimit-Limit, il totale consentito al minuto.

CREA E TRACCIA GLI ORDINI

Ordini

Crea ordini in Fabrixa dal tuo storefront o dalla tua piattaforma, allega i file di stampa richiesti e segui ogni articolo durante il fulfilment.

PREPARA I DATI DEL TUO ORDINE

Crea un ordine

Per creare un ordine tramite la Fabrixa Integration API, invia una richiesta POST a https://api.fabrixa.com/v2/integration/orders. Il request body deve includere:

Richiedi struttura corporea

  • number (opzionale) - il numero dell'ordine. Se non fornito, viene generato un numero univoco.
  • comments (facoltativo) - eventuali commenti o note aggiuntivi relativi all'ordine.
  • purchased_at - data e ora in cui l'ordine è stato acquistato, formattato come YYYY-MM-DD HH:MM:SS.
  • client_ip (facoltativo) - l'indirizzo IP del cliente.
  • client_user_agent (facoltativo) - il stringa dell'agente utente del cliente.
  • rows - array di articoli dell'ordine, ciascuno contenente:
    • sku - lo SKU della variante di prodotto. Per i dettagli, vedere Swagger.
    • quantity - quantità della variante di prodotto ordinata.
    • client_barcode (opzionale) - identificatore univoco lato client per riga dell'ordine, formattato come Code 128.
    • cart_item_key (richiesto senza sources) - identificatore univoco dall'incorporamento della piattaforma Fabrixa Studio, utilizzato per associare le personalizzazioni salvate all'ordine.
    • sources (richiesto senza cart_item_key) - array di file sorgente associati al prodotto, ciascuno contenente:
      • type - il tipo di prodotto, utilizzare "file" per impostazione predefinita.
      • url - URL della fonte file.
  • customer - dettagli cliente:
    • first_name, last_name, email, phone.
  • shipping_address - dettagli spedizione:
    • address, address2 (opzionale), address3 (opzionale).
    • city, country_code (ISO 3166-2), country, postal_code, state (opzionale).
    • first_name, last_name, phone (opzionale), company (opzionale).
  • shipping_label (opzionale) - dettagli etichetta:
    • method_name - ad es. "Post NL".
    • tracking_number, tracking_url, label_pdf_url.
    • date_created - formattato come YYYY-MM-DD HH:MM:SS.

Richiesta di campione

{
  "number": "NL2024010201",
  "comments": "Customer agrees with a low resolution file.",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "variant_id": 2705,
      "quantity": 1,
      "client_barcode": "1234567890",
      "sources": [
        {
          "type": "file",
          "url": "https://samples-files.com/samples/sample.pdf"
        }
      ]
    }
  ],
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "3VJtP@example.com",
    "phone": "0647185332"
  },
  "shipping_address": {
    "address": "Pierre cuypershof",
    "address2": "17",
    "city": "Amsterdam",
    "country_code": "NL",
    "country": "Netherlands",
    "postal_code": "1012 AB",
    "state": "North Holland",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "0647185332"
  },
  "shipping_label": {
    "method_name": "Post NL",
    "tracking_number": "3SYZXG1585577",
    "tracking_url": "https://postnl.nl/tracktrace/3SYZXG1585577",
    "label_pdf_url": "https://api.fabrixa.com/storage/8966630826422f36d822f91680012141.pdf",
    "date_created": "2024-01-01 00:00:00"
  }
}
TRACCIA I TUOI ARTICOLI DELL'ORDINE

Segui il fulfilment

Per ottenere lo stato fulfilment di un ordine specifico, invia una richiesta GET a https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. La risposta fornisce i fulfilment associati all’ordine, inclusi stato degli articoli, dettagli prodotto e avanzamento degli step di produzione.

Esempio di risposta

{
    "data": [
        {
            "id": 1499,
            "barcode": "1200004169200",
            "status": "unfulfilled",
            "created_at": "2024-08-19T12:38:59.000000Z",
            "updated_at": "2024-08-19T12:39:00.000000Z",
            "variant": {
                "id": 32327,
                "name": "Test iAPI blanket product",
                "subtitle": "100 x 150 cm",
                "SKU": "COF099191"
            },
            "product": {
                "id": 1306,
                "name": "Test iAPI blanket product",
                "subtitle": "Test iAPI blanket product"
            },
            "production_steps": [
                {
                    "id": 5,
                    "name": "Print duvet",
                    "description": "Printing the duvet according to the specified design and dimensions.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                },
                {
                    "id": 6,
                    "name": "Print pillow",
                    "description": "Printing the pillow cover with the assigned design.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                }
            ]
        }
    ]
}

La risposta include un elenco di adempimenti, ciascuno dei quali prevede:

  • id - identificatore univoco per l'adempimento.
  • barcode - codice a barre per tracciabilità e identificazione interna; può anche essere stampato sul prodotto.
  • status - lo stato attuale dell'evasione: non evaso o eseguito.
  • created_at e updated_at - timestamp per la creazione dell'evasione e l'ultimo aggiornamento.
  • variant - informazioni dettagliate sulla variante del prodotto: nome, sottotitolo, SKU.
  • product - dettagli del prodotto: nome, sottotitolo.
  • production_steps - serie di fasi di produzione. L'elenco dei passaggi dipende dal tipo di prodotto. Per ogni fase:
    • id - identificatore univoco per la fase di produzione.
    • name - ad es. "Stampa piumino".
    • description - cosa comporta la fase di produzione.
    • status - lo stato attuale:
      • in sospeso - non ancora avviato.
      • in corso - attualmente in corso.
      • rifiutato - il passaggio ha riscontrato un problema e non è stato completato con successo.
      • fatto - il passaggio è stato completato.
    • notes - eventuali note aggiuntive relative al passaggio.
    • updated_at - l'ultima volta che lo stato del passaggio è stato aggiornato.

Ogni record di evasione corrisponde a un prodotto specifico o a una variante di prodotto all'interno dell'ordine e ogni copia del prodotto nell'ordine ha il proprio record di evasione: ogni articolo viene tracciato individualmente durante tutta la produzione.

Se per un ordine non vengono restituiti adempimenti, l'ordine non è ancora entrato nella fase di elaborazione.

COME FORNIRE I FILE DI STAMPA

Requisiti dei file sorgente

Quando includi source files nell’ordine, assicurati che rispettino i seguenti requisiti:

type

Devi fornire un file PDF come fonte. Se il tuo progetto contiene più livelli di prodotto, includi ciascun livello come una pagina separata nello stesso PDF. Durante l'elaborazione, ogni pagina viene trattata come un singolo livello, consentendoti di inviare un progetto multistrato come un unico file sorgente. See PDF requirements and page order.

type nell'oggetto di origine deve essere impostato su "file".

"sources": [
    {
        "type": "file",
        "url": "https://samples-files.com/samples/source.pdf"
    }
]

Per ulteriori dettagli, vedere Swagger documentation.

url

Il campo url deve contenere un collegamento diretto al file di origine. Assicurati che l'URL sia accessibile e che il file possa essere scaricato senza autenticazione. Il collegamento deve rimanere accessibile durante tutto il processo di produzione.

Formato file

Fornire file nel formato PDF. Assicurati che le immagini siano di alta qualità e adatte alla stampa.

Dimensioni dell'immagine

Le dimensioni massime sono 15,000 pixels su entrambi i lati. Le immagini che superano questo limite potrebbero essere ridimensionate o rifiutate. La risoluzione dell'immagine deve corrispondere alle dimensioni del prodotto; in caso contrario le immagini potrebbero essere ridimensionate o ritagliate per adattarle.

Risoluzione

Nessun requisito di risoluzione specifico: assicurati solo che la qualità dell'immagine sia sufficiente per la stampa.

Spazio colore

Le immagini devono essere nello spazio colore RGB per una rappresentazione accurata dei colori. Altri spazi colore verranno convertiti durante l'elaborazione, il che potrebbe risultare in colori errati.

Dimensioni del file

Ciascun file di origine non deve superare 50 MB. File più grandi potrebbero essere rifiutati o causare ritardi nell'elaborazione.

Requisiti PDF e ordine delle pagine

L'ordine delle pagine nel PDF è importante. Le pagine vengono abbinate ai livelli del prodotto in base alla posizione e l'ordine delle pagine previsto dipende dal tipo di prodotto. Assicurati che le pagine del tuo PDF seguano la sequenza di livelli corretta per il prodotto che stai inviando.

ProdottoOrdine delle pagine PDF
Duvet Cover
  1. Duvet cover
  2. Pillow front
  3. Pillow back
Curtains
  1. Left curtain
  2. Right curtain
T-shirt
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Tanktop
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Sweater
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Collar
  8. Waistband
Hoodie
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Hood inside left
  8. Hood inside right
  9. Hood outside left
  10. Hood outside right
  11. Waistband
  12. Pocket lower left
  13. Pocket lower right
  14. Pocket upper right
  15. Pocket upper left
Sweatpants
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Left cuff
  6. Right cuff
  7. Waistband
  8. Right pocket
  9. Left pocket
  10. Back pocket
  11. Back pocket interfacing
Sweatshorts
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Waistband
  6. Right pocket
  7. Left pocket

Importante: ogni pagina PDF deve corrispondere alle dimensioni richieste per il relativo livello di prodotto ed essere orientata correttamente. Posiziona il disegno in modo che la parte superiore del disegno sia allineata con la parte superiore della pagina. Dimensioni o orientamento della pagina errati possono causare problemi di ridimensionamento, rotazione o allineamento nella produzione.

PERSONALIZZAZIONE DEL PRODOTTO

Fabrixa Studio

Fabrixa Studio è uno strumento che consente agli utenti di personalizzare e personalizzare facilmente i prodotti in tempo reale con un'interfaccia intuitiva in cui gli utenti possono creare o caricare i propri progetti.

Fabrixa Studio è ideale per le aziende che offrono prodotti personalizzati, consentendo ai clienti di visualizzare i propri progetti prima di finalizzare gli ordini.

AGGIUNGI STUDIO AL TUO NEGOZIO

Incorpora Fabricxa Studio

Puoi incorporare Fabrixa Studio nel tuo sito usando un iframe. Questo permette ai clienti di personalizzare i prodotti direttamente sul sito durante il checkout.

Esempio di iframe per incorporare Fabrixa Studio:

<iframe id="fabrixa-studio"
    src="https://studio.fabrixa.com?application_key={application_key}&sku={product_sku}&cart_item_key={cart_item_key}"
    name="FabrixaStudio"
    scrolling="no"
    frameborder="1"
    width="100%"
    height="100%"
    allowfullscreen="">
</iframe>

Sostituisci i valori per product_sku, cart_item_key e application_key con i tuoi valori dinamici.

Richiesta di creazione di un ordine con cart_item_key

{
  "number": "NL2024010201",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "sku": "SB796162",
      "quantity": 1,
      "cart_item_key": "0cb76770-de2d-4524-aa48-47b6e5f0d8a5"
    }
  ],
  "customer": {
    "...": "..."
  },
  "shipping_address": {
    "...": "..."
  },
  "shipping_label": {
    "...": "..."
  }
}
ASCOLTA LE AZIONI DEI CLIENTI

Gestire gli eventi dello Studio

Quando si fa clic sul pulsante Aggiungi al carrello all'interno dell'iframe, viene eseguito il seguente comando:

window.parent.postMessage('customizationFinished', '*');

Allo stesso modo, quando si fa clic sul pulsante Indietro:

window.parent.postMessage('closeButtonClicked', '*');

Il metodo postMessage facilita la comunicazione multiorigine tra l'iframe e la sua finestra principale, consentendogli di notificare al genitore azioni specifiche dell'utente.

Il primo argomento di postMessage sono i dati che desideri inviare. La stringa 'customizationFinished' indica che l'utente ha finalizzato la personalizzazione e sta aggiungendo il prodotto al carrello. 'closeButtonClicked' indica che l'utente ha scelto di tornare indietro.

Nella finestra principale, ascolta questi messaggi utilizzando il listener di eventi message:

window.addEventListener('message', function(event) {
    if (event.origin === 'https://studio.fabrixa.com') {
        if (event.data === 'customizationFinished') {
            // Handle the Add to Cart event
            console.log('Customization finished and item can be added to cart.');
        } else if (event.data === 'closeButtonClicked') {
            // Handle the Back button event
            console.log('Back button clicked.');
        }
    }
});

Controlla sempre origin dei messaggi in arrivo per assicurarti che provengano da una fonte attendibile. A seconda del messaggio ricevuto, esegui le azioni necessarie: aggiorna l'interfaccia utente, elabora il carrello, ecc. La convalida di origin è fondamentale per la sicurezza: impedisce agli script non autorizzati di interagire con la tua applicazione.

MOSTRARE IL DISEGNO FINITO

Anteprima della personalizzazione

Una volta completata la personalizzazione, visualizza il progetto finale utilizzando l'URL di anteprima di seguito. Questo URL restituisce un'immagine del prodotto personalizzato, adatta come valore src in un tag <img>. Ideale per mostrare il prodotto personalizzato nel carrello, nel riepilogo dell'ordine o in qualsiasi punto dell'interfaccia del negozio.

https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}

Sostituisci {CART_ITEM_KEY} con la chiave effettiva dell'articolo del carrello e {APPLICATION_KEY} con la chiave dell'applicazione valida.

Esempio di utilizzo in un tag immagine:

<img
    src="https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}"
    alt="Customized Product Preview"
    style="max-width: 100%; height: auto;" />
PROVATELO CON I VOSTRI VALORI

Dimostrazione dal vivo

L’anteprima della personalizzazione apparirà qui al termine del design.

Customization preview
RICEVI AGGIORNAMENTI EVENTI

Webhook

I webhook vengono utilizzati da Fabrixa per notificare al tuo sistema eventi in tempo reale: aggiornamenti o creazioni di ordini. Quando si verifica un evento, Fabrixa invia un webhook al tuo server contenente le informazioni rilevanti. Il tuo server deve esporre un endpoint POST pubblico per gestire i webhook in entrata.

RIVEDI LE TUE INtestazioni IN ENTRATA

Intestazioni delle richieste webhook

La richiesta webhook include i seguenti header per aiutarti a identificare e validare la richiesta in ingresso:

{
  "content-type": "application/json",
  "x-webhook-signature": "YmEwNjBhMGMyMzE3ZWQ5NGQ5NDYwOGVhNzNhMjQ4M2MyODZkZmI3NTQ1YzYxYjdkMzNhZjgzYzBmMTkxYTAxMw==",
  "x-webhook-topic": "order.updated"
}
Ripartizione dell'intestazione
SCEGLI GLI ARGOMENTI DEL TUO EVENTO

Eventi webhook

I webhook Fabrixa notificano al tuo sistema cambiamenti nello stato ordine o nell’attività. Ogni webhook è attivato da uno specifico valore x-webhook-topic. Topic attualmente supportati:

ArgomentoDescrizione
order.created Si attiva quando viene effettuato un nuovo ordine in Fabrixa, tramite richiesta API o direttamente nella piattaforma.
order.updated Attivato quando i dettagli dell'ordine come lo stato dell'ordine o lo stato di evasione vengono aggiornati.

Stati degli ordini

Stati di adempimento

ISPEZIONA IL CARICO UTILE DEL TUO EVENTO

Esempio di payload del webhook

Un esempio del payload inviato con il webhook. Questo payload rappresenta un aggiornamento dell'ordine:

{
  "id": 23069,
  "number": "1250211835",
  "comments": null,
  "is_archived": false,
  "status": "imported",
  "fulfillment_status": "unfulfilled",
  "purchased_at": "2025-04-17T16:17:21.000000Z",
  "created_at": "2025-04-17T16:17:23.000000Z",
  "updated_at": "2025-04-18T07:43:52.000000Z",
  "rows": [
    {
      "id": 27954,
      "quantity": 1,
      "client_barcode": "1250211835",
      "fulfillment_status": "unfulfilled",
      "variant": {
        "id": 293457,
        "name": "Sherpa fleece deken",
        "subtitle": "100x150",
        "SKU": "SFD787231",
        "product": {
          "id": 5319,
          "name": "Sherpa fleece deken",
          "subtitle": "Sherpa fleece deken"
        }
      },
      "sources": [
        {
          "type": "print",
          "url": "https://storage.googleapis.com/fabrixa-api/storage/99b10aaa-df4d-47e4-9bc9-b1d6a785df4c/orders/merchandise-sources/120002795400.pdf",
          "properties": {
            "fill_style": "contain"
          }
        }
      ]
    }
  ]
}
VERIFICA LA TUA FONTE WEBHOOK

Verifica le firme dei webhook

Per assicurarti che la richiesta webhook sia autentica e non alterata, verifica l’header x-webhook-signature. Ricalcola la signature HMAC-SHA256 usando il raw request payload e la tua secret key, quindi confrontala con la signature ricevuta.

Esempio PHP grezzo

$payload = file_get_contents('php://input');
$yourSecret = 'your-secret-key';
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

if (!hash_equals($expectedSignature, $receivedSignature)) {
    http_response_code(403);
    exit('Invalid signature');
}

Esempio di Laravel

public function handle(Request $request)
{
    $yourSecret = 'your-secret-key';
    $payload = $request->getContent();
    $expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
    $receivedSignature = $request->header('x-webhook-signature');

    if (!hash_equals($expectedSignature, $receivedSignature)) {
        abort(403, 'Invalid signature');
    }

    // Continue processing...
}

Sostituisci $yourSecret con la tua chiave segreta condivisa. Utilizza sempre hash_equals per confrontare le firme per mitigare gli attacchi temporali.

E SE LA CONSEGNA NON RIESCE?

Tentativi del webhook

Per impostazione predefinita, i webhook vengono disabilitati dopo 10 tentativi di consegna non riusciti. Se l'endpoint restituisce uno stato non riuscito, ad esempio 404 o qualsiasi errore 5xx, il webhook riproverà per un totale di 10 volte. Se continua a restituire un codice di risposta non 2xx o non 3xx, verrà disattivato. Le risposte riuscite includono:

RESTITUIRE UNA RISPOSTA CHIARA

Risposta al webhook

Ti consigliamo vivamente che il tuo endpoint restituisca un codice di stato 200 OK il più rapidamente possibile per confermare la corretta ricezione del webhook. Sebbene qualsiasi risposta 2xx o 3xx sia considerata riuscita, 200 è quella più comunemente utilizzata e affidabile.

Per evitare timeout o nuovi tentativi di consegna, restituire 200 OK immediatamente e gestire l'elaborazione del payload del webhook in modo asincrono, ad esempio tramite un processo in background o una coda. Se l'endpoint impiega troppo tempo per rispondere, potrebbe essere considerato un errore anche se alla fine la risposta ha esito positivo.

Le risposte con codici di stato nell'intervallo 4xx o 5xx o timeout attiveranno nuovi tentativi in ​​base al meccanismo di nuovo tentativo.