# Formato de Respuesta

Todas las respuestas de la API respetan el formato descripto en esta página.

### Encabezado de la respuesta (header)

Los posibles codigos del header de las respuestas son los siguientes:

| Code | Status                   | Significado                                                                                                                                                            |
| ---- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 200  | OK                       | Operación realizada con éxito                                                                                                                                          |
| 401  | UNAUTHORIZED             | No autorizado para realizar la operación. Api key incorrecta                                                                                                           |
| 404  | NOT\_FOUND               | El recurso no existe. Ya sea porque la url en si no existe, o porque el recurso que estamos buscando no esta disponible. Por ej: Si buscamos un cliente que no existe. |
| 400  | BAD\_REQUEST             | Error en el formato de la consulta. Puede haber campos faltantes o con valores erroneos.                                                                               |
| 409  | CONFLICT                 | Conflicto con campos únicos. Por ej: Quiero crear un cliente con un número que ya posee otro cliente en el sistema.                                                    |
| 415  | UNSUPPORTED\_MEDIA\_TYPE | El único media type soportado es application/json                                                                                                                      |
| 500  | INTERNAL\_ERROR          | Error interno del servidor. Algo salió mal.                                                                                                                            |

### Contenido de la respuesta (body)

El contenido de las respuestas de la API se recibe en formato JSON, y tiene esta estructura genérica:

{% hint style="warning" %}
A excepción de los PDFs que pueden ser en formato binario
{% endhint %}

```json
{    
    "success": true,    
    "paging": {
        "offset": 0,
        "limit": 20,
        "result": 20,
        "total": 195
    },
    "data": {} || [{}, {}, ...],
    "error": {
        "status": 404,
        "type": "BAD_REQUEST",
        "userMessage": "El campo x es obligatorio"    
    }
}
```

‌No siempre estarán presentes todas las propiedades, depende de que tipo de pedido se haya realizado y el resultado del mismo. Se constituye por los siguientes elementos:‌

**success** - Presente en todas las respuestas. Indica `true` si la llamada ha sido procesada con éxito, `false` en caso contrario. Es útil para hacer un chequeo general más allá del status code del header y saber si la respuesta contiene las propiedades data o error.‌

**paging** - En las respuestas de pedidos GET a las colecciones, la propiedad paging nos indicará los límites del listado con datos útiles como `offset` (a partir de qué elemento inicia el listado), `limit` (la cantidad de elementos en el listado actual recibido), `result` (la cantidad total de elementos coincidentes con la búsqueda) y `total` (el total de elementos en la colección).‌

**data** - En las respuestas de pedidos GET a las colecciones, la propiedad `data` es un array con los elementos requeridos. En caso de que la colección esté vacía, será un array vacío. En las respuestas de pedidos GET a un elemento, la propiedad `data`será un objeto con todos los campos del elemento en cuestión.&#x20;

**error** - Aquí se indica el detalle del error. Cada error tiene un `status` que coincide con el status de la respuesta HTTP, un`type` que lo identifica y un `userMessage` con el mensaje textual que puede mostrarse al usuario.‌

Los valores de `type` pueden ser los siguientes:

| type                         | Description                                                                                                                                  |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **UNAUTHORIZED**             | El api key no existe o es inválido.                                                                                                          |
| **NOT\_FOUND**               | El recurso especificado no existe, puede ser porque el ID especificado no exista. O se este haciendo una consulta a un endpoint inexistente. |
| **BAD\_REQUEST**             | El pedido tiene una estructura inválida.                                                                                                     |
| **CONFLICT**                 | El recurso que se intentó crear entra en conflicto con uno existente.                                                                        |
| **UNSUPPORTED\_MEDIA\_TYPE** | El formato de datos indicado no es soportado.                                                                                                |
| **INTERNAL\_ERROR**          | Ocurrió un error interno del servidor.                                                                                                       |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.api.persat.com.ar/como-usar-la-api/respuestas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
