Documentazione API

Integra le funzionalità di Shippidu direttamente nel tuo sistema.

Introduzione

Le API REST di Shippidu permettono di gestire ordini, spedizioni e corrieri in modo programmatico. Tutte le risposte sono nel formato standard JSON.

Base URL: https://app.shippidu.com/api/v1
Encoding: UTF-8
Format: application/json

Autenticazione

L'autenticazione avviene tramite Bearer Token nell'header della richiesta. Puoi generare le chiavi API direttamente dal pannello impostazioni di Shippidu.

Authorization: Bearer shpd_sk_test_123456789

POST/api/v1/orders

Crea un nuovo ordine nel sistema. Il corriere viene assegnato automaticamente se sono configurate regole di spedizione.

Scope richiesto: orders:write

Request

POST https://app.shippidu.com/api/v1/orders
Authorization: Bearer shpd_sk_your_key
Content-Type: application/json

Body di esempio:

{
  "externalId": "ORD-12345",
  "buyerName": "Mario Rossi",
  "buyerEmail": "mario@esempio.it",
  "buyerUsername": "mario_rossi_99",
  "paymentStatus": "pagato",
  "total": 49.99,
  "currency": "EUR",
  "orderDate": "2026-03-09T10:00:00Z",
  "shipByDate": "2026-03-11T10:00:00Z",
  "items": [
    {
      "title": "Prodotto A",
      "sku": "SKU-001",
      "quantity": 2,
      "unitPrice": 24.99,
      "imageUrl": "https://cdn.esempio.it/prodotto-a.jpg",
      "shipByDate": "2026-03-11T10:00:00Z"
    }
  ],
  "shippingAddress": {
    "recipientName": "Mario Rossi",
    "address1": "Via Roma 1",
    "address2": "Interno 3",
    "city": "Milano",
    "province": "MI",
    "postalCode": "20121",
    "countryCode": "IT",
    "phone": "+39 02 1234567",
    "email": "mario@esempio.it"
  }
}

Campi — radice

CampoTipoRichiestoDescrizione
buyerNamestringOBBLIGATORIONome e cognome dell'acquirente
totalnumberOBBLIGATORIOImporto totale (positivo)
itemsarrayOBBLIGATORIOMinimo 1 articolo
shippingAddressobjectOBBLIGATORIOIndirizzo di spedizione
externalIdstringopzionaleID ordine nel tuo sistema. Se omesso viene generato automaticamente
buyerEmailstringopzionaleEmail dell'acquirente
buyerUsernamestringopzionaleUsername/nickname dell'acquirente sul canale originale (es. nick eBay, handle Shopify)
paymentStatusstring (enum)opzionaleStato del pagamento. Valori: in_attesa, pagato, fallito, rimborsato. Default: pagato
orderDatestring ISO8601opzionaleData ordine. Default: ora corrente
shipByDatestring ISO8601opzionaleData entro cui spedire l'intero ordine
currencystring 3 charopzionaleCodice valuta ISO 4217. Default: EUR

Campi — items[]

CampoTipoRichiestoDescrizione
titlestringOBBLIGATORIONome del prodotto
quantityintegerOBBLIGATORIOQuantità (minimo 1)
unitPricenumberOBBLIGATORIOPrezzo unitario (maggiore o uguale a 0)
skustringopzionaleCodice SKU del prodotto
imageUrlstring URLopzionaleURL immagine del prodotto (deve usare https://). Mostrata nel dashboard
shipByDatestring ISO8601opzionaleData spedizione prevista per questo specifico articolo

Campi — shippingAddress

CampoTipoRichiestoDescrizione
recipientNamestringOBBLIGATORIONome del destinatario
address1stringOBBLIGATORIOIndirizzo principale
citystringOBBLIGATORIOCittà
postalCodestringOBBLIGATORIOCAP
countryCodestring 2 charOBBLIGATORIOCodice paese ISO 3166-1 alpha-2 (es. IT)
address2stringopzionaleIndirizzo secondario (interno, scala, ecc.)
provincestringopzionaleProvincia o stato
phonestringopzionaleTelefono del destinatario
emailstringopzionaleEmail del destinatario, usata dai corrieri per notifiche di consegna

Response 201 Created

{
  "data": {
    "id": 1042,
    "externalId": "ORD-12345",
    "marketplace": "api",
    "status": "da_spedire",
    "paymentStatus": "pagato",
    "buyerName": "Mario Rossi",
    "buyerEmail": "mario@esempio.it",
    "buyerUsername": "mario_rossi_99",
    "total": "49.99",
    "currency": "EUR",
    "carrierIntegrationId": 3,
    "orderDate": "2026-03-09T10:00:00.000Z",
    "shipByDate": "2026-03-11T10:00:00.000Z",
    "shippingAddress": {
      "recipientName": "Mario Rossi",
      "address1": "Via Roma 1",
      "city": "Milano",
      "postalCode": "20121",
      "countryCode": "IT",
      "email": "mario@esempio.it"
    },
    "items": [
      {
        "title": "Prodotto A",
        "sku": "SKU-001",
        "quantity": 2,
        "unitPrice": "24.99",
        "imageUrl": "https://cdn.esempio.it/prodotto-a.jpg",
        "shipByDate": "2026-03-11T10:00:00.000Z"
      }
    ]
  }
}

carrierIntegrationId — presente se il merchant ha regole di spedizione configurate e una di esse corrisponde all'ordine. Se null, il corriere può essere assegnato manualmente dal dashboard.

buyerUsername — corrisponde al campo externalUsername nel sistema interno. Utile per tracciare ordini migrati da altri marketplace o sistemi esterni.

paymentStatus — se omesso nella richiesta, il valore predefinito è "pagato".

GET/orders

Recupera una lista paginata di ordini.

Query Parameters

  • page (int) - Numero di pagina (default 1)
  • limit (int) - Elementi per pagina (max 100)
  • status (string) - Filtra per stato (es. 'shipped')
curl -G https://app.shippidu.com/api/v1/orders \
  -H "Authorization: Bearer shpd_sk_your_key" \
  -d "limit=10&status=pending"

GET/orders/:id

Recupera i dettagli completi di un singolo ordine specifico.

PATCH/orders/:id

Aggiorna uno o più campi di un ordine esistente.

curl -X PATCH https://app.shippidu.com/api/v1/orders/ord_123 \
  -H "Authorization: Bearer shpd_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "annullato" }'

Errori

L'API usa i codici di stato HTTP convenzionali per indicare il successo o il fallimento di una richiesta.

CodiceSignificato
400Bad Request – Parametri non validi
401Unauthorized – Token non valido o mancante
403Forbidden – Scope insufficiente
404Not Found – Risorsa non trovata
429Too Many Requests – Rate limit superato
500Server Error – Errore interno

Rate Limits

Per garantire stabilità al servizio, applichiamo un limite di 1.000 richieste per ora per singola chiave API. In caso di superamento, l'API risponderà con un codice 429.

Scopes

Quando generi una chiave API, puoi limitare il suo accesso associando specifici scope. Attualmente supportiamo:

  • orders:read - Permette di leggere ordini.
  • orders:write - Permette di creare o modificare ordini.