# Cancelar OT

Las Órdenes de Trabajo pueden ser canceladas siempre que se encuentren en alguno de estos tres estados.&#x20;

* PENDIENTE
* PROYECTADA
* ASIGNADA

De esta forma cualquier OT que haya sido completada por el técnico o que se haya vencido no podrá ser cancelada. Se recibirá un 409 CONFLICT en tal caso.

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

#### Path Parameters

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

#### 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                                                                                                                                                                                                      |
| --------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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. Debido a que es una referencia débil. |
| cause<mark style="color:red;">\*</mark> | String    | Motivo de la cancelación. Max 500 caracteres                                                                                                                                                                     |

{% tabs %}
{% 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": "'cause' es un campo requerido de 500 caracteres máx."
    }
}
```

{% 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 una ot con este numero de wo_id: xxxx"
    }
}
```

{% endtab %}

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

```json
{
    "success": true,
    "data": {
        "wo_id": "9"   /* id identificador de la OT cancelada */
    }
}
```

{% endtab %}

{% tab title="409: Conflict La OT ya no puede ser cancelada" %}

```json
{
    "success": false,
    "error": {
        "status": 409,
        "type": "CONFLICT",
        "userMessage": "No se puede cancelar la OT cuando se encuentra en estado 'CERRADA_NO_CUMPLIDA'"
    }
}
```

{% endtab %}
{% endtabs %}

### Ejemplo de request

El endpoint nos permite, además de cancelar la OT, modificar sus etiquetas. Podría ser útil para dejar la OT con una identificación indicando que fue cancelada por determinado medio. Ej: "Cancelada por email" (Previamente debería estar creada esta etiqueta)

#### body

```json
{
    "cause": "No me encuentro en el domicilio por vacaciones",
    "labels_ids": [1,6],        /* Opcional */
}
```

**cause:** Requerido. Motivo de la cancelación

**labels\_ids:** Es opcional. En caso de no enviarse, la OT será cancelada y mantendrá las mismas etiquetas que tenia previamente. Si quisiera borrar sus etiquetas, entonces tendría que enviar un array vacio.

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

{% hint style="danger" %}
Recuerde que el valor de labels\_ids termina pisando el valor original de la OT. Con lo cual si quisieramos <mark style="color:red;">agregar</mark> una etiqueta, deberíamos primero [Obtener OT](/modulos/ordenes-de-trabajo/obtener-ot.md), para luego agregar al array de labels\_ids la nueva etiqueta y asi poder finalmente ejecutar este endpoint para cancelar la OT y agregarle dicha nueva etiqueta.
{% endhint %}

### Análisis de la respuesta

```json
{
    "success": true,
    "data": {
        "wo_id": "9"   /* id identificador de la OT cancelada */
    }
}
```

La respuesta solo indica que la OT fue cancelada.


---

# 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/modificar-ot/cancelar-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.
