FISCALISTO / API
Expandir objetos
Pida con expand[] que los ids de otros objetos lleguen como esos objetos, en la misma respuesta, sin una llamada más por cada uno.
Muchos objetos guardan el id de otro: una factura tiene su issuer y su recurring_invoice, una factura recurrente su last_invoice, un ticket su invoice. Con expand[] ese id llega como el objeto completo, en la misma respuesta:
curl "https://api.fiscalisto.com/v1/invoices/inv_OufpKqnrvx9p1?expand[]=issuer&expand[]=recurring_invoice" \
-H "Authorization: Bearer $FISCALISTO_API_KEY"{
"id": "inv_OufpKqnrvx9p1",
"object": "invoice",
"issuer": { "id": "iss_OufpKqnrvx9p", "object": "issuer", "legal_name": "ESCUELA KEMPER URGATE", "…": "…" },
"recurring_invoice": { "id": "rin_OufpKqnrvx9p1", "object": "recurring_invoice", "…": "…" }
}Sin expand[], los ids siguen siendo ids.
Cómo se escribe
- Un parámetro
expand[]por campo (expand[]=issuer&expand[]=invoice), o varios separados por comas (expand=issuer,invoice). - Con puntos se entra a un objeto expandido:
expand[]=recurring_invoice.last_invoice. Hasta 4 niveles. - En una lista, cada elemento se expande:
expand[]=data.issuer, o soloexpand[]=issuer. - Hasta 10 campos por solicitud, y hasta 200 objetos por respuesta (cada id se lee una vez, aunque se repita en la página).
- Sirve en
GETy enPOST:POST /v1/products?expand[]=issuercontesta el producto creado con su emisor.
Se expande cualquier campo que guarda el id de otro objeto (iss_, inv_, cus_, prd_, rin_, quo_, tkt_, btx_, emp_, ret_, bat_, sdl_, sat_, stc_, cdr_, whe_, evt_, sbx_). Cada objeto se lee con su misma llave, como lo haría su GET: una llave restringida a ciertos emisores no ve nada fuera de ellos.
Un campo que la respuesta no tiene, o que no es el id de otro objeto, responde 400 con expand_invalid en un GET. En un POST lo que pidió ya se hizo, así que la respuesta llega sin expandir. Si el objeto ya no existe, queda su id. Un campo en null se queda en null.
En los SDKs
const invoice = await fiscalisto.invoices.get("inv_…", { expand: ["issuer", "recurring_invoice"] });invoice = fiscalisto.invoices.get("inv_…", expand=["issuer", "recurring_invoice"])$invoice = $fiscalisto->invoices->get('inv_…', [], ['expand' => ['issuer', 'recurring_invoice']]);Los tipos de los SDKs dicen el id (issuer: string); con expand el campo trae el objeto. En Go, Java y .NET, que convierten cada campo a su tipo, lea el objeto relacionado con su propio get.