# Azion CLI origin

Os comandos `origin` da Azion CLI criam, listam, descrevem, atualizam e excluem as [origens](/pt-br/documentacao/plataforma/connectors/origins/) de uma aplicação. Uma origem é o servidor do qual a Azion recupera o conteúdo da aplicação, como um servidor em nuvem ou um bucket do Object Storage. Cada origem pertence a uma aplicação, então todo comando recebe `--application-id`. [Connectors](/pt-br/documentacao/plataforma/connectors/) substituem a funcionalidade Origins, e os [comandos connector](/pt-br/documentacao/devtools/cli/recursos/connector/) os gerenciam. As opções que todo comando aceita, como `--format`, `--out` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Criar

`azion create origin` cria uma origem em uma aplicação:

```bash
azion create origin [flags]
```

| Flag                       | Curta | Tipo    | Padrão | Descrição                                                                                                                                                                        |
| -------------------------- | ----- | ------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--addresses`              | —     | strings | —      | Endereços da origem. Separe vários endereços com vírgulas.                                                                                                                       |
| `--application-id`         | —     | int     | —      | ID da aplicação que guarda a origem.                                                                                                                                             |
| `--bucket`                 | —     | string  | —      | **Obrigatório** quando `--origin-type` é `object_storage`. Nome do bucket do [Object Storage](/pt-br/documentacao/plataforma/object-storage/) do qual a origem entrega conteúdo. |
| `--file`                   | —     | string  | —      | Caminho de um arquivo JSON com os atributos da origem. Use `-` para ler o JSON da entrada padrão.                                                                                |
| `--hmac-access-key`        | —     | string  | —      | Chave de acesso para a autenticação HMAC.                                                                                                                                        |
| `--hmac-authentication`    | —     | string  | —      | Ativa (`true`) ou desativa (`false`) a autenticação HMAC da origem.                                                                                                              |
| `--hmac-region-name`       | —     | string  | —      | Nome da região para a autenticação HMAC.                                                                                                                                         |
| `--hmac-secret-key`        | —     | string  | —      | Chave secreta para a autenticação HMAC.                                                                                                                                          |
| `--host-header`            | —     | string  | —      | Nome do host do servidor acessado, que a origem recebe no cabeçalho `Host`.                                                                                                      |
| `--name`                   | —     | string  | —      | Nome da origem.                                                                                                                                                                  |
| `--origin-path`            | —     | string  | —      | Caminho acrescentado à URI quando a requisição é encaminhada para a origem. Deixe vazio para encaminhar só a URI.                                                                |
| `--origin-protocol-policy` | —     | string  | —      | Política de protocolo da origem. Uma origem criada sem essa flag informa `preserve`.                                                                                             |
| `--origin-type`            | —     | string  | —      | **Obrigatório**, a menos que o JSON de `--file` traga `origin_type`. Tipo da origem. Sem essa flag, o comando pede que você escolha `single_origin` ou `object_storage`.         |
| `--prefix`                 | —     | string  | —      | Caminho da pasta dentro do bucket que guarda o conteúdo. Vale só quando `--origin-type` é `object_storage`.                                                                      |

Este comando cria uma origem chamada `my-origin` que recupera conteúdo de `httpbin.org`:

```bash
azion create origin --application-id 1234567890 --name my-origin --addresses httpbin.org --host-header '${host}' --origin-type single_origin
```

O comando imprime a chave da origem, que os comandos de descrição, atualização e exclusão recebem em `--origin-key`:

```text
Created Origin with key 00000000-0000-0000-0000-000000000003
```

---

## Listar

`azion list origin` lista as origens de uma aplicação, 50 por página:

```bash
azion list origin [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                                                                                                                    |
| ------------------ | ----- | ------ | ------ | ---------------------------------------------------------------------------------------------------------------------------- |
| `--application-id` | —     | int    | —      | ID da aplicação cujas origens são listadas.                                                                                  |
| `--details`        | —     | —      | —      | Adiciona as colunas `ID`, `ORIGIN TYPE`, `ORIGIN PATH`, `ADDRESSES` e `CONNECTION TIMEOUT` às colunas `ORIGIN KEY` e `NAME`. |
| `--filter`         | —     | string | —      | Nome pelo qual a lista é filtrada.                                                                                           |
| `--order-by`       | —     | string | —      | Campo pelo qual a lista é ordenada, como `name`.                                                                             |
| `--page`           | —     | int    | `1`    | Número da página a retornar.                                                                                                 |
| `--page-size`      | —     | int    | `50`   | Número de origens em cada página.                                                                                            |

O comando precisa de `--order-by`. Sem essa flag, o comando falha com este erro, com ou sem `--details`, `--page` e `--page-size`:

```text
Error: Failed to list your origins: '' is not a valid option for 'order_by'. Check your settings and try again. If the error persists, contact Azion support.
```

Este comando lista as origens da aplicação com ID `1234567890`, ordenadas por nome, com todas as colunas:

```bash
azion list origin --application-id 1234567890 --order-by name --details
```

O comando imprime uma linha por origem:

```text
ORIGIN KEY                            NAME                ID      ORIGIN TYPE    ORIGIN PATH  ADDRESSES                                  CONNECTION TIMEOUT
00000000-0000-0000-0000-000000000003  my-origin           123485  single_origin               [{httpbin.org {<nil> true} primary true}]  60
```

A coluna `ADDRESSES` imprime cada endereço nessa forma bruta. Para ler as configurações de cada endereço, use `azion describe origin` com `--format json`.

---

## Descrever

`azion describe origin` imprime as configurações de uma origem:

```bash
azion describe origin [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                            |
| ------------------ | ----- | ------ | ------ | ------------------------------------ |
| `--application-id` | —     | int    | —      | ID da aplicação que guarda a origem. |
| `--origin-key`     | —     | string | —      | Chave da origem a descrever.         |

Este comando descreve a origem com chave `00000000-0000-0000-0000-000000000003`:

```bash
azion describe origin --application-id 1234567890 --origin-key 00000000-0000-0000-0000-000000000003
```

O comando imprime o ID, a chave, o nome e as configurações da origem:

```text
Origin ID:                      123485
Origin Key:                     00000000-0000-0000-0000-000000000003
Name:                           my-origin
Origin Type:                    single_origin
Addresses:                      [{"address":"httpbin.org","is_active":true,"server_role":"primary","weight":null}]
Origin Protocol Policy:         preserve
Is Origin Redirection Enable:   false
Host Header:                    ${host}
Method:
Origin Path:
Connection Timeout:             60
Timeout Between Bytes:          120
Hmac Authentication:            false
Hmac Region Name:
Hmac Secret Key:
Hmac Access Key:
```

Com `--format json`, o comando imprime o objeto completo: `addresses`, `bucket`, `connection_timeout`, `hmac_access_key`, `hmac_authentication`, `hmac_region_name`, `hmac_secret_key`, `host_header`, `is_origin_redirection_enabled`, `method`, `name`, `origin_id`, `origin_key`, `origin_path`, `origin_protocol_policy`, `origin_type`, `prefix` e `timeout_between_bytes`. Cada item de `addresses` guarda `address`, `is_active`, `server_role` e `weight`.

Uma chave que não existe na aplicação falha com este erro:

```text
Error: Failed to describe the Origin: The given ID or API's endpoint doesn't exist or isn't available. Check that the identifying information is correct. Check your settings and try again. If the error persists, contact Azion support.
```

---

## Atualizar

`azion update origin` altera o nome, os endereços ou as configurações de uma origem:

```bash
azion update origin [flags]
```

| Flag                       | Curta | Tipo    | Padrão | Descrição                                                                                                                                   |
| -------------------------- | ----- | ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `--addresses`              | —     | strings | —      | Endereços da origem. Separe vários endereços com vírgulas.                                                                                  |
| `--application-id`         | —     | int     | —      | ID da aplicação que guarda a origem.                                                                                                        |
| `--bucket`                 | —     | string  | —      | Nome do bucket do Object Storage do qual a origem entrega conteúdo.                                                                         |
| `--file`                   | —     | string  | —      | Caminho de um arquivo JSON com os atributos a alterar. Use `-` para ler o JSON da entrada padrão.                                           |
| `--hmac-access-key`        | —     | string  | —      | Chave de acesso para a autenticação HMAC.                                                                                                   |
| `--hmac-authentication`    | —     | string  | —      | Ativa (`true`) ou desativa (`false`) a autenticação HMAC da origem.                                                                         |
| `--hmac-region-name`       | —     | string  | —      | Nome da região para a autenticação HMAC.                                                                                                    |
| `--hmac-secret-key`        | —     | string  | —      | Chave secreta para a autenticação HMAC.                                                                                                     |
| `--host-header`            | —     | string  | —      | Nome do host do servidor acessado, que a origem recebe no cabeçalho `Host`.                                                                 |
| `--name`                   | —     | string  | —      | Novo nome da origem.                                                                                                                        |
| `--origin-key`             | —     | string  | —      | **Obrigatório**. Chave da origem a atualizar. Sem essa flag, o comando pergunta a chave, mesmo quando o JSON de `--file` traz `origin_key`. |
| `--origin-path`            | —     | string  | —      | Caminho acrescentado à URI quando a requisição é encaminhada para a origem. Deixe vazio para encaminhar só a URI.                           |
| `--origin-protocol-policy` | —     | string  | —      | Política de protocolo da origem.                                                                                                            |
| `--origin-type`            | —     | string  | —      | Tipo da origem, como `single_origin` ou `object_storage`.                                                                                   |
| `--prefix`                 | —     | string  | —      | Caminho da pasta dentro do bucket que guarda o conteúdo.                                                                                    |

Este comando renomeia a origem com chave `00000000-0000-0000-0000-000000000003` para `my-origin-renamed` e define o caminho de origem dela como `/anything`:

```bash
azion update origin --application-id 1234567890 --origin-key 00000000-0000-0000-0000-000000000003 --name my-origin-renamed --origin-path /anything
```

O comando imprime a chave da origem atualizada:

```text
Updated Origin with key 00000000-0000-0000-0000-000000000003
```

As configurações que você não passa mantêm os valores delas. Neste exemplo, o endereço `httpbin.org` continua inalterado.

---

## Excluir

`azion delete origin` exclui uma origem de uma aplicação:

```bash
azion delete origin [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                            |
| ------------------ | ----- | ------ | ------ | ------------------------------------ |
| `--application-id` | —     | int    | —      | ID da aplicação que guarda a origem. |
| `--origin-key`     | —     | string | —      | Chave da origem a excluir.           |

Este comando exclui a origem com chave `00000000-0000-0000-0000-000000000004`:

```bash
azion delete origin --application-id 1234567890 --origin-key 00000000-0000-0000-0000-000000000004 -y
```

O comando confirma a exclusão:

```text
Origin 00000000-0000-0000-0000-000000000004 was successfully deleted
```

---

## Usar um arquivo JSON

`azion create origin` e `azion update origin` leem os atributos da origem de um arquivo JSON com `--file`. Passe `--application-id` na linha de comando.

Este arquivo cria uma origem chamada `my-site-origin` que recupera conteúdo de `example.com`:

```json
{
  "name": "my-site-origin",
  "origin_type": "single_origin",
  "addresses": [
    {
      "address": "example.com"
    }
  ],
  "host_header": "${host}"
}
```

Passe o arquivo para o comando de criação:

```bash
azion create origin --application-id 1234567890 --file origin-create.json
```

O comando imprime a chave da origem:

```text
Created Origin with key 00000000-0000-0000-0000-000000000004
```

Na atualização, o comando não lê `origin_key` do arquivo, então passe `--origin-key` também na linha de comando. Este arquivo renomeia a origem com chave `00000000-0000-0000-0000-000000000004`:

```json
{
  "origin_key": "00000000-0000-0000-0000-000000000004",
  "name": "my-site-origin-updated"
}
```

Passe o arquivo e a chave para o comando de atualização:

```bash
azion update origin --application-id 1234567890 --origin-key 00000000-0000-0000-0000-000000000004 --file origin-update.json
```

O comando imprime a chave da origem atualizada:

```text
Updated Origin with key 00000000-0000-0000-0000-000000000004
```

Os campos que o arquivo deixa de fora mantêm os valores deles.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Origins](/pt-br/documentacao/plataforma/connectors/origins.md): O que cada tipo de origem faz e como funcionam o bucket e o prefixo de uma origem do Object Storage.
- [Azion CLI application](/pt-br/documentacao/devtools/cli/recursos/application.md): Os comandos que criam e listam as aplicações que guardam as suas origens.
- [Azion CLI connector](/pt-br/documentacao/devtools/cli/recursos/connector.md): Os comandos que gerenciam connectors, que substituem a funcionalidade Origins.
