> For the complete documentation index, see [llms.txt](https://docs.api.persat.com.ar/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.persat.com.ar/modulos/ordenes-de-trabajo/insertar-ot/insertar-asignada.md).

# 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)
