# Azion CLI device-group

Os comandos `device-group` da Azion CLI criam, listam, descrevem, atualizam e excluem [device groups](/pt-br/documentacao/plataforma/applications/device-groups/), os nomes e as expressões regulares que uma aplicação compara com o header `User-Agent` de cada requisição. Um device group pertence a uma aplicação, então todo comando recebe o `--application-id` dessa aplicação. 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 device-group` cria um device group em uma aplicação, com o nome e a expressão regular que você passa:

```bash
azion create device-group [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                                                                                                                                                                |
| ------------------ | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--application-id` | —     | int    | —      | ID da aplicação que guarda o device group.                                                                                                                               |
| `--file`           | —     | string | —      | Caminho de um arquivo JSON com os atributos do device group. Use `-` para ler o JSON da entrada padrão.                                                                  |
| `--name`           | —     | string | —      | Nome do device group. Aceita apenas letras e dígitos.                                                                                                                    |
| `--user-agent`     | —     | string | —      | **Obrigatório**, a menos que `--file` seja definido. Expressão regular a comparar com o header `User-Agent` de cada requisição. Sem ela, o comando pergunta a expressão. |

O comando precisa de Application Accelerator ativado na aplicação. Enquanto ele está desativado, o comando falha com este erro:

```text
Error: Failed to create the device group: You do not have the permissions to access the API. Make sure the feature is enabled in your profile. Check your settings and try again. If the error persists, contact Azion support.
```

Este comando ativa Application Accelerator na aplicação com ID `1234567890`. A flag `--application-accelerator` está em [Azion CLI application](/pt-br/documentacao/devtools/cli/recursos/application/):

```bash
azion update application --application-id 1234567890 --application-accelerator true
```

O comando imprime o ID da aplicação atualizada:

```text
Updated Application with ID 1234567890
```

Um nome com hífen ou underscore é recusado com este erro:

```text
Error: Failed to create the device group: ["Invalid device group name."]. Check your settings and try again. If the error persists, contact Azion support.
```

Este comando cria um device group chamado `mobile` que corresponde a dispositivos Android e a dispositivos cujo header contém `Mobile`:

```bash
azion create device-group --application-id 1234567890 --name mobile --user-agent '(Mobile|Android)'
```

O comando imprime o ID do device group:

```text
Created device group with ID 1238
```

---

## Listar

`azion list device-group` lista os device groups de uma aplicação, 50 por página:

```bash
azion list device-group [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                                                                                  |
| ------------------ | ----- | ------ | ------ | ------------------------------------------------------------------------------------------ |
| `--application-id` | —     | int    | —      | ID da aplicação cujos device groups você lista.                                            |
| `--details`        | —     | —      | —      | É aceita, mas não adiciona colunas: a lista mantém as colunas `ID`, `NAME` e `USER AGENT`. |
| `--filter`         | —     | string | —      | Nome pelo qual filtrar a lista.                                                            |
| `--order-by`       | —     | string | —      | Campo pelo qual ordenar a lista.                                                           |
| `--page`           | —     | int    | `1`    | Número da página a retornar.                                                               |
| `--page-size`      | —     | int    | `50`   | Número de device groups em cada página.                                                    |

Este comando lista os device groups da aplicação com ID `1234567890`:

```bash
azion list device-group --application-id 1234567890
```

O comando imprime uma linha por device group:

```text
ID    NAME     USER AGENT
1238  mobile   (Mobile|Android)
1239  tablet   (iPad|Tablet)
1240  mobile7  Mobile
```

---

## Descrever

`azion describe device-group` imprime as configurações de um device group:

```bash
azion describe device-group [flags]
```

| Flag               | Curta | Tipo | Padrão | Descrição                                                   |
| ------------------ | ----- | ---- | ------ | ----------------------------------------------------------- |
| `--application-id` | —     | int  | —      | **Obrigatório**. ID da aplicação que guarda o device group. |
| `--group-id`       | —     | int  | —      | **Obrigatório**. ID do device group a descrever.            |

Este comando descreve o device group com ID `1238`:

```bash
azion describe device-group --application-id 1234567890 --group-id 1238
```

O comando imprime o ID, o nome e a expressão regular do device group:

```text
ID:           1238
Name:         mobile
User Agent:   (Mobile|Android)
```

Com `--format json`, o comando imprime o objeto completo: `created_at`, `id`, `name` e `user_agent`.

---

## Atualizar

`azion update device-group` altera o nome ou a expressão regular de um device group:

```bash
azion update device-group [flags]
```

| Flag               | Curta | Tipo   | Padrão | Descrição                                                                                         |
| ------------------ | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------- |
| `--application-id` | —     | int    | —      | **Obrigatório**. ID da aplicação que guarda o device group.                                       |
| `--file`           | —     | string | —      | Caminho de um arquivo JSON com os atributos a alterar. Use `-` para ler o JSON da entrada padrão. |
| `--group-id`       | —     | int    | —      | **Obrigatório**. ID do device group a atualizar.                                                  |
| `--name`           | —     | string | —      | Novo nome do device group.                                                                        |
| `--user-agent`     | —     | string | —      | Nova expressão regular a comparar com o header `User-Agent`.                                      |

Este comando adiciona dispositivos iPhone à expressão regular do device group com ID `1238`:

```bash
azion update device-group --application-id 1234567890 --group-id 1238 --user-agent '(Mobile|Android|iPhone)'
```

O comando imprime o ID do device group atualizado:

```text
Device Group 1238 was updated
```

---

## Excluir

`azion delete device-group` exclui um device group de uma aplicação:

```bash
azion delete device-group [flags]
```

| Flag               | Curta | Tipo | Padrão | Descrição                                                   |
| ------------------ | ----- | ---- | ------ | ----------------------------------------------------------- |
| `--application-id` | —     | int  | —      | **Obrigatório**. ID da aplicação que guarda o device group. |
| `--group-id`       | —     | int  | —      | **Obrigatório**. ID do device group a excluir.              |

Este comando exclui o device group com ID `1239`:

```bash
azion delete device-group --application-id 1234567890 --group-id 1239 -y
```

O comando confirma a exclusão:

```text
Device group 1239 was successfully deleted
```

---

## Usar um arquivo JSON

`azion create device-group` e `azion update device-group` leem os atributos do device group de um arquivo JSON com `--file`. O arquivo traz `name` e `user_agent`.

Este arquivo cria um device group chamado `tablet` que corresponde a dispositivos iPad e tablet:

```json
{
  "name": "tablet",
  "user_agent": "(iPad|Tablet)"
}
```

Passe o arquivo para o comando de criação com o ID da aplicação:

```bash
azion create device-group --application-id 1234567890 --file dg-create.json
```

O comando imprime o ID do device group:

```text
Created device group with ID 1239
```

Este arquivo renomeia um device group para `tabletupdated`:

```json
{
  "name": "tabletupdated"
}
```

Passe o arquivo para o comando de atualização com os IDs da aplicação e do device group:

```bash
azion update device-group --application-id 1234567890 --group-id 1239 --file dg-update.json
```

O comando imprime o ID do device group atualizado:

```text
Device Group 1239 was updated
```

Um campo que o arquivo omite mantém o seu valor. Depois dessa atualização, o device group com ID `1239` ainda tem `(iPad|Tablet)` como `user_agent`.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Device Groups](/pt-br/documentacao/plataforma/applications/device-groups.md): Como uma aplicação compara o header `User-Agent` com um device group, e em que ordem.
- [Azion CLI application](/pt-br/documentacao/devtools/cli/recursos/application.md): Os comandos que criam uma aplicação e ativam Application Accelerator nela.
- [Azion CLI rules-engine](/pt-br/documentacao/devtools/cli/recursos/rules-engine.md): Os comandos que criam as regras que atuam sobre um device group.
