Ves al contingut

Convencions de l'API ​

Regles comunes de format, paginació, filtres, idempotència i valors per defecte.

Base i format ​

Base URL:  https://api.test.bilteo.com/api/v1
  • HTTPS i JSON (Content-Type: application/json).
  • Authorization: Bearer bk_live_… o Bearer bo_at_…; consulta Autenticació.
  • Els IDs de Bilteo són UUID. Per usar els teus, consulta external_id.

Imports decimals com a text ​

Imports i quantitats viatgen com a string per evitar pèrdua de precisió:

json
{ "quantity": "1", "unit_price": "100.00", "discount": "10" }

Dates ​

  • Dates d'operació: YYYY-MM-DD.
  • Marques de temps: RFC 3339 en UTC, per exemple 2026-01-15T10:00:00Z.

Paginació per cursor ​

Els llistats retornen:

json
{
  "data": [],
  "next_cursor": "AAECAwQFBgcICQoLDA0ODw",
  "has_more": true
}

limit accepta d'1 a 100 resultats i val 50 per defecte. A la petició següent, envia next_cursor com a ?cursor= fins que has_more sigui false.

El cursor és opac

No el processis ni el construeixis. Un cursor invàlid retorna 400 (pagination.invalid_cursor).

Filtres ​

Els filtres es combinen entre ells i amb la paginació:

RecursFiltres principals
/invoicesstate, type, partner_id
/external-invoicesstate, external_id
/verifactu-recordsinvoice_id, state
/partnerstype, is_active, search, external_id
/productsis_active, search, external_id
/seriestype, is_active
/taxestype, tax_use, is_active
/economic-activitiesis_active

search fa una coincidència parcial; external_id és exacte i únic per tenant. La referència de l'API defineix tots els valors admesos.

Idempotència ​

MecanismeObjectiuAbast
Idempotency-KeyEvitar duplicats en reintentar una escriptura24 h, per petició
external_idEnllaç permanent entre el teu registre i BilteoPersistent, per recurs

Reintents segurs amb Idempotency-Key ​

Envia una clau opaca nova per operació lògica:

bash
curl -X POST "https://api.test.bilteo.com/api/v1/external-invoices" \
  -H "Authorization: Bearer bk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7e9f…-uuid-per-operacio" \
  -d '{ "numero": "1", "fecha_expedicion": "2026-06-13", "tipo_factura": "F1" }'
SituacióResultat
Mateixa clau i cos ja processatsRepeteix la resposta amb Idempotent-Replayed: true.
Mateixa clau encara en procés409 idempotency.request_in_progress.
Mateixa clau amb un altre cos422 idempotency.key_reused_with_different_body.

La capçalera és opcional. Reutilitza una clau només per reintentar exactament la mateixa operació.

Sincronització per external_id ​

partners i products accepten el teu identificador, únic per tenant. Pots adreçar-los amb …/by-external-id/{external_id}:

OperacióRuta
Crear o actualitzarPUT /partners/by-external-id/{ext}
LlegirGET /partners/by-external-id/{ext}
Actualitzar parcialmentPATCH /partners/by-external-id/{ext}
EliminarDELETE /partners/by-external-id/{ext}
CercarGET /partners?external_id={ext}

El PUT convergeix al mateix estat: retorna 201 quan crea i 200 quan actualitza. El patró és idèntic per a /products.

bash
curl -X PUT "https://api.test.bilteo.com/api/v1/partners/by-external-id/CLI-00042" \
  -H "Authorization: Bearer bk_live_xxx" -H "Content-Type: application/json" \
  -d '{ "type": "com", "name": "Comercial Aldealta SL", "id_num": "B85447761", "country": "ES" }'

external_id és persistent; Idempotency-Key només protegeix un reintent puntual. Per esborrar external_id en un PATCH, envia una cadena buida.

Valors per defecte: sèrie, activitat i moneda ​

CampCascada
Activitat econòmicaL'única activa → default del tenant → primera activa.
SèrieDefault de l'activitat per al tipus → primera sèrie del tipus.
MonedaDefault del tenant → EUR.

Envia aquests camps només quan necessitis fixar un valor concret.

Codis HTTP ​

CodiQuan
200Operació correcta.
201Recurs creat.
204Operació correcta sense cos.
400Petició o camps invàlids.
401Credencial absent, invàlida o caducada.
403Falta l'scope o el recurs no és editable.
404El recurs no existeix al tenant.
409Conflicte amb l'estat o un identificador.
422L'operació no es pot completar.

Consulta el sobre comú a Errors.

Bilteo · Documentació