# Insertar ASIGNADA

Para insertar una Orden de Trabajo en estado ASIGNADA, debemos hacer un request al siguiente endpoint

<mark style="color:green;">`POST`</mark> `https://api.persat.com.ar/v1/work-orders`

#### Headers

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

#### Request Body

| Name                                                                       | Type           | Description                                                                                                                                                                                   |
| -------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| uid\_client<mark style="color:red;">\*</mark>                              | String         | El número/identificador de cliente (es un valor alfanumérico). Es el cliente en el que queremos realizar el trabajo.                                                                          |
| wo\_data.schema\_id<mark style="color:red;">\*</mark>                      | Number         | Identificador de la plantilla/esquema de la OT que estamos insertando.                                                                                                                        |
| wo\_data.service\_time<mark style="color:red;">\*</mark>                   | Number         | Numero representando los minutos de duración estimado del trabajo                                                                                                                             |
| labels\_ids                                                                | Number\[]      | Array de numeros. Cada item representa una etiqueta que deberia estar creada en el sistema. De todas maneras, si no existe la etiqueta la consulta continua sin problemas.                    |
| wo\_data.instructions.formvalues<mark style="color:red;">\*</mark>         | JSON Object    | Valores de cada uno de los widgets del formulario de instrucciones                                                                                                                            |
| assignation\_info.date<mark style="color:red;">\*</mark>                   | String         | Fecha en formato yyyy-MM-ddT00:00:00.000Z. Notese que por mas que se envien las horas o minutos, no se tendran en cuenta. Lo que se usa es la Fecha. Sin importar en que país nos encontremos |
| assignation\_info.starts\_min<mark style="color:red;">\*</mark>            | Number         | numero representando los minutos transcurridos desde las 00:00 hs del día.                                                                                                                    |
| assignation\_info.responsibles\_required<mark style="color:red;">\*</mark> | Number         | Cantidad de tecnicos que requiere el trabajo. Min: 1                                                                                                                                          |
| responsibles<mark style="color:red;">\*</mark>                             | Array\<Number> | Array con los users\_ids de los tecnicos asignados a la OT. El tamaño del array debe coincidir con **assignation\_info.responsibles\_required**                                               |

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

```json
{
    "success": true,
    "data": {
        "_id": "13",
        "note_id": 299,
        "state": "ASIGNADA",
        "created": "2024-07-16T14:46:35.000Z",
        "created_by_user_name": "Creado por Api",
        "created_by_user_id": -1,
        "labels_ids": [],
        "client": {
            "id": 1,
            "name": "Fabrica de Motores",
            "uid_client": "AABC9098"
        },
        "wo_data": {
            "schema_id": 13,
            "wo_instance": null,
            "wo_rule_id": null,
            "service_time": 45,
            "instructions": {
                "formvalues": {
                    "FWRzVXA7e": "Revisar la caldera"
                }
            }
        },
        "assignation_info": {
            "date": "2024-07-16T00:00:00.000Z",
            "starts_min": 480,
            "responsibles_required": 1,
            "responsibles": [
                {
                    "user_id": 24,
                    "user_name": "tecnico@persat.com.ar"
                }
            ]
        }
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Error en alguno de los campos enviados. userMessage contiene informacipon adicional." %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'uid_client' es obligatorio y debe ser un string identificando al cliente"
    }
}
```

{% endtab %}

{% tab title="404: Not Found El cliente o el schema\_id no existen" %}

```javascript
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "No hay un cliente con este nro."
    }
}
```

{% endtab %}
{% endtabs %}

### Ejemplo de request

#### body

```json
{
    "uid_client": "AABC9098",
    "labels_ids": [1,6],        /* Opcional */
    "wo_data": {
        "schema_id": 452,
        "service_time": 45,
        "instructions": {        
            "formvalues": {    /* los fields de formvalues van a depender de cada schema */
                "FWRzVXA7e": "Revisar la caldera"
            }
        }         
    },
    "assignation_info": {
        "responsibles_required": 1,
        "date": "2022-04-26T00:00:00.000Z",
        "starts_min": 480,
        "responsibles": [24]    /* El largo del array debe coincidir con assignation_info.responsibles_required */
    }
}
```

Los campos se describen en [Obtener OT](/modulos/ordenes-de-trabajo/obtener-ot.md)

Algunas consideraciones durante la inserción:

**labels\_ids:** Es opcional. En caso de no enviarse, la OT será cargada con las etiquetas por defecto definidas en el schema\_id. Ahora si lo que quiero es que quede con ninguna etiqueta, entonces hay que enviar un array vacio.

```
"labels_ids": [],
```

**assignation\_info.responsibles.** Es un array de numbers obligatorio. Indica el user\_id de el/los técnico/s al que quiero asignar la OT. Para obtener la lista de técnicos disponibles, consulta [Listar Técnicos Activos](/entidades-basicas/usuarios/listar-tecnicos-activos.md)

### Análisis de la respuesta

```json
{
    "success": true,
    "data": {
        "_id": "13",
        "note_id": 299,
        "state": "ASIGNADA",
        "created": "2024-07-16T14:46:35.000Z",
        "created_by_user_name": "Creado por Api",
        "created_by_user_id": -1,
        "labels_ids": [],
        "client": {
            "id": 1,
            "name": "Fabrica de Motores",
            "uid_client": "AABC9098"
        },
        "wo_data": {
            "schema_id": 13,
            "wo_instance": null,
            "wo_rule_id": null,
            "service_time": 45,
            "instructions": {
                "formvalues": {
                    "FWRzVXA7e": "Revisar la caldera"
                }
            }
        },
        "assignation_info": {
            "date": "2024-07-16T00:00:00.000Z",
            "starts_min": 480,
            "responsibles_required": 1,
            "responsibles": [
                {
                    "user_id": 24,
                    "user_name": "tecnico@persat.com.ar"
                }
            ]
        }
    }
}
```

Los campos se describen en [Obtener OT - Asignada](/modulos/ordenes-de-trabajo/obtener-ot/asignada.md)


---

# 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/insertar-ot/insertar-asignada.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.
