Códigos QR de provisionamento

Crie um código QR que inscreve um dispositivo Android novo ou restaurado para os padrões de fábrica na sua empresa com uma determinada política.

Como funciona

Cada solicitação cria um novo token de inscrição para a política e retorna um código QR que o contém. O código para de funcionar 24 horas após a criação; a resposta informa o horário exato em expiresAt. Crie um código quando alguém estiver prestes a configurar dispositivos e crie um novo em vez de reutilizar um antigo.

Para usar o código, toque na tela de boas-vindas do assistente de configuração do dispositivo seis vezes, conecte-se ao Wi-Fi se solicitado e escaneie-o. Um dispositivo só pode ser inscrito dessa forma quando for novo ou tiver sido restaurado para os padrões de fábrica.

Políticas exclusivas para VR não podem ser provisionadas com um código QR: seus dispositivos são provisionados com o Nomid Ops via USB.

Requisitos

  • Uma chave de API com a permissão PROVISIONING, combinada com POLICIES_READ. Somente um usuário do portal que tenha permissão para provisionar dispositivos e acesso a todas as políticas pode criar uma chave com PROVISIONING.
  • A empresa deve ter concluído sua inscrição no Android Enterprise.
  • Clientes MCP que se conectam com Sign in with Nomid em vez de uma chave de API precisam do escopo mcp:provisioning, e a configuração de provisionamento da empresa em Acesso de agente de IA no portal deve estar ativada.

Endpoint

O caminho é relativo à URL base da API e requer o cabeçalho X-API-Key. Uma solicitação bem-sucedida retorna 201 Created.

MétodoEndpointDescrição
POST/policies/{policyId}/provisioning-qr-codesCriar um código QR de provisionamento para uma política, com um novo token de inscrição

Corpo da solicitação

Todos os campos são opcionais: envie um objeto JSON vazio para obter um código sem Wi-Fi e com o uso pessoal padrão. Um campo desconhecido retorna 400.

CampoValoresDescrição
personalUsageUNSPECIFIED, ALLOWED, DISALLOWED, USERLESSComo o dispositivo é usado: ALLOWED para um perfil de trabalho em um dispositivo pessoal, DISALLOWED para um dispositivo corporativo totalmente gerenciado, USERLESS para um dispositivo dedicado sem conta de usuário. UNSPECIFIED é o padrão quando omitido.
wifiSsidUma rede Wi-Fi à qual o dispositivo se conecta durante a configuração. Até 32 bytes em UTF-8. Espaços ao redor são mantidos como parte do nome.
wifiPasswordA senha de wifiSsid, até 63 bytes em UTF-8. Uma senha WPA tem pelo menos 8 bytes. Uma chave WEP tem 5 ou 13 caracteres ASCII, ou 10 ou 26 dígitos hexadecimais. Nunca retornada.
wifiSecurityNONE, WPA, WEPA segurança de wifiSsid. O padrão é WPA quando uma senha é informada e NONE caso contrário. NONE não aceita senha, e WPA e WEP exigem uma.
wifiHiddenSe wifiSsid é uma rede oculta. O padrão é false.

wifiPassword, wifiSecurity e wifiHidden precisam de wifiSsid.

Resposta

CampoDescrição
policyIdO nome do caminho da política, o policyId com o qual os dispositivos se inscrevem.
policyNameO nome de exibição da política.
personalUsageO modo de uso pessoal do token de inscrição.
expiresAtQuando o código QR para de inscrever dispositivos.
wifiSsidA rede Wi-Fi à qual o dispositivo se conecta durante a configuração. Omitido quando nenhuma foi informada.
imageA imagem do código QR: mimeType (image/png) e data, os bytes da imagem em base64.
portalUrlUm link para a política no portal Nomid.

Exemplo

Crie um código para um dispositivo totalmente gerenciado que se conecta a uma rede WPA durante a configuração. O jq compila o corpo a partir de uma variável de ambiente, garantindo que a senha seja escapada corretamente e não vá parar no histórico do shell.

curl -X POST "https://api.nomid.tech/emm/api/v1/policies/p7k2m9qa4xz/provisioning-qr-codes" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --arg password "$WIFI_PASSWORD" \
    '{personalUsage: "DISALLOWED", wifiSsid: "Warehouse", wifiPassword: $password}')"
HTTP/1.1 201 Created

{
  "policyId": "p7k2m9qa4xz",
  "policyName": "Warehouse scanners",
  "personalUsage": "DISALLOWED",
  "expiresAt": "2026-10-11T14:30:00Z",
  "wifiSsid": "Warehouse",
  "image": {
    "mimeType": "image/png",
    "data": "iVBORw0KGgoAAAANSUhEUgAA..."
  },
  "portalUrl": "https://portal.nomid.tech/#/acme/acme/policy/p7k2m9qa4xz"
}

Decodifique data de base64 para obter o PNG. Os dados da imagem estão abreviados aqui.

Erro: política apenas para RV

HTTP/1.1 409 Conflict
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Conflict",
  "status": 409,
  "detail": "Policy q4vr8headset is a VR-only policy: its devices are provisioned with Nomid Ops over USB, not with a QR code.",
  "instance": "/emm/api/v1/policies/q4vr8headset/provisioning-qr-codes",
  "code": "unsupported",
  "retryable": false
}

Erros

Depois que a chave de API é autenticada, os erros usam application/problem+json com dois campos adicionais: code, um identificador estável para ramificação, e retryable, que indica se a mesma solicitação pode ser enviada novamente. Um corpo que não pode ser lido é a exceção, descrita na linha 400. Uma chave ausente ou inválida recebe a resposta 401 compartilhada, um pequeno objeto JSON com error, message e status. A ferramenta MCP retorna o mesmo code e message como um erro de ferramenta.

StatusCódigoSignificado
400invalid_argumentsUma opção é inválida: um valor desconhecido de personalUsage ou wifiSecurity, um campo de Wi-Fi sem wifiSsid, ou um nome, senha ou segurança de Wi-Fi que não atenda às regras acima. O detalhe informa qual. Um corpo que não seja um JSON válido ou que contenha um campo desconhecido também retorna 400, como detalhes do problema sem code ou retryable.
401-A chave de API está ausente, inválida, expirada ou revogada.
403forbiddenA chave não possui PROVISIONING ou POLICIES_READ.
404not_foundNenhuma política com este policyId na empresa da chave.
409unsupportedA política não pode provisionar dispositivos com um código QR: é uma política apenas para VR ou a empresa não concluiu sua inscrição no Android Enterprise.
422refusedA política foi excluída.
429rate_limitedMuitas solicitações de gravação para esta chave. O cabeçalho Retry-After e os detalhes informam os segundos de espera. retryable é true.
502provider_errorO Google não criou o token de inscrição. Nenhum código QR foi criado. retryable é true: tente novamente em instantes.

Limites de taxa

Cada solicitação conta para o limite de gravação de 10 solicitações por minuto por chave, compartilhado com os endpoints de comando de dispositivo e alteração de política e as ferramentas de gravação do MCP. Uma conexão do Sign in with Nomid que chama create_provisioning_qr_code consome o mesmo limite, contabilizado por conexão. Solicitações que falham nas verificações de permissão ou na validação de argumentos não são contabilizadas.

Ferramenta MCP

A ferramenta MCP create_provisioning_qr_code aceita as mesmas opções, com policyId como argumento. Ela retorna o código QR como um bloco de imagem MCP, para que o assistente possa exibi-lo ao usuário sem precisar lê-lo.

Servidor MCP

Escolha o seu horário

Carregando...
Abrir calendário de agendamento