# Criar e atualizar

Esses endpoints criam e editam a definição da jornada: seu título, configurações e os pontos na tela. Eles não iniciam a jornada. Use [Ciclo de Vida](/pt/developer/api-reference/customer-journey-api/lifecycle/) para isso.

Ambos aceitam e retornam o [objeto de jornada](/pt/developer/api-reference/customer-journey-api/journey-object/).

<Aside type="tip">
Escrever um gráfico de jornada completo em JSON é difícil. Cada ponto tem seus próprios campos de canal e condições ([Referência de Ponto](/pt/developer/api-reference/customer-journey-api/point-reference/)). O fluxo de trabalho mais confiável é construir a jornada uma vez no [construtor de Customer Journey](/pt/product/customer-journey/pushwoosh-journey-overview/), lê-la de volta de uma resposta de criação/atualização e, em seguida, usar esses endpoints para cloná-la ou ajustá-la programaticamente.
</Aside>

## Criar

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

Cria uma nova jornada no estado `STATUS_DRAFT`.

### Requisição

| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| `title` | Sim | string | Nome da jornada. |
| `params` | Sim | [`JourneyParams`](/pt/developer/api-reference/customer-journey-api/journey-object/#journeyparams) | Configuração para toda a jornada. `params.application_code` é obrigatório. |
| `points` | Não | array de [`Point`](/pt/developer/api-reference/customer-journey-api/journey-object/#point) | Elementos da jornada na tela e suas conexões. |
| `comments` | Não | array de [`JourneyComment`](/pt/developer/api-reference/customer-journey-api/journey-object/#journeycomment) | Comentários da tela. |

##### Exemplo de requisição
```bash title="Criar uma jornada"
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": []
  }'
```

### Resposta

Retorna o novo [objeto de jornada](/pt/developer/api-reference/customer-journey-api/journey-object/). Leia o UUID da jornada de `info.uuid` e use-o para chamadas subsequentes de atualização e ciclo de vida.
##### Exemplo de resposta
```json
{
  "info": {
    "uuid": "11111111-2222-3333-4444-555555555555",
    "title": "Welcome series",
    "status": "STATUS_DRAFT",
    "params": { "application_code": "XXXXX-XXXXX" }
  },
  "points": [],
  "comments": []
}
```

## Exemplo de jornada completa

Um corpo de `Create` completo para um pequeno fluxo de boas-vindas. O gráfico é:

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

Os pontos são conectados através do `info.next_point_uuid` de cada saída. Observe as [chaves de saída](/pt/developer/api-reference/customer-journey-api/journey-object/#output-keys): cada ponto usa `default`, exceto o divisor booleano, que adiciona `output1` para o ramo de condição correspondente (`default` é seu fallback). O ponto de saída não tem saídas.

```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": []
}
```

## Atualizar

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

Substitui a definição de uma jornada existente. Envie a definição **completa**. Os pontos e comentários que você envia substituem os atuais.

### Parâmetros de caminho

| Nome | Tipo | Descrição |
|---|---|---|
| `uuid` | string | [ID da Jornada](/pt/developer/api-reference/api-identifiers/#journey-id) para atualizar. |

### Requisição

| Campo | Tipo | Descrição |
|---|---|---|
| `title` | string | Novo nome da jornada. |
| `params` | [`JourneyParams`](/pt/developer/api-reference/customer-journey-api/journey-object/#journeyparams) | Nova configuração para toda a jornada. |
| `points` | array de [`Point`](/pt/developer/api-reference/customer-journey-api/journey-object/#point) | Novo conjunto completo de pontos. |
| `comments` | array de [`JourneyComment`](/pt/developer/api-reference/customer-journey-api/journey-object/#journeycomment) | Novo conjunto completo de comentários. |
| `autosave` | bool | Quando `true`, a alteração é tratada como um salvamento automático do editor. O padrão é `false`. |

##### Exemplo de requisição 

```bash title="Renomear e reconfigurar uma jornada"
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": []
  }'
```

### Resposta

Retorna o [objeto de jornada](/pt/developer/api-reference/customer-journey-api/journey-object/) atualizado.

## Atualizar e retomar

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

Aplica edições a uma jornada e a retoma em uma única chamada. Isso é o equivalente a uma [Atualização](#update) seguida por um [Início](/pt/developer/api-reference/customer-journey-api/lifecycle/) do ciclo de vida. O corpo da requisição corresponde a [Atualizar](#update). Use isso ao editar uma jornada pausada que você deseja colocar de volta no estado `STATUS_RUNNING`.

## Renomear

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

Altera apenas o título da jornada, sem tocar em seus pontos ou configurações.

| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| `title` | Sim | string | Novo nome da jornada. |

##### Exemplo de requisição

```bash title="Renomear uma jornada"
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)" }'
```

## Relacionados

<CardGrid>
  <LinkCard title="Objeto de jornada" 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>