Run batches and import JSON or CSV through the API
Each operation is dispatched as a request of its own, so a batch is held to the same validation and permissions as the calls it contains. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
22
README.md
22
README.md
@@ -1348,6 +1348,28 @@ cliente en vez de comprobar nombres de rol.
|
||||
|
||||
Quien no tenga `pages.publish` solo ve páginas publicadas en el listado.
|
||||
|
||||
### Lotes e importación
|
||||
|
||||
```
|
||||
POST /api/v1/batch hasta 50 operaciones {method, path, body}; atomic
|
||||
POST /api/v1/import/{tipo} filas JSON (rows) o CSV (file); match, atomic, dry_run
|
||||
```
|
||||
|
||||
Cada operación de un lote pasa por el kernel HTTP como una petición propia con
|
||||
las credenciales de quien llama: se valida, se autoriza, cuenta para el límite
|
||||
de peticiones y responde igual que si llegara sola, así que un lote no puede
|
||||
hacer nada que sus operaciones no pudieran. [`BatchRunner`](app/Support/Batch/BatchRunner.php)
|
||||
no sabe qué es una página, y es justo lo que lo hace seguro. Con `atomic` va en
|
||||
una transacción y se para en el primer fallo deshaciéndolo todo; lo que ya salió
|
||||
de la base (un trabajo en cola, un aviso) no se deshace.
|
||||
|
||||
La importación convierte filas en esas mismas llamadas: con `id`, o con el
|
||||
campo de `match` (`slug`, `name`, `full_name`) apuntando a una ficha que existe,
|
||||
actualiza; si no, crea. En CSV, `title.es` rellena el título en castellano, una
|
||||
lista se escribe `1|2|3`, `true`/`false`/`null` son lo que dicen y una celda
|
||||
vacía se omite en vez de borrar lo que hubiera. Por defecto es todo o nada, y
|
||||
`dry_run` lo comprueba todo sin guardar nada.
|
||||
|
||||
### Búsqueda
|
||||
|
||||
`GET /api/public/v1/search?q=…` busca en lo que la web enseña —páginas,
|
||||
|
||||
Reference in New Issue
Block a user