# Obtener servicios

> Cómo listar servicios filtrando por estado, código interno y fecha, y consultar el contenido completo de un servicio.

URL canónica: https://apis.cortecloud.com.br/docs/es/guias/integracao-erp/obter-servicos/

Un [servicio](https://apis.cortecloud.com.br/docs/es/comecando/conceitos.md#servico) es un pedido de piezas hecho en Cortecloud, y corresponde a un pedido en su ERP. El servicio queda visible para su integración a partir del presupuesto generado (`4`).

El flujo habitual es listar los servicios que le interesan al ERP y consultar cada uno para obtener el contenido completo. Para recibir un aviso de los cambios de estado en lugar de listar periódicamente, use [webhooks](https://apis.cortecloud.com.br/docs/es/guias/webhooks.md).

## Listar servicios {#listar-servicos}

Ruta: [`GET /services`](https://apis.cortecloud.com.br/docs/swagger#/Services/listServices).

El listado devuelve, para cada servicio, `id`, `internal_code` y el objeto `status` con el código del estado y las fechas de cada etapa. El contenido completo (piezas, materiales, valores) viene solo en la consulta individual.

Filtros aceptados en la query string:

| Parámetro | Uso |
| --- | --- |
| `status` | Códigos de estado separados por coma. Acepta `4`, `25`, `6`, `7` y `9` (ver [estado del servicio](https://apis.cortecloud.com.br/docs/es/comecando/conceitos.md#status-do-servico)); sin el filtro, trae todos ellos. Otros códigos se rechazan con `400`. |
| `internal_code` | Trae solo el servicio con ese código interno (el número del pedido en el ERP). Con el valor `null`, trae solo los servicios que todavía no tienen código interno. |
| `date_start`, `date_end` | Filtran por la fecha de la última modificación del servicio. `date_start` no puede ser posterior a `date_end`. |
| `limit`, `offset` | Paginación; ver [Errores, límites y paginación](https://apis.cortecloud.com.br/docs/es/comecando/erros-limites-paginacao.md#paginacao). |

Pasos:

1. Llame a `GET /services` con los filtros de su caso. Para buscar pedidos nuevos para el ERP, por ejemplo, combine `status=6` (aprobado) con `internal_code=null` (todavía sin pedido en el ERP).
2. Procese los ítems de `resource`.
3. Si `meta.next` no es nulo, repita la llamada con `offset` igual a `meta.next`. Esta ruta acepta 1 solicitud cada 5 segundos: espere entre una página y la siguiente.
4. Cuando `meta.next` llegue nulo, el listado terminó.

Ejemplo de respuesta:

```json
{
  "resource": [
    {
      "id": 123,
      "internal_code": null,
      "status": {
        "code": 6,
        "created_date": "…",
        "budgeted_date": "…",
        "purchased_date": "…",
        "authorized_date": null,
        "finished_date": null
      }
    }
  ],
  "meta": {
    "count": 1,
    "next": null
  }
}
```

Las fechas de `status` marcan cada etapa: creación (`created_date`), presupuesto generado (`budgeted_date`), aprobación (`purchased_date`), envío a producción (`authorized_date`) y fin de la producción (`finished_date`). Las etapas todavía no alcanzadas vienen nulas.

## Consultar un servicio {#consultar-um-servico}

Ruta: [`GET /services/{id}`](https://apis.cortecloud.com.br/docs/swagger#/Services/getService).

Devuelve el contenido completo del servicio:

| Campo | Contenido |
| --- | --- |
| `status`, `history` | Estado actual con las fechas de cada etapa y el historial de cambios de estado. El historial incluye solo los cambios a presupuesto generado (`4`), aprobado (`6`), enviado a producción (`7`) y producido (`9`). |
| `steps` | Fechas de las etapas de la producción: corte, aplicación de tapacanto, mecanizado, embalaje y despacho. |
| `client` | Código interno del carpintero en la central (el código del cliente en su ERP). |
| `labour` | Valores de mano de obra: corte, aplicación de tapacanto, mecanizado (con el resumen de perforaciones y ranuras), embalaje y flete. |
| `materials` | Tableros, tapacantos y componentes consumidos, con código interno, cantidad y precio. |
| `parts` | Lista de piezas: medidas, cantidad, tablero, tapacanto aplicado en cada lado, perforaciones y mecanizados. |

Los códigos internos de `materials` y `parts` son los mismos que su integración mantiene mediante las rutas de [materiales](https://apis.cortecloud.com.br/docs/es/guias/integracao-erp/materiais.md), lo que permite emparejar cada ítem del servicio con el ítem del ERP.

Responde `404` cuando no se encuentra el servicio. El formato completo de cada campo está en la [operación en Swagger](https://apis.cortecloud.com.br/docs/swagger#/Services/getService).

## Siguiente paso {#proximo-passo}

Después de registrar el pedido en el ERP, [asocie el código del pedido al servicio](https://apis.cortecloud.com.br/docs/es/guias/integracao-erp/atualizar-servicos.md).
