PUT | Atualizar dispositivo

Prev Next

Descrição

Substitua a representação completa de um dispositivo cadastrado no PAM Core utilizando a API v2. Este endpoint sobrescreve todos os campos mutáveis do dispositivo: os campos opcionais omitidos na requisição são redefinidos para o valor padrão ou esvaziados. Para alterar apenas alguns campos, acesse PATCH | Atualizar dispositivo (v2).

Info

Este endpoint faz parte da superfície da API v2 do A2A e está disponível a partir da versão 4.2.9 do Segura®. Os dispositivos são servidos pelo caminho base /api/v2/platform, e não por /api/v2/pam como os demais recursos v2. Na v1, atualizar um dispositivo reutilizava o endpoint de criação; a v2 separa a substituição completa (PUT) da atualização parcial (PATCH).


Pré-requisitos


Requisição

PUT /api/v2/platform/devices/{id}

Parâmetros de caminho

Campo Tipo Obrigatório Descrição
id integer Sim Código de identificação único do dispositivo. Nota: este valor é atribuído pelo Segura® em POST | Criar dispositivo (v2).

Cabeçalhos

Cabeçalho Obrigatório Descrição
If-Match Sim ETag atual do dispositivo, para controle de concorrência otimista. A ausência do cabeçalho retorna 428; um valor que não corresponde mais ao estado atual retorna 412.

Corpo da requisição

O corpo tem o mesmo formato e os mesmos campos obrigatórios de POST | Criar dispositivo (v2): name, address, type, vendor, product e site são obrigatórios, e os campos opcionais são domain_name, tags, criticality, enable_remote_app, network_connector_id, administrator_group_id, owner, connectivities e session_settings. Acesse esse documento para a tabela completa de campos.

Os campos somente leitura são ignorados quando enviados: id, active e connectable. O estado ativo é alterado apenas por POST | Ativar dispositivo (v2) e POST | Desativar dispositivo (v2).

Atenção

O PUT substitui o dispositivo por completo. Todo campo opcional omitido é redefinido, e não preservado: tags e connectivities ficam vazios, enable_remote_app volta para false e criticality volta para medium. Envie a representação completa ou utilize PATCH | Atualizar dispositivo (v2) para alterar campos individuais.

A alteração de name ou address é bloqueada enquanto existir uma sessão ativa do dispositivo no proxy, retornando 409.


Exemplo de requisição

PUT {{url}}/api/v2/platform/devices/55

Cabeçalhos

Content-Type: application/json
If-Match: "v3"

Corpo

{
    "name": "db-prod-01",
    "address": "10.10.10.10",
    "type": "Server",
    "vendor": "Oracle",
    "product": "Oracle Linux VM",
    "site": "SP-DC1",
    "domain_name": "CORP",
    "tags": ["prod", "database"],
    "criticality": "medium",
    "enable_remote_app": true,
    "network_connector_id": 12,
    "owner": "jdoe",
    "connectivities": [
        {
            "protocol": "SSH",
            "port": 22
        }
    ]
}

Resposta

HTTP/1.1 200 OK
ETag: "v4"

O cabeçalho ETag traz a nova versão do dispositivo. Utilize este valor no cabeçalho If-Match da próxima operação de escrita.

Exemplo de corpo da resposta

A resposta retorna o dispositivo completo, no mesmo formato de GET | Listar um dispositivo (v2). No exemplo a seguir, session_settings foi omitido na requisição e, por isso, foi redefinido para um array vazio.

{
    "data": {
        "id": "55",
        "device": {
            "name": "db-prod-01",
            "address": "10.10.10.10",
            "active": true,
            "type": "Server",
            "vendor": "Oracle",
            "product": "Oracle Linux VM",
            "site": "SP-DC1",
            "domain_name": "CORP",
            "tags": ["prod", "database"],
            "criticality": "medium",
            "owner": {
                "name": "John Doe"
            },
            "administrator_group": null,
            "enable_remote_app": true,
            "network_connector": {
                "id": "12",
                "name": "NC-SP-01",
                "port": "50001"
            },
            "connectivities": [
                {
                    "protocol": "SSH",
                    "port": 22,
                    "connectable": true
                }
            ],
            "session_settings": []
        }
    },
    "meta": {
        "links": {
            "self": "/api/v2/platform/devices/55"
        },
        "actions": {
            "deactivate": "/api/v2/platform/devices/55/deactivate"
        }
    }
}

Campos do corpo da resposta

A resposta retorna o dispositivo atualizado com os mesmos campos de GET | Listar um dispositivo (v2). Acesse esse documento para as tabelas completas de campos.

Campo Tipo Descrição
data object O dispositivo atualizado.
data.id string Código de identificação único do dispositivo.
data.device object Atributos canônicos do dispositivo após a atualização.
meta object Links de navegação e ações disponíveis.
meta.links.self string URL do dispositivo.
meta.actions object Ações disponíveis para o dispositivo em seu estado atual.

Erros

Código HTTP Mensagem Causa possível Solução
400 api.request.malformed O corpo não é um JSON válido. Verifique a sintaxe do payload e o cabeçalho Content-Type.
401 api.auth.token.invalid O token de acesso está ausente ou expirou. Solicite um novo token de acesso.
403 api.permission.denied A autorização não tem permissão de escrita para os recursos do PAM Core. Peça ao administrador para verificar as permissões da autorização no A2A e gere um novo token.
404 api.resource.not_found O dispositivo não existe ou pertence a outro tenant. Verifique o código de identificação enviado no caminho.
409 api.resource.conflict.active_sessions Existe uma sessão ativa do dispositivo no proxy, o que bloqueia alterações em name e address. Aguarde o encerramento da sessão, ou encerre-a, e reenvie a requisição.
409 api.resource.inactive O dispositivo está inativo, portanto operações de escrita não são permitidas. Ative o dispositivo com POST | Ativar dispositivo (v2) e reenvie a requisição.
409 api.resource.conflict.duplicate_address Outro dispositivo já utiliza o endereço de gerenciamento enviado em address. Utilize um endereço diferente.
412 api.precondition.failed O valor de If-Match não corresponde ao ETag atual: o dispositivo foi alterado depois da sua leitura. Consulte o dispositivo novamente para obter o ETag atual, reaplique suas alterações e reenvie a requisição.
428 api.precondition.required O cabeçalho If-Match está ausente. Envie o ETag atual no cabeçalho If-Match.
422 api.validation.required_field Um campo obrigatório está ausente. Envie name, address, type, vendor, product e site.
422 api.validation.invalid_reference Um tipo, fabricante, modelo, site, domínio, Network Connector ou usuário referenciado não existe, ou o administrator_group_id foi enviado com o modo de política de acesso dinâmico. Cadastre o valor antes ou remova o campo. Consulte error.details para identificar o campo.
422 api.enum.invalid_value O criticality recebeu um valor fora de low, medium, high. Envie um dos valores permitidos.
429 rate_limit_exceeded O limite de requisições foi excedido. Aguarde o número de segundos indicado no cabeçalho Retry-After e tente novamente.
500 api.internal.error Erro interno do servidor. Entre em contato com a equipe de suporte da Segura®.

Exemplo de resposta de erro

412 o dispositivo foi alterado depois da leitura:

{
    "error": {
        "code": "api.precondition.failed",
        "message": "The If-Match header does not match the current ETag."
    }
}

Erros de autenticação

Mensagem Causa possível Solução
Client authentication failed. Falha na autenticação da aplicação com o servidor Segura®. Verifique os parâmetros de autenticação (Access Token URL, Client ID e Client secret) e solicite um novo token de acesso.
Invalid signature Falha no reconhecimento da URL da aplicação cliente. Verifique a URL da aplicação cliente e reenvie a requisição.
No route matched with those values. Cabeçalho de autorização ausente na requisição da API. Solicite um novo token de acesso.
Request timed out. A requisição excedeu o limite de tempo. Verifique a conectividade entre a origem da requisição e o servidor Segura®.

Documentos relacionados