# Resumen de la API de Customer Journey

La API de Customer Journey permite a un backend gestionar [Customer Journeys](/es/product/customer-journey/pushwoosh-journey-overview/) programáticamente: crear y editar definiciones de journeys, mover los journeys a través de su ciclo de vida (iniciar, pausar, finalizar, borrador, archivar), activar un journey en ejecución desde sus propios sistemas y extraer estadísticas por journey.

Es la misma API que utiliza el constructor de Customer Journey, expuesta sobre REST/JSON a través de un puente gRPC-Gateway.

## URL base

```
https://journey.pushwoosh.com
```

<Aside type="tip">
Si utiliza una región dedicada o un despliegue privado, confirme la URL base exacta con su Customer Success Manager de Pushwoosh.
</Aside>

## Autenticación

Cada solicitud debe incluir un encabezado `Authorization` con un [token de acceso a la API](/es/developer/api-reference/api-access-token/#server-api-token) de Pushwoosh del lado del servidor:

```
Authorization: Api YOUR_API_TOKEN
```

<Aside type="note">
El token está vinculado a la cuenta que lo posee. Todas las operaciones se aplican a esa cuenta. Use el mismo token que emite para otras llamadas a la API de servidor a servidor, y nunca lo exponga en aplicaciones cliente.
</Aside>

## Métodos

### Gestionar journeys

- [Ciclo de vida](/es/developer/api-reference/customer-journey-api/lifecycle/): `POST /api/v3/journeygateway/{action}`. Inicie, pause, finalice, ponga en borrador o archive un journey por su UUID.
- [Crear y actualizar](/es/developer/api-reference/customer-journey-api/create-update/): `POST /api/v3/journeygateway` y `PUT /api/v3/journeygateway/{uuid}`. Cree una nueva definición de journey o reemplace una existente.

### Activar journeys

- [Iniciar por API](/es/developer/api-reference/customer-journey-api/start-by-api/): `POST /api/journey/{id}/start/external`. Inyecte usuarios en el punto de entrada de la API de un journey que ya está en ejecución.

### Estadísticas y audiencia

- [Obtener estadísticas del Journey](/es/developer/api-reference/customer-journey-api/statistics/): `GET /api/journey/{id}/statistics/external`. Métricas de entrega y conversión por punto.
- [Eliminar usuarios de journeys](/es/developer/api-reference/customer-journey-api/drop-users/): `POST /api/journey/drop-users/external`. Elimine usuarios de todos los journeys activos o de algunos seleccionados.

### Referencia

- [Objeto Journey](/es/developer/api-reference/customer-journey-api/journey-object/): la forma de la definición del journey (info, params, points, comments) devuelta por los métodos de ciclo de vida, creación y actualización.
- [Referencia de punto](/es/developer/api-reference/customer-journey-api/point-reference/): la estructura `point_data` para cada tipo de punto: elementos de entrada, tiempo, división, acción y mensajería.

## Inicio del ciclo de vida vs. Iniciar por API

Customer Journey tiene dos operaciones que suenan similares pero se comportan de manera diferente.

[El inicio del ciclo de vida](/es/developer/api-reference/customer-journey-api/lifecycle/#endpoints) cambia el estado del journey (por ejemplo, de Borrador a **En ejecución**).
[Iniciar por API](/es/developer/api-reference/customer-journey-api/start-by-api/) inyecta usuarios en un journey que ya está en ejecución. La siguiente tabla los compara.

| | Inicio del ciclo de vida | Iniciar por API |
|---|---|---|
| Endpoint | `POST /api/v3/journeygateway/start` | `POST /api/journey/{id}/start/external` |
| Qué hace | Activa el journey y lo mueve al estado **En ejecución** | Inyecta usuarios en el **punto de entrada de la API** de un journey que ya está en ejecución |
| Estado del journey requerido | Borrador o Pausado | En ejecución (con un punto de Inicio de API) |
| Frecuencia de ejecución | Una vez por cambio de estado | Repetidamente, a medida que los usuarios necesitan entrar |

## Formato de solicitud y respuesta

- Tipo de contenido: `application/json`.
- Los nombres de campo de `v3` usan `snake_case`. Los valores de Enum se serializan como sus nombres de cadena (por ejemplo, `"STATUS_RUNNING"`, `"POINT_TYPE_SEND_PUSH"`).
- Los métodos de gRPC-Gateway (`/api/v3/journeygateway/...`) devuelven el [objeto journey](/es/developer/api-reference/customer-journey-api/journey-object/) si tienen éxito y el sobre de error estándar de gRPC-Gateway si fallan: `{ "code": ..., "message": ..., "details": [...] }`.
- Los métodos externos heredados (`/api/journey/...`) devuelven un cuerpo JSON específico del método si tienen éxito y `{ "success": false, "message": ... }` con HTTP `400` en errores de validación.

## Inicio rápido

```bash title="Iniciar un journey"
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway/start \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "uuid": "11111111-2222-3333-4444-555555555555" }'
```

## Próximos pasos

<CardGrid>
  <LinkCard title="Ciclo de vida" href="/developer/api-reference/customer-journey-api/lifecycle/" />
  <LinkCard title="Crear y actualizar" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="Iniciar por API" href="/developer/api-reference/customer-journey-api/start-by-api/" />
  <LinkCard title="Obtener estadísticas del Journey" href="/developer/api-reference/customer-journey-api/statistics/" />
  <LinkCard title="Eliminar usuarios de journeys" href="/developer/api-reference/customer-journey-api/drop-users/" />
  <LinkCard title="Objeto Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="Referencia de punto" href="/developer/api-reference/customer-journey-api/point-reference/" />
</CardGrid>