# Obtener OT

Las órdenes de trabajo en Persat, pueden ser creadas tanto desde la web como desde la API. Una vez creadas se les asigna un id unico, mediante el cual podemos luego consultar su contenido.

Para obtener una OT particular se debe realizar un GET como el que se muestra a continuación.

{% hint style="danger" %} <mark style="color:red;">**IMPORTANTE:**</mark> El id de la OT es un **string**, si bien hoy en día los ids 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/work-orders/wo_id`

#### Path Parameters

| Name                                     | Type   | Description                           |
| ---------------------------------------- | ------ | ------------------------------------- |
| wo\_id<mark style="color:red;">\*</mark> | String | Identificador de la Orden de Trabajo. |

#### 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" %}

{% endtab %}

{% tab title="404: Not Found No se encontro la OT" %}

```json
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "No hay una ot con este numero de wo_id: 14312313213d"
    }
}
```

{% endtab %}
{% endtabs %}

### Analizando la Respuesta

```json
{
    "success": true,
    "data": {
        "_id": "134",            
        "note_id": 603,
        "state": "PROYECTADA",
        "created": "2022-05-20T10:14:44.000Z", 
        "created_by_user_name": "usuario@empresa.com.ar",
        "created_by_user_id": 28,
        "labels_ids": [
            1,
            2
        ],
        "client": {
            "id": 10216,
            "name": "Fabrica de Motores",
            "uid_client": "CL3213L"
        },
        "wo_data": {
            "schema_id": 452,
            "wo_instance": null,
            "wo_rule_id": null,
            "service_time": 45,
            "instructions": {
                "formvalues": {
                    "FWMg5UsWo": "Revisar las tejas",
                    "FWcimEHVv": "Cobrar",
                    "FWXyxyhlj": 250.3     
                }
            }
        },
        "assignation_info": {
            "date": "2022-05-20T00:00:00.000Z",
            "starts_min": 480,
            "responsibles_required": 1,
            "responsibles": []
        }
    }
}
```

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

{% hint style="danger" %}
Existe un caso particular en donde el <mark style="color:red;">\_id = -1.</mark>&#x20;

Esto solo va a ocurrir cuando sucedan dos cosas:

1. Estemos usando las OTs repetitivas de Persat. Esas OTs que se generaron a partir de una regla, como "Repetir cada dos semanas los dias miercoles",
2. Hagamos una consulta del tipo [Listar OTs](/modulos/ordenes-de-trabajo/listar-ots.md), en donde por ejemplo pedimos las OTs de fechas futuras

Luego, las OTs que son generadas por reglas, no tienen \_id definido hasta que "ocurran". La forma de identificarlas es por medio de los fields **wo\_data.wo\_rule\_id** y **wo\_data.wo\_instance,** que son explicados mas abajo
{% endhint %}

**note\_id**: <mark style="color:red;">**NO USAR**</mark>. Valor interno usado por Persat. Tener en cuenta que es posible que a futuro no se reciba mas este valor.

**created:** Fecha de creación de la OT hora local. No tiene relación con la fecha de asignación del trabajo.&#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, Ecuardor o Mexico, la fecha mostrada representa el día 20 de Mayo de 2022 a las 10:14 AM hora de mi país

```
"created": "2022-05-20T10:14:44.000Z",
```

{% endhint %}

**created\_by\_user\_name:** Nombre del usuario que creó la OT. Los nombres de usuario en Persat son emails. En el caso que haya sido creada a través de la API se recibirá "Creado por Api"

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

{% hint style="info" %}
Para poder ver los ids de cada uno de los usuarios, verificá la sección [Obtener Formulario](/modulos/formularios-digitales/obtener-formulario.md), en donde también se utiliza el campo "**created\_by\_user\_id"**
{% endhint %}

**labels\_ids:** Array de numbers, identificando etiquetas previamente creadas en Persat.

{% hint style="info" %}
Es una "referencia débil" a las etiquetas, es decir que puede que no existan a la hora de hacer la consulta, debido a que el usuario administrador de Persat las sacó del sistema, o las modificó por otras.
{% endhint %}

**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.

**wo\_data:** Datos de la Orden de Trabajo

**wo\_data.schema\_id:** Identificador del esquema (plantilla) de la OT. Por ejemplo: Puedo tener una OT para realizar un "Presupuesto" y otra para hacer un trabajo de "Desratización". Para saber de que tipo de OT estoy hablando es que se usa el schemaid. El valor del schema\_id incluso cambia entre versión y versión del mismo tipo de OT.

{% hint style="info" %}
Para poder conocer los schema\_id de las OTs disponibles [Indetificación de OTs y widgets](/modulos/ordenes-de-trabajo.md#identificacion-de-las-ordenes-de-trabajo-y-sus-widgets)

También puede obtener el esquema con el endpoint [Obtener estructura/esquema de un Tipo de OT](/modulos/ordenes-de-trabajo/obtener-estructura-esquema-de-un-tipo-de-ot.md)
{% endhint %}

**wo\_data.wo\_rule\_id:** Si la OT fue creada por una regla de repetición, entonces este es el identificador de la regla. Por ejemplo, una regla puede ser que la OT se cree "todos los miercoles cada 2 semanas". En caso que no sea una OT generada por repetición, el valor será null.

**wo\_data.wo\_instance:** Siendo la OT generada por una repetición, entonces este numero indicará el nro de repetición comenzando desde 1. Siguiendo con el ejemplo del párrafo anterior, el primer miercoles el valor será 1, el miercoles pasadas las 2 semanas el valor será 2 y asi continuando. En caso que no sea una OT generada por repetición, el valor será null.

{% hint style="info" %}
Las reglas de repetición solo pueden ser creadas desde la web de Persat con un usuario que tenga los permisos adecuados para tal acción.
{% endhint %}

**wo\_data.service\_time:** Valor en minutos de la duración estimada para realizar el trabajo.

**wo\_data.instructions**: Contiene el field formvalues que se explica a continuación. Sin embargo puede no estar definido dependiendo el estado de la OT. Ver ejemplos en las subsecciones posteriores.

**wo\_data.instructions.formvalues:** Datos de las instrucciones que le llegan al técnico en su celular. Se usa para indicar que tipo de trabajo realizar.

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 3 widgets. A priori no se pude deducir exactamente que tipo de widget es cada uno, sin embargo podemos inferir que el widget con id FWXyxyhlj es un CAMPO NUMERO

```json5
formvalues: {
    "FWMg5UsWo": "Revisar las tejas",
    "FWcimEHVv": "Cobrar",
    "FWXyxyhlj": 250.3     
}
```

{% hint style="info" %}
Dependiendo del tipo de widget, es el tipo de valor. 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](/modulos/formularios-digitales/tipos-de-widgets.md)

En cuanto a conocer la identificación de cada uno de los widgets: [Identificación de los Widgets en OTs](/modulos/ordenes-de-trabajo.md#identificacion-de-las-ordenes-de-trabajo-y-sus-widgets)
{% endhint %}

{% hint style="danger" %}
El formulario de Instrucciones en las Ordenes de Trabajo tiene algunas limitaciones en cuanto a los componentes (widgets) que se pueden utilizar. Ver [Widgets habilitados](/modulos/ordenes-de-trabajo.md#widgets-habilitados-para-formulario-de-instrucciones)
{% endhint %}

**wo\_data.assignation\_info:** Objeto JSON con datos respecto a la asignación de la OT. No todos los campos estan presentes, ya que dependen del estado de la OT. Ver ejemplos en las siguientes subsecciones.

**wo\_data.assignation\_info.date :** Fecha en que debe realizarse el trabajo

{% 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, Ecuardor o Mexico, la fecha mostrada representa el día 20 de Mayo de 202&#x32;**.**

No contiene horas, minutos segundos ni milisegundos, porque representa el día. Es decir que la OT esta definida para hacerse el día 20 de Mayo. Los datos del horario se obtienen de starts\_min

```
"...assignation_info.date": "2022-05-20T00:00:00.000Z",
```

{% endhint %}

**wo\_data.assignation\_info.starts\_min :** Number representando los minutos transcurridos desde las 00:00 hs del día. Para el caso del ejemplo 480 representa las 08:00 AM.

**wo\_data.assignation\_info.responsibles\_required:** Number que indica la cantidad de técnicos necesaros para el trabajo. Valor mínimo 1.

**wo\_data.assignation\_info.responsibles:** Array de objetos JSON. Puede estar vacío como en el caso de este ejemplo. Pero si la OT estuviese asignada el objeto tendria estos fields indicando los tecnicos responsables.

```json
"responsibles": [
    {
        "user_id": 28,
        "user_name": "jose@empresa.com.ar"
    }, {...}
    ]
```

{% hint style="info" %}
En caso que haya más de un responsable, el item con indice 0 del array (el primero en el array) es el responsable principal, y los otros técnicos serían los acompañantes.
{% endhint %}


---

# 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/modulos/ordenes-de-trabajo/obtener-ot.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.
