{

"numeroNfse": {
  "description": "Número da Nota Fiscal de Serviço Eletrônica, formado pelo ano com 04 (quatro) dígitos e um número seqüencial com 11 posições – Formato AAAANNNNNNNNNNN.",
  "type": "integer",
  "minimum": 190000000000000,
  "maximum": 299999999999999
},
 "codigoVerificacao": {
  "description": "Código de verificação do número da nota",
  "type": "string",
  "maxLength": 9
},
"statusRps": {
  "description": "Código de status do RPS 1 – Normal ; 2 – Cancelado",
  "type": "integer",
  "minimum": 1,
  "maximum": 2
},
"statusNfse": {
  "description": "Código de status da NFS-e 1 – Normal ; 2 – Cancelado",
  "type": "integer",
  "minimum": 1,
  "maximum": 2
},
"naturezaOperacao": {
  "description": "Código de natureza da operação 1 – Tributação no município ; 2 - Tributação fora do município ; 3 - Isenção ; 4 - Imune ; 5 – Exigibilidade suspensa por decisão judicial ; 6 – Exigibilidade suspensa por procedimento administrativo ",
  "type": "integer",
  "minimum": 1,
  "maximum": 6
},
"regimeEspecialTributacao": {
  "description": "Código de natureza da operação 1 – Tributação no município ; 2 - Tributação fora do município ; 3 - Isenção ; 4 - Imune ; 5 – Exigibilidade suspensa por decisão judicial ; 6 – Exigibilidade suspensa por procedimento administrativo ",
  "type": "integer",
  "minimum": 1,
  "maximum": 6
},
"simNao": {
  "type": "boolean"
},
"quantidadeRps": {
  "description": "Quantidade de RPS do Lote",
  "type": "integer",
  "minimum": 1,
  "maximum": 9999
},
"numeroRps": {
  "description": "Número do RPS",
  "type": "integer",
  "minimum": 0,
  "maximum": 999999999999999
},
"serieRps": {
  "description": "Número de série do RPS",
  "type": "string",
  "maxLength": 5
},
"tipoRps": {
  "description": "Código de tipo de RPS 1 - RPS ; 2 – Nota Fiscal Conjugada (Mista) ; 3 – Cupom",
  "type": "integer",
  "minimum": 1,
  "maximum": 3
},
"outrasInformacoes": {
  "description": "Informações adicionais ao documento",
  "type": "string",
  "maxLength": 255
},
"valor": {
  "description": "Valor monetário. Formato: 0.00 (ponto separando casa decimal) Ex: 1.234,56 = 1234.56 ; 1.000,00 = 1000.00 ; 1.000,00 = 1000",
  "type": "number",
  "minimum": 0,
  "maximum": 9999999999999.99
},
"itemListaServico": {
  "description": "Código de item da lista de serviço",
  "type": "string",
  "maxLength": 5
},
"codigoCnae": {
  "description": "Código CNAE. Formato: 0000-0/00",
  "type": "string",
  "pattern": "^[0-9]{4}-[0-9]{1}/[0-9]{2}$"
},
"codigoTributacao": {
  "description": "Código de Tributação",
  "type": "string",
  "maxLength": 20
},
"aliquota": {
  "description": "Alíquota. Valor percentual. Formato: 0.0000 Ex: 1% = 0.01 ; 25,5% = 0.255 ; 100% = 1.0000 ou 1",
  "type": "numeric",
  "minimum": 0,
  "maximum": 1
},
"discriminacao": {
  "description": "Discriminação do conteúdo da NFS-e",
  "type": "string",
  "maxLength": 2000
},
"codigoMunicipioIbge": {
  "description": "Código de identificação do município conforme tabela do IBGE",
  "type": "integer",
  "minimum": 1,
  "maximum": 9999999
},
"inscricaoMunicipal": {
  "description": "Número de inscrição municipal",
  "type": "string",
  "maxLength": 15
},
"razaoSocial": {
  "description": "Razão Social do contribuinte",
  "type": "string",
  "maxLength": 115
},
"nomeFantasia": {
  "description": "Nome fantasia",
  "type": "string",
  "maxLength": 60
},
"cnpj": {
  "description": "Número CNPJ. Formato: 00.000.000/0000-00",
  "type": "string",
  "pattern": "^[0-9]{2}\.[0-9]{3}\.[0-9]{3}/[0-9]{4}-[0-9]{2}$"
},
"endereco": {
  "description": "Endereço",
  "type": "string",
  "maxLength": 125
},
"numeroEndereco": {
  "description": "Número do endereço",
  "type": "string",
  "maxLength": 10
},
"complementoEndereco": {
  "description": "Número do endereço",
  "type": "string",
  "maxLength": 60
},
"bairro": {
  "description": "Bairro",
  "type": "string",
  "maxLength": 60
},
"uf": {
  "description": "Sigla da unidade federativa",
  "type": "string",
  "enum": ["AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"]
},
"cep": {
  "description": "Número do CEP. Formato: 00000-000",
  "type": "string",
  "pattern": "^[0-9]{5}-[0-9]{3}$"
},
"email": {
  "description": "E-mail",
  "type": "string",
  "format": "email"
},
"telefone": {
  "description": "Telefone",
  "type": "string",
  "maxLength": 11
},
"cpf": {
  "description": "Número de CPF. Formato: 000.000.000-00",
  "type": "string",
  "pattern": "^[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}$"
},
"indicacaoCpfCnpj": {
  "description": "Indicador de uso de CPF ou CNPJ 1 – CPF ; 2 – CNPJ ; 3 – Não Informado",
  "type": "integer",
  "minimum": 1,
  "maximum": 3
},
"codigoObra": {
  "description": "Código de Obra",
  "type": "string",
  "maxLength": 15
},
"art": {
  "description": "Código ART",
  "type": "string",
  "maxLength": 15
},
"numeroLote": {
  "description": "Número do Lote de RPS",
  "type": "integer",
  "minimum": 1,
  "maximum": 999999999999999
},
"numeroProtocolo": {
  "description": "Número do protocolo de recebimento do RPS",
  "type": "string",
  "maxLength": 50
},
"situacaoLoteRps": {
  "description": "Código de situação de lote de RPS 1 – Não Recebido ; 2 – Não Processado ; 3 – Processado com Erro ; 4 – Processado com Sucesso",
  "type": "integer",
  "minimum": 1,
  "maximum": 4
},
"codigoMensagemAlerta": {
  "description": "Código de mensagem de retorno de serviço",
  "type": "string",
  "maxLength": 4
},
"descricaoMensagemAlerta": {
  "description": "Descrição da mensagem de retorno de serviço",
  "type": "string",
  "maxLength": 200
},
"codigoCancelamentoNfse": {
  "description": "Código de cancelamento com base na tabela de Erros e alertas",
  "type": "string",
  "maxLength": 4
},
"idTag": {
  "description": "Atributo de identificação da tag a ser assinada no documento XML",
  "type": "string",
  "maxLength": 255
},
"identificacaoRps": {
  "description": "Dados de identificação do RPS",
  "type": "object",
  "properties": {
    "numero": { "$ref": "#/numeroRps" },
    "serie": { "$ref": "#/serieRps" },
    "tipo": { "$ref": "#/tipoRps" }
  },
  "required": ["numero", "serie", "tipo"],
  "additionalProperties": false
},
"dadosServico": {
  "description": "Representa dados que compõe o serviço prestado",
  "type": "object",
  "properties": {
    "valores": {
      "type": "object",
      "properties": {
        "valorServicos": { "$ref": "#/valor" },
        "valorDeducoes": { "$ref": "#/valor" },
        "valorPis": { "$ref": "#/valor" },
        "valorCofins": { "$ref": "#/valor" },
        "valorInss": { "$ref": "#/valor" },
        "valorIr": { "$ref": "#/valor" },
        "valorCsll": { "$ref": "#/valor" },
        "issRetido": { "type": "boolean" },
        "valorIss": { "$ref": "#/valor" },
        "outrasRetencoes": { "$ref": "#/valor" },
        "baseCalculo": {
          "description": "(Valor dos serviços - Valor das deduções - descontos incondicionados)",
          "$ref": "#/valor" 
        },
        "aliquota": { "$ref": "#/aliquota" },
        "valorLiquidoNfse": { 
          "description": "(ValorServicos - ValorPIS - ValorCOFINS - ValorINSS - ValorIR - ValorCSLL - OutrasRetençoes - ValorISSRetido - DescontoIncondicionado - DescontoCondicionado)",
          "$ref": "#/valor" 
        },
        "valorIssRetido": { "$ref": "#/valor" },
        "descontoCondicionado": { "$ref": "#/valor" },
        "descontoIncondicionado": { "$ref": "#/valor" }
      },
      "required": ["valorServicos", "issRetido", "baseCalculo"],
      "additionalProperties": false
    },
    "itemListaServico": { "$ref": "#/itemListaServico" },
    "codigoCnae": { "$ref": "#/codigoCnae" },
    "codigoTributacaoMunicipio": { "$ref": "#/codigoTributacao" },
    "discriminacao": { "$ref": "#/discriminacao" },
    "codigoMunicipio": { "$ref": "#/codigoMunicipioIbge" }
  },
  "required": ["valores", "itemListaServico", "discriminacao", "codigoMunicipio"],
  "additionalProperties": false
},
"identificacaoPrestador": {
  "description": "Representa dados para identificação do prestador de serviço",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" },
        "cnpj": { "$ref": "#/cnpj" }
      },
      "required": ["cnpj"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" },
        "cpf": { "$ref": "#/cpf" }
      },
      "required": ["cpf"],
      "additionalProperties": false
    }
  ]
},
"dadosTomador": {
  "description": "Representa dados do tomador de serviço",
  "type": "object",
  "properties": {
    "identificacaoTomador": { "$ref": "#/identificacaoTomador" },
    "razaoSocial": { "$ref": "#/razaoSocial" },
    "endereco": { "$ref": "#/enderecoCompleto" },
    "contato": { "$ref": "#/contato" }
  },
  "additionalProperties": false
},
"identificacaoTomador": {
  "description": "Representa dados para identificação do tomador de serviço",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" },
        "cnpj": { "$ref": "#/cnpj" }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "cpf": { "$ref": "#/cpf" }
      },
      "additionalProperties": false
    }
  ]
},
"enderecoCompleto": {
  "description": "Representação completa do endereço.",
  "type": "object",
  "properties": {
    "endereco": { "$ref": "#/endereco" },
    "numero": { "$ref": "#/numeroEndereco" },
    "complemento": { "$ref": "#/complementoEndereco" },
    "bairro": { "$ref": "#/bairro" },
    "codigoMunicipio": { "$ref": "#/codigoMunicipioIbge" },
    "uf": { "$ref": "#/uf" },
    "cep": { "$ref": "#/cep" }
  },
  "required": [],
  "additionalProperties": false
},
"contato": {
  "description": "Representa forma de contato com a pessoa (física/jurídica)",
  "type": "object",
  "properties": {
    "telefone": { "$ref": "#/telefone" },
    "email": { "$ref": "#/email" }
  },
  "required": [],
  "additionalProperties": false
},
"identificacaoIntermediarioServico": {
  "description": "Representa dados para identificação de intermediário do serviço",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "razaoSocial": { "$ref": "#/razaoSocial" },
        "cnpj": { "$ref": "#/cnpj" },
        "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" }
      },
      "required": ["razaoSocial", "cnpj"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "razaoSocial": { "$ref": "#/razaoSocial" },
        "cpf": { "$ref": "#/cpf" },
        "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" }
      },
      "required": ["cpf"],
      "additionalProperties": false
    }
  ]
},
"dadosConstrucaoCivil": {
  "description": "Representa dados para identificação de intermediário do serviço",
  "type": "object",
  "properties": {
    "codigoObra": { "$ref": "#/codigoObra" },
    "art": { "$ref": "#/art" }
  },
  "required": [],
  "additionalProperties": false
},
"data": {
  "description": "Data como representada no padrão RFC 3339 section 5.6",
  "type": "string",
  "format": "date-time"
},
"codigoCancelamentoNfse": {
  "description": "Código de cancelamento com base na tabela de erros e alertas",
  "type": "string",
  "maxLength": 4
},
"identificacaoNfse": {
  "description": "Representa dados que identificam uma Nota Fiscal de Serviços Eletrônica",
  "type": "object",
  "properties": {
    "numero": { "$ref": "#/numeroNfse" },
    "cnpj": { "$ref": "#/cnpj" },
    "inscricaoMunicipal": { "$ref": "#/inscricaoMunicipal" },
    "codigoMunicipio": { "$ref": "#/codigoMunicipioIbge" }
  },
  "required": ["numero", "cnpj"],
  "additionalProperties": false
}

}