> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.useopenwrench.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supplier API

> Acceso programático para proveedores: recibe órdenes de trabajo, programa llamadas de servicio, envía cotizaciones y facturas y gestiona el inventario.

La Supplier API de OpenWrench da a los proveedores de servicio acceso programático a su lado de la plataforma: recibir y actualizar órdenes de trabajo, programar y documentar llamadas de servicio, enviar cotizaciones y facturas, extraer datos de tiempo del técnico desde WrenchMode y gestionar compras e inventario.

## URL base

```text theme={null}
https://api.useopenwrench.com/api/external
```

Todos los endpoints del proveedor están bajo `/v1/supplier/`.

## Autenticación

Cada solicitud debe llevar **dos cabeceras**: `X-API-KEY` (tu clave de API, emitida por contacto de proveedor) y `OW-KEY` (el secreto compartido de OpenWrench emitido junto a ella). La clave delimita automáticamente cada solicitud a tu instalación: solo verás órdenes de trabajo, facturas y datos que te pertenezcan. Las solicitudes a las que les falte cualquiera de las cabeceras devuelven `401`.

```bash theme={null}
curl -H "X-API-KEY: <your-key>" -H "OW-KEY: <shared-secret>" \
  "https://api.useopenwrench.com/api/external/v1/supplier/ping"
```

Para obtener una clave de API y un secreto compartido, contacta a [support@useopenwrench.com](mailto:support@useopenwrench.com).

Las claves no expiran por sí solas. Para rotar una, solicita a soporte un nuevo par clave/secreto compartido, despliega el nuevo par y luego pide a soporte que revoque el antiguo.

## Límites de tasa

10 solicitudes por ventana de 20 segundos por clave. Al superarlo recibirás `429 Too Many Requests`: espera al menos 20 segundos antes de reintentar y espacia los trabajos en segundo plano (como exportaciones paginadas completas) para que se mantengan por debajo del límite.

## Mantener las órdenes de trabajo sincronizadas

La mayoría de las integraciones de proveedor existen para replicar la cola de órdenes de trabajo de OpenWrench en otro sistema. Construye eso sobre push, no sobre sondeo:

1. Registra un endpoint de [webhook](/es/supplier-api/webhooks). OpenWrench envía los eventos `workorder.create`, `workorder.status_update` y `workorder.new_note` a medida que ocurren.
2. En cada evento, obtén esa única orden de trabajo con `GET /v1/supplier/work_order/work_orders/{id}`.
3. Usa `GET /v1/supplier/work_order/work_orders` solo para la carga inicial única y para la conciliación ocasional, con un filtro estrecho y una página pequeña.

No sondees el endpoint de listado según un cronograma para descubrir trabajo nuevo o cambiado. Es la lectura más costosa de la API, es lenta en colas grandes y compite con tu trabajo real por el límite de tasa. Consulta [Órdenes de trabajo](/es/supplier-api/work-orders#leer-tu-cola) para los detalles.

## Envoltura de respuesta

Respuestas de una sola entidad:

```json theme={null}
{ "type": "WorkOrder", "data": { "...": "..." }, "status": "ok" }
```

Las respuestas de listado añaden un `count` total:

```json theme={null}
{ "type": "WorkOrder", "data": [ "..." ], "count": 42, "status": "ok" }
```

Errores:

```json theme={null}
{ "message": "Human-readable message", "type": "NotFoundException", "status": "error", "traceId": "abc123def45" }
```

`401` significa clave faltante o inválida; `400` cubre entrada inválida, filtros incorrectos y denegaciones de permisos; `429` es el límite de tasa.

## Paginación y filtrado

Los endpoints de listado aceptan `offset`, `limit` (por defecto 10, máx. 25), `sort_by` y `order` (`asc` | `desc`). Los parámetros de consulta adicionales se tratan como filtros de campo: pasa un nombre de campo con un valor (separa varios valores por coma) para filtrar el conjunto de resultados. Cada página de referencia lista sus filtros más destacados.

## Formatos de fecha

La mayoría de las marcas de tiempo son cadenas ISO 8601 con offset (por ejemplo `2026-08-14T13:05:22.000-07:00`); algunos campos de marca de tiempo de base de datos se serializan como `yyyy-MM-dd HH:mm:ss.S`. Las fechas simples son `yyyy-MM-dd`.

Cuando envíes fecha-hora, usa ISO 8601 con una `T` entre la fecha y la hora y un offset explícito. Un valor separado por espacio como `2026-09-10 10:43:00+00:00` no es ISO 8601 y se rechaza; envía `2026-09-10T10:43:00.000+00:00` en su lugar. UTC puede escribirse como `+00:00` o `Z`.

## Datos de tiempo del técnico

Los endpoints de WrenchMode exponen el tiempo de trabajo y conducción por técnico: `GET /v1/supplier/wrench_mode/events/analytics/{fromDate}/{toDate}` devuelve un resumen por técnico de conducción/trabajo/total (ventana limitada a 1 mes), y `GET /v1/supplier/wrench_mode/events` devuelve el registro bruto de eventos que lo respalda. Las expansiones de llamada de servicio (`/with_work_logs`, `/with_tech_details`) dan la historia por visita.

## Guías detalladas

Las guías de esta pestaña recorren cada parte de la API en profundidad, con payloads, modelos de estado y patrones de integración:

<CardGroup cols={2}>
  <Card title="Órdenes de trabajo" href="/es/supplier-api/work-orders" icon="clipboard-list">
    Recibir, aceptar o rechazar, estados de partes, ECD, adjuntos y notas.
  </Card>

  <Card title="Webhooks" href="/es/supplier-api/webhooks" icon="bolt">
    Trabajo nuevo, cambios de estado y notas del comprador enviados a tu endpoint.
  </Card>

  <Card title="Llamadas de servicio" href="/es/supplier-api/service-calls" icon="truck">
    Programar, hacer check-in, check-out y establecer el estado de finalización.
  </Card>

  <Card title="WrenchMode" href="/es/supplier-api/wrenchmode" icon="stopwatch">
    Analítica por técnico y el registro bruto de eventos de conducción/trabajo.
  </Card>

  <Card title="Cotizaciones y facturación" href="/es/supplier-api/quotes-and-invoicing" icon="file-invoice-dollar">
    Enviar propuestas, borradores de facturas y publicar con un PDF.
  </Card>

  <Card title="Compras e inventario" href="/es/supplier-api/purchasing-and-inventory" icon="boxes-stacked">
    Desde solicitudes de compra hasta órdenes y recibos, catálogos y stock.
  </Card>

  <Card title="Datos de referencia" href="/es/supplier-api/reference-data" icon="map-location-dot">
    Empresas compradoras, ubicaciones, activos y cómo funciona el enmascaramiento de datos.
  </Card>

  <Card title="Archivos y usuarios" href="/es/supplier-api/files-and-users" icon="paperclip">
    El almacén de archivos detrás de los adjuntos y el aprovisionamiento de técnicos.
  </Card>
</CardGroup>
