# Crear y actualizar

Estos endpoints crean y editan la definición del journey: su título, configuración y los puntos en el lienzo. No inician el journey. Use [Ciclo de vida](/es/developer/api-reference/customer-journey-api/lifecycle/) para eso.

Ambos aceptan y devuelven el [objeto de journey](/es/developer/api-reference/customer-journey-api/journey-object/).

<Aside type="tip">
Escribir un gráfico de journey completo en JSON es difícil. Cada punto tiene sus propios campos de canal y condiciones ([Referencia de punto](/es/developer/api-reference/customer-journey-api/point-reference/)). El flujo de trabajo más fiable es construir el journey una vez en el [constructor de Customer Journey](/es/product/customer-journey/pushwoosh-journey-overview/), leerlo de nuevo desde una respuesta de creación/actualización, y luego usar estos endpoints para clonarlo o ajustarlo programáticamente.
</Aside>

## Crear

`POST` `https://journey.pushwoosh.com/api/v3/journeygateway`

Crea un nuevo journey en el estado `STATUS_DRAFT`.

### Solicitud

| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
| `title` | Sí | string | Nombre del Journey. |
| `params` | Sí | [`JourneyParams`](/es/developer/api-reference/customer-journey-api/journey-object/#journeyparams) | Configuración para todo el journey. `params.application_code` es requerido. |
| `points` | No | array de [`Point`](/es/developer/api-reference/customer-journey-api/journey-object/#point) | Elementos del Journey en el lienzo y sus conexiones. |
| `comments` | No | array de [`JourneyComment`](/es/developer/api-reference/customer-journey-api/journey-object/#journeycomment) | Comentarios del lienzo. |

##### Ejemplo de solicitud
```bash title="Crear un journey"
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Welcome series",
    "params": { "application_code": "XXXXX-XXXXX" },
    "points": [],
    "comments": []
  }'
```

### Respuesta

Devuelve el nuevo [objeto de journey](/es/developer/api-reference/customer-journey-api/journey-object/). Lea el UUID del journey desde `info.uuid` y úselo para las siguientes llamadas de actualización y ciclo de vida.
##### Ejemplo de respuesta
```json
{
  "info": {
    "uuid": "11111111-2222-3333-4444-555555555555",
    "title": "Welcome series",
    "status": "STATUS_DRAFT",
    "params": { "application_code": "XXXXX-XXXXX" }
  },
  "points": [],
  "comments": []
}
```

## Ejemplo de journey completo

Un cuerpo de `Create` completo para un pequeño flujo de bienvenida. El gráfico es:

```
Start by segment ──default──▶ Send push ──default──▶ Wait 1 day ──default──▶ Boolean splitter ──output1──▶ Send email ──default──▶ Exit
                                                                                              └──default───────────────────────────▶ Exit
```

Los puntos se conectan a través del `info.next_point_uuid` de cada salida. Tenga en cuenta las [claves de salida](/es/developer/api-reference/customer-journey-api/journey-object/#output-keys): cada punto utiliza `default`, excepto el divisor booleano, que añade `output1` para la rama de condición coincidente (`default` es su alternativa). El punto de salida no tiene salidas.

```json
{
  "title": "Welcome series",
  "params": {
    "application_code": "XXXXX-XXXXX",
    "user_id_track_change_policy": "TRACK"
  },
  "points": [
    {
      "uuid": "11111111-1111-1111-1111-111111111111",
      "title": "New signups",
      "point_type": "POINT_TYPE_START_BY_SEGMENT",
      "position": { "x": 80, "y": 200 },
      "outputs": [
        { "identity": { "key": "default", "order": 0 },
          "info": { "title": "", "next_point_uuid": "22222222-2222-2222-2222-222222222222" } }
      ],
      "point_data": {
        "start_by_segment": {
          "application_code": "XXXXX-XXXXX",
          "filter_code": "AAAAA-BBBBB"
        }
      }
    },
    {
      "uuid": "22222222-2222-2222-2222-222222222222",
      "title": "Welcome push",
      "point_type": "POINT_TYPE_SEND_PUSH",
      "position": { "x": 340, "y": 200 },
      "outputs": [
        { "identity": { "key": "default", "order": 0 },
          "info": { "title": "", "next_point_uuid": "33333333-3333-3333-3333-333333333333" } }
      ],
      "point_data": {
        "send_push": {
          "application_code": "XXXXX-XXXXX",
          "title": "Welcome!",
          "content": "Thanks for joining — here's how to get started."
        }
      }
    },
    {
      "uuid": "33333333-3333-3333-3333-333333333333",
      "title": "Wait 1 day",
      "point_type": "POINT_TYPE_WAIT",
      "position": { "x": 600, "y": 200 },
      "outputs": [
        { "identity": { "key": "default", "order": 0 },
          "info": { "title": "", "next_point_uuid": "44444444-4444-4444-4444-444444444444" } }
      ],
      "point_data": {
        "delay": { "sec": 86400 }
      }
    },
    {
      "uuid": "44444444-4444-4444-4444-444444444444",
      "title": "Opened the push?",
      "point_type": "POINT_TYPE_BOOLEAN_SPLITTER",
      "position": { "x": 860, "y": 200 },
      "outputs": [
        { "identity": { "key": "output1", "order": 1 },
          "info": { "title": "Matched", "next_point_uuid": "55555555-5555-5555-5555-555555555555" } },
        { "identity": { "key": "default", "order": 0 },
          "info": { "title": "Everyone else", "next_point_uuid": "66666666-6666-6666-6666-666666666666" } }
      ],
      "point_data": {
        "boolean_splitter": {
          "application_code": "XXXXX-XXXXX",
          "split_strategy": "SPLIT_FILTER",
          "load_policy": "ALL",
          "filter_code": "CCCCC-DDDDD"
        }
      }
    },
    {
      "uuid": "55555555-5555-5555-5555-555555555555",
      "title": "Follow-up email",
      "point_type": "POINT_TYPE_SEND_EMAIL",
      "position": { "x": 1120, "y": 120 },
      "outputs": [
        { "identity": { "key": "default", "order": 0 },
          "info": { "title": "", "next_point_uuid": "66666666-6666-6666-6666-666666666666" } }
      ],
      "point_data": {
        "send_email": {
          "application_code": "XXXXX-XXXXX",
          "preset_code": "12345-67890"
        }
      }
    },
    {
      "uuid": "66666666-6666-6666-6666-666666666666",
      "title": "Exit",
      "point_type": "POINT_TYPE_EXIT",
      "position": { "x": 1380, "y": 200 },
      "outputs": [],
      "point_data": {
        "terminator": {}
      }
    }
  ],
  "comments": []
}
```

## Actualizar

`PUT` `https://journey.pushwoosh.com/api/v3/journeygateway/{uuid}`

Reemplaza la definición de un journey existente. Envíe la definición **completa**. Los puntos y comentarios que envíe reemplazarán a los actuales.

### Parámetros de ruta

| Nombre | Tipo | Descripción |
|---|---|---|
| `uuid` | string | [ID de Journey](/es/developer/api-reference/api-identifiers/#journey-id) a actualizar. |

### Solicitud

| Campo | Tipo | Descripción |
|---|---|---|
| `title` | string | Nuevo nombre del journey. |
| `params` | [`JourneyParams`](/es/developer/api-reference/customer-journey-api/journey-object/#journeyparams) | Nueva configuración para todo el journey. |
| `points` | array de [`Point`](/es/developer/api-reference/customer-journey-api/journey-object/#point) | Nuevo conjunto completo de puntos. |
| `comments` | array de [`JourneyComment`](/es/developer/api-reference/customer-journey-api/journey-object/#journeycomment) | Nuevo conjunto completo de comentarios. |
| `autosave` | bool | Cuando es `true`, el cambio se trata como un autoguardado del editor. El valor predeterminado es `false`. |

##### Ejemplo de solicitud 

```bash title="Renombrar y reconfigurar un journey"
curl -X PUT https://journey.pushwoosh.com/api/v3/journeygateway/11111111-2222-3333-4444-555555555555 \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Welcome series v2",
    "params": { "application_code": "XXXXX-XXXXX" },
    "points": [],
    "comments": []
  }'
```

### Respuesta

Devuelve el [objeto de journey](/es/developer/api-reference/customer-journey-api/journey-object/) actualizado.

## Actualizar y reanudar

`POST` `https://journey.pushwoosh.com/api/v3/journeygateway/{uuid}/resume`

Aplica ediciones a un journey y lo reanuda en una sola llamada. Esto es el equivalente a una [Actualización](#update) seguida de un [Inicio](/es/developer/api-reference/customer-journey-api/lifecycle/) del ciclo de vida. El cuerpo de la solicitud coincide con [Actualización](#update). Utilice esto cuando edite un journey en pausa que desee volver a poner en el estado `STATUS_RUNNING`.

## Renombrar

`POST` `https://journey.pushwoosh.com/api/v3/journeygateway/{uuid}/rename`

Cambia solo el título del journey, sin tocar sus puntos o configuración.

| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
| `title` | Sí | string | Nuevo nombre del journey. |

##### Ejemplo de solicitud

```bash title="Renombrar un journey"
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway/11111111-2222-3333-4444-555555555555/rename \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Welcome series (Q3)" }'
```

## Relacionado

<CardGrid>
  <LinkCard title="Objeto de Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="Ciclo de vida" href="/developer/api-reference/customer-journey-api/lifecycle/" />
  <LinkCard title="Iniciar por API" href="/developer/api-reference/customer-journey-api/start-by-api/" />
</CardGrid>