# Obtener formulario

Los formularios en Persat pueden ser insertados tanto desde la web, la aplicación móvil, o desde la API. Una vez creados se les asigna un id único, mediante el cual podemos luego consultar su contenido.

Para obtener un formulario particular que ya ha sido insertado en Persat se debe realizar un GET como el que se muestra a continuación.

{% hint style="danger" %} <mark style="color:red;">**IMPORTANTE:**</mark> El id del formulario es un **string**, si bien hoy en día los ids de los formularios representan números, hay que considerar la posibilidad de que sean alfanuméricos a futuro.
{% endhint %}

<mark style="color:blue;">`GET`</mark> `https://api.persat.com.ar/v1/digital-forms/form_id`

#### Path Parameters

| Name                                       | Type   | Description                   |
| ------------------------------------------ | ------ | ----------------------------- |
| form\_id<mark style="color:red;">\*</mark> | String | Identificador del formulario. |

#### Headers

| Name                                            | Type   | Description     |
| ----------------------------------------------- | ------ | --------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer API\_KEY |

{% tabs %}
{% tab title="200: OK La consulta se ejecutó con éxito" %}

```json
{
    "success": true,
    "data": {
        "_id": "195",
        "created": "2022-05-18T15:36:27.000Z",
        "created_by_user_name": "Jose Lopez",
        "created_by_user_id": 34,
        "client": {
            "id": 12789,
            "name": "Logistica Lopez",
            "uid_client": "AABC9892"
        },
        "df_data": {
            "schema_id": 170,
            "results": {
                "last_updated": "2022-05-18T15:36:27.000Z",
                "formvalues": {
                    "FWA3VCpeS": "El cliente presenta nuestros productos en su vidriera",
                    "FWWucoyGH": 18,
                    "FWFFs0qST": "2022-04-07T00:00:00.000Z",
                    "FWgGz4CLd": "Cobrado"
                }
            }
        },
        "state": {
            "color": "RED",
            "deleted": false,
            "id": 27,
            "name": "Cancelado"
        },
    }
}
```

{% endtab %}

{% tab title="404: Not Found No se encontro el formulario requerido" %}

```json
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "No hay un formulario con este numero: 195"
    }
}
```

{% endtab %}
{% endtabs %}

### Analizando la Respuesta

```json
{
    "success": true,
    "data": {
        "_id": "195",
        "created": "2022-05-18T15:36:27.000Z",
        "created_by_user_name": "Jose Lopez",
        "created_by_user_id": 34,
        "client": {
            "id": 12789,
            "name": "Logistica Lopez",
            "uid_client": "AABC9892"
        },
        "df_data": {
            "schema_id": 170,
            "results": {
                "last_updated": "2022-05-18T15:36:27.000Z",
                "formvalues": {
                    "FWA3VCpeS": "El cliente presenta nuestros productos en su vidriera",
                    "FWWucoyGH": 18,
                    "FWFFs0qST": "2022-04-07T00:00:00.000Z",
                    "FWgGz4CLd": "Cobrado"
                }
            }
        },
        "state": {
            "color": "RED",
            "deleted": false,
            "id": 27,
            "name": "Cancelado"
        },
    }
}
```

**\_id:** Identificador del formulario. Es un string, si bien hoy en dia representa un número, puede ser modificado a futuro para ser alfanumerico.

**created:** Fecha de creación del formulario.&#x20;

{% hint style="info" %}
Si bien la fecha esta representada en UTC, hay que considerarla en <mark style="color:blue;">**horario local**</mark>. Esto se debe a un requerimiento de mantener la compatibilidad con una versión anterior de Persat. Entonces para el caso del ejemplo, y sin importar si soy un cliente de Argentina, Ecuador o México, la fecha mostrada representa el día 18 de Mayo de 2022 a las 15:36 hora de mi país

```
"created": "2022-05-18T15:36:27.000Z",
```

{% endhint %}

**created\_by\_user\_name:** Nombre del usuario que insertó el formulario. En caso que el formulario haya sido creado a través de la API, el valor será "Creado por Api"

**created\_by\_user\_id:** id del usuario nombrado arriba. En caso que el formulario haya sido creado a través de la API, el valor será -1

{% hint style="info" %}
El id de cada usuario se puede obtener en la pantalla de Usuarios y Permisos, presionando sobre el botón "Desarrolladores" en configuración de usuario.
{% endhint %}

<div align="left"><img src="https://3878285185-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LZX85SzYcp8wvaPjODD%2Fuploads%2FAhzORTaOw8rowuUXNtZj%2FFrame%202612888.png?alt=media&#x26;token=5d657bb2-4bd4-4111-9f83-3d7e01ca9ac6" alt=""></div>

**state:** Estado actual del formulario. Para ver la definción de sus propiedades, ver [Obtener estado](https://docs.api.persat.com.ar/modulos/formularios-digitales/estados-de-formulario/obtener-estado).

**client:** Datos del cliente en el que se encuentra el formulario

* **id:** Id interno. <mark style="color:red;">NO UTILIZAR</mark>. Preparar el sistema para incluso dejar de recibir este dato a futuro.
* **name:** Nombre del cliente
* **uid\_client:** Id del cliente. Es el que se utiliza como identificador de este cliente. Es un valor único.

**df\_data:** Datos del formulario

**df\_data.schema\_id:** Identificador del esquema (plantilla) del formulario. Por ejemplo: Puedo tener un formulario de "Nota de Pedido" y otro de "Encuesta". Para saber de que tipo de formulario estoy hablando es que se usa el schema\_id. Además, puede pasar que el formulario de "Nota de Pedido", tengas varias versiones dentro de Persat, con lo cual cada una de estas versiones es un schema\_id diferente.

{% hint style="info" %}
Para poder conocer los schema\_id de los formularios disponibles [Identificación de Formularios](https://docs.api.persat.com.ar/modulos/formularios-digitales/..#identificacion-de-los-formularios-y-sus-widgets)

También puede consultarlos mediante un endpoint de la API [Obtener esquema](https://docs.api.persat.com.ar/modulos/formularios-digitales/obtener-estructura-esquema-de-un-formulario)
{% endhint %}

**df\_data.results:** Datos del formulario

**df\_data.results.last\_updated:** Fecha de ultima modificación en **hora local**. Es decir, que se aplica el mismo criterio que para el created mencionado más arriba en esta misma sección.

**df\_data.results.formvalues:** Datos de cada uno de los componentes (widgets) del formulario. Cada tipo de formulario esta conformado por widgets de distinto tipo, como por ejemplo: Campo Texto, Campo Lista, Campo número, etc.&#x20;

Para el caso del ejemplo, se puede visualizar que el formulario cuenta con 4 widgets. A priori no se pude deducir exactamente que tipo de widget es cada uno, sin embargo podemos inferir que el widget con id FWFFs0qST es un CAMPO FECHA.&#x20;

```json
formvalues: {
    "FWA3VCpeS": "El cliente presenta nuestros productos en su vidriera", 
    "FWWucoyGH": 18, 
    "FWFFs0qST": "2022-04-07T00:00:00.000Z", 
    "FWgGz4CLd": "Cobrado"
}
```

{% hint style="info" %}
Dependiendo del tipo de widget, es el tipo de valor obtenido. Un widget de tipo Texto, contendrá un string, mientras que uno de tipo Numero contendra un number. Ver todos los widgets disponibles en la siguiente sección: [Tipos de Widgets](https://docs.api.persat.com.ar/modulos/formularios-digitales/tipos-de-widgets)
{% endhint %}

{% hint style="info" %}
Para conocer los Ids de los widgets [Identificación de Formularios](https://docs.api.persat.com.ar/modulos/formularios-digitales/..#identificacion-de-los-formularios-y-sus-widgets)
{% endhint %}
