Org API · Enterprise

Gestão via API

Gerencie projetos, API keys, certificados A1 e configurações white-label da sua organização programaticamente. Ideal para plataformas que fazem onboarding autônomo de sub-clientes.

Autenticação

Todos os endpoints desta seção exigem um Organization Token (prefixo ntaas_org_) no header x-api-key. Tokens de projeto (ntaas_) não são aceitos nestas rotas.

curl -H "x-api-key: ntaas_org_XXXXXXXXXXXXXXXXXXXXXXXX" \
  https://platform.notaas.com.br/api/v1/org/projects
ScopePermissão
projects:readListar e visualizar projetos
projects:writeCriar e atualizar projetos
api_keys:manageCriar, listar e revogar API keys
settings:readLer configurações da organização
settings:writeConfigurar domínio white-label
certificates:writeUpload de certificado A1

Projetos

POST/org/projects🔑 x-api-key

Cria um novo projeto (empresa fiscal) na organização. Verifica limite do plano e duplicidade de CNPJ.

Body (JSON)

CampoTipoReq?Descrição
namestringsimNome do projeto (ex: "Filial SP")
cnpjstringsimCNPJ com 14 dígitos (formatado ou não). Validado com dígitos verificadores.
razaoSocialstringsimRazão social da empresa
inscricaoMunicipalstringnãoInscrição municipal
inscricaoEstadualstringnãoInscrição estadual
regimeTributario"1"|"2"|"3"|"3e"não"1" = Não Optante, "2" = MEI, "3" = SN ME/EPP, "3e" = SN Excesso de Sublimite
codigoMunicipiostringnãoCódigo IBGE 7 dígitos (ex: "4113700"). Validado contra a tabela de municípios.
emailstringnãoE-mail da empresa
telefonestringnãoTelefone da empresa
descriptionstringnãoDescrição do projeto
endereco.logradourostringnãoLogradouro
endereco.numerostringnãoNúmero
endereco.complementostringnãoComplemento
endereco.bairrostringnãoBairro
endereco.cidadestringnãoNome da cidade
endereco.ufstringnãoSigla do estado (ex: "SP")
endereco.cepstringnãoCEP (apenas dígitos)
codigoTributacaostringnãoCódigo de Tributação Nacional (LC 116/2003). Pré-preenche ao emitir NFS-e.
tributacaoIss1|2|3|4nãoTributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência
serieNfsestringnãoSérie da NFS-e (padrão: "1608", máx 5 dígitos)
aliquotaSimplesnumbernãoAlíquota efetiva DAS (%) para empresas SN ME/EPP
regimeIss1|2|3nãoApuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados
codigoServicoSpstringnãoCódigo de serviço da Prefeitura SP (5 dígitos). Obrigatório para município SP.
cnaestringnãoCNAE principal. Obrigatório para GINFES e Brasília/DF.
centiUsuariostringnãoUsuário para municípios com sistema Centi
centiSenhastringnãoSenha Centi (write-only)
ambiente1|2nãoAmbiente: 1=Produção, 2=Homologação
serieNfenumbernãoSérie NF-e mod. 55 (1-999)
serieNfcenumbernãoSérie NFC-e mod. 65 (1-999)
cscIdstringnãoID do CSC obtido no portal SEFAZ do estado
cscTokenstringnãoToken CSC (write-only — nunca retornado)
{
  "name": "Filial São Paulo",
  "cnpj": "12345678000195",
  "razaoSocial": "Acme Sistemas Ltda",
  "regimeTributario": "3",
  "codigoMunicipio": "3550308",
  "email": "[email protected]",
  "endereco": {
    "logradouro": "Av Paulista",
    "numero": "1000",
    "bairro": "Bela Vista",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "01310100"
  }
}
// Response 201
{
  "id": "a1b2c3d4-...",
  "name": "Filial São Paulo",
  "cnpj": "12345678000195",
  "razaoSocial": "Acme Sistemas Ltda",
  "codigoMunicipio": "3550308",
  "active": true,
  "createdAt": "2026-04-21T20:30:00Z"
}

Erros

CampoTipoReq?Descrição
400Bad RequestnãoCNPJ inválido, campo obrigatório ausente, código IBGE inexistente
403ForbiddennãoLimite de projetos do plano atingido
409ConflictnãoCNPJ já cadastrado na organização (retorna existingProjectId)
GET/org/projects🔑 x-api-key

Lista todos os projetos da organização com paginação e status de certificado/API key.

Query Params

CampoTipoReq?Descrição
pagenumbernãoPágina (padrão: 1)
limitnumbernãoItens por página (padrão: 20, máx: 100)
activebooleannãoFiltrar por ativos (padrão: true). Use active=false para incluir inativos.
// Response 200
{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "name": "Filial SP",
      "cnpj": "12345678000195",
      "codigoMunicipio": "3550308",
      "active": true,
      "hasCertificate": true,
      "hasApiKey": true,
      "createdAt": "2026-04-21T20:30:00Z"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 3 }
}
GET/org/projects/{id}🔑 x-api-key

Retorna os dados completos de um projeto (exceto certificado e senha).

// Response 200
{
  "id": "a1b2c3d4-...",
  "name": "Filial SP",
  "cnpj": "12345678000195",
  "razaoSocial": "Acme Sistemas Ltda",
  "inscricaoMunicipal": "12345",
  "inscricaoEstadual": "123456789",
  "regimeTributario": "3",
  "crt": 1,
  "codigoMunicipio": "3550308",
  "endereco": {
    "logradouro": "Av Paulista",
    "numero": "1000",
    "complemento": null,
    "bairro": "Bela Vista",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "01310100"
  },
  "email": "[email protected]",
  "telefone": "11999999999",
  "codigoTributacao": null,
  "tributacaoIss": 1,
  "serieNfse": "1608",
  "aliquotaSimples": 3.5,
  "regimeIss": null,
  "codigoServicoSp": "01015",
  "cnae": "6201501",
  "centiUsuario": null,
  "ambiente": 2,
  "serieNfe": 1,
  "serieNfce": 1,
  "cscId": "000001",
  "hasCscToken": true,
  "active": true,
  "createdAt": "2026-04-21T20:30:00Z",
  "updatedAt": "2026-04-21T20:30:00Z"
}
PATCH/org/projects/{id}🔑 x-api-key

Atualiza campos do projeto. O CNPJ é imutável após criação.

Body (JSON) — campos opcionais

CampoTipoReq?Descrição
namestringnãoNovo nome do projeto
razaoSocialstringnãoNova razão social
inscricaoMunicipalstringnãoInscrição municipal
inscricaoEstadualstringnãoInscrição estadual
regimeTributario"1"|"2"|"3"|"3e"nãoRegime tributário ("1"=Não Optante, "2"=MEI, "3"=SN ME/EPP, "3e"=SN Excesso)
codigoMunicipiostringnãoCódigo IBGE do município
emailstringnãoE-mail
telefonestringnãoTelefone
descriptionstringnãoDescrição do projeto
endereco.*objectnãoCampos de endereço (logradouro, numero, bairro, cidade, uf, cep)
codigoTributacaostringnãoCódigo de Tributação Nacional (LC 116/2003)
tributacaoIss1|2|3|4nãoTributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência
serieNfsestringnãoSérie da NFS-e (padrão: "1608", máx 5 dígitos)
aliquotaSimplesnumber | nullnãoAlíquota efetiva DAS (%) para empresas SN ME/EPP
regimeIss1|2|3 | nullnãoApuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados
codigoServicoSpstringnãoCódigo de serviço da Prefeitura SP (5 dígitos)
cnaestringnãoCNAE principal
centiUsuariostringnãoUsuário para municípios com sistema Centi
centiSenhastringnãoSenha Centi (write-only)
ambiente1|2nãoAmbiente: 1=Produção, 2=Homologação
serieNfenumber | nullnãoSérie NF-e mod. 55 (1-999)
serieNfcenumber | nullnãoSérie NFC-e mod. 65 (1-999)
cscIdstring | nullnãoID do CSC
cscTokenstring | nullnãoToken CSC (write-only)
// Request
{ "name": "Filial SP - Centro", "regimeTributario": "1" }

// Response 200
{ "updated": true, "id": "a1b2c3d4-..." }

API Keys de Projeto

POST/org/projects/{id}/api-keys🔑 x-api-key

Cria uma API key para o projeto. A chave completa é retornada apenas nesta resposta — nunca mais.

Body (JSON)

CampoTipoReq?Descrição
namestringsimNome descritivo da chave (ex: "Produção Backend")
// Response 201
{
  "id": "key-uuid-...",
  "name": "Produção Backend",
  "key": "ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "keyPrefix": "ntaas_XXXX",
  "scopes": ["emit", "cancel", "query"],
  "rateLimitPerMinute": 60,
  "createdAt": "2026-04-21T20:35:00Z"
}

⚠️ Atenção

O campo key é exibido apenas nesta resposta. Armazene-o com segurança. Se perdido, revogue e crie uma nova chave.

GET/org/projects/{id}/api-keys🔑 x-api-key

Lista as API keys do projeto (sem expor a chave completa).

// Response 200
{
  "data": [
    {
      "id": "key-uuid-...",
      "name": "Produção Backend",
      "keyPrefix": "ntaas_XXXX",
      "scopes": ["emit", "cancel", "query"],
      "rateLimitPerMinute": 60,
      "active": true,
      "lastUsedAt": "2026-04-21T20:40:00Z",
      "createdAt": "2026-04-21T20:35:00Z"
    }
  ]
}
DELETE/org/projects/{id}/api-keys/{keyId}🔑 x-api-key

Revoga (desativa) uma API key. A chave para de funcionar imediatamente.

// Response 200
{ "revoked": true, "id": "key-uuid-..." }

Certificado Digital A1

POST/org/projects/{id}/certificate🔑 x-api-key

Upload de certificado digital A1 (.pfx/.p12). Substitui atomicamente o certificado anterior.

Body (multipart/form-data)

CampoTipoReq?Descrição
fileFile (.pfx/.p12)simArquivo do certificado A1 (máx. 50KB)
passwordstringsimSenha do certificado
curl -X POST https://platform.notaas.com.br/api/v1/org/projects/{id}/certificate \
  -H "x-api-key: ntaas_org_XXXXXXXX..." \
  -F "[email protected]" \
  -F "password=minhaSenha123"
// Response 201
{
  "id": "cert-uuid-...",
  "fileName": "certificado.pfx",
  "subjectCN": "ACME SISTEMAS LTDA:12345678000195",
  "validFrom": "2026-01-15T00:00:00Z",
  "validUntil": "2027-01-15T23:59:59Z",
  "daysUntilExpiration": 269,
  "active": true
}

Erros

CampoTipoReq?Descrição
400Bad RequestnãoArquivo inválido, senha incorreta, certificado expirado
413Payload Too LargenãoArquivo excede 50KB

Configurações da Organização

GET/org/settings🔑 x-api-key

Retorna configurações atuais da organização e resumo de uso do plano.

// Response 200
{
  "name": "Acme Sistemas",
  "slug": "acme-sistemas",
  "storageBaseUrl": "https://storage.acmesistemas.com.br",
  "subscription": {
    "planName": "Pro",
    "planSlug": "pro",
    "creditsUsed": 42,
    "creditsLimit": 500,
    "daysLeft": 18
  }
}
PATCH/org/settings🔑 x-api-key

Configura o domínio white-label para documentos (PDF/XML). O CNAME deve apontar para backbone.notaas.com.br.

Body (JSON)

CampoTipoReq?Descrição
storageBaseUrlstring | nullsimURL HTTPS do domínio customizado (ex: "https://storage.acme.com.br"). Envie null para remover.
// Request
{ "storageBaseUrl": "https://storage.acmesistemas.com.br" }

// Response 200
{
  "storageBaseUrl": "https://storage.acmesistemas.com.br",
  "status": "pending_verification",
  "message": "Configure o CNAME do domínio apontando para backbone.notaas.com.br."
}

Validações

CampoTipoReq?Descrição
HTTPSobrigatórionãoApenas URLs com protocolo https: são aceitas
Domínio públicoobrigatórionãoSem localhost, IPs, .local ou hostnames sem domínio
CNAMEmanualnãoConfigure o registro CNAME apontando para backbone.notaas.com.br

Rate Limiting

Org Tokens possuem rate limit de 120 requisições/minuto por padrão. Ao exceder, a API retorna 429 Too Many Requests com o header Retry-After.

Fluxo Completo de Onboarding

PASSO A PASSO

  1. Criar org token no dashboard (Settings → API Tokens → Novo)
  2. POST /org/projects — criar projeto do sub-cliente
  3. POST /org/projects/:id/certificate — upload do certificado A1
  4. POST /org/projects/:id/api-keys — criar API key do projeto
  5. Usar a ntaas_ key retornada para emitir notas via POST /emitir