{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dabradata-com/json-schema/dabradata-com-nfse-nota-saida-schema.json",
  "title": "NotaSaida",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dabradata-com-openapi.yaml#/components/schemas/NfseNotaSaida",
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "estado": {
      "type": "string",
      "enum": [
        "recebida",
        "na_fila",
        "enviando",
        "aguardando_sefin",
        "autorizada",
        "rejeitada",
        "cancelada",
        "substituida",
        "quarentena",
        "descartada"
      ],
      "title": "Estado",
      "description": "`descartada`: saiu da quarentena sem ir à Sefin (terminal, sem número)"
    },
    "emissor_id": {
      "type": "integer",
      "title": "Emissor Id"
    },
    "simulada": {
      "type": "boolean",
      "title": "Simulada",
      "description": "nota do sandbox (emissor de ambiente 3): sem valor fiscal, sem cobrança, sem link público; apagada 30 dias depois de criada"
    },
    "referencia_externa": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Referencia Externa"
    },
    "competencia": {
      "type": "string",
      "format": "date",
      "title": "Competencia"
    },
    "valor": {
      "type": "string",
      "title": "Valor"
    },
    "numero_dps": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Numero Dps"
    },
    "dps_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Dps Id"
    },
    "chave": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chave"
    },
    "numero_nfse": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Numero Nfse"
    },
    "tomador": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tomador",
      "description": "o tomador como vai à DPS (o resolvido pelo serviço)"
    },
    "erro": {
      "anyOf": [
        {
          "$ref": "#/$defs/NfseErroNota"
        },
        {
          "type": "null"
        }
      ],
      "description": "na `quarentena`, o motivo; na `rejeitada`, a recusa"
    },
    "alertas": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Alertas"
    },
    "tentativas": {
      "type": "integer",
      "title": "Tentativas"
    },
    "criada_em": {
      "type": "string",
      "format": "date-time",
      "title": "Criada Em"
    },
    "atualizada_em": {
      "type": "string",
      "format": "date-time",
      "title": "Atualizada Em"
    },
    "autorizada_em": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Autorizada Em"
    },
    "cancelada_em": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cancelada Em"
    },
    "substitui": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Substitui",
      "description": "id da nota que esta substitui (grupo subst da DPS)"
    },
    "substituida_por": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Substituida Por",
      "description": "id da nota que substituiu esta (estado `substituida`)"
    },
    "substituida_em": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Substituida Em"
    },
    "pdf_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pdf Url",
      "description": "link público do DANFSe (arquivos.dabradata.com; o link é a chave, vence em 7 dias e é renovado ao consultar a nota); null se indisponível"
    },
    "xml_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Xml Url",
      "description": "link público do XML da NFS-e, nas mesmas regras de `pdf_url`"
    },
    "links_expiram_em": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Links Expiram Em"
    },
    "descartada_em": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Descartada Em",
      "description": "quando saiu da quarentena descartada"
    },
    "descarte_motivo": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Descarte Motivo",
      "description": "o motivo informado no descarte"
    },
    "cobranca": {
      "anyOf": [
        {
          "$ref": "#/$defs/NfseCobrancaNota"
        },
        {
          "type": "null"
        }
      ],
      "description": "cobrança da nota autorizada (preço por nota autorizada em produção; cancelamento e sandbox são grátis); null antes da autorização"
    }
  },
  "type": "object",
  "required": [
    "id",
    "estado",
    "emissor_id",
    "simulada",
    "referencia_externa",
    "competencia",
    "valor",
    "numero_dps",
    "dps_id",
    "chave",
    "numero_nfse",
    "tomador",
    "erro",
    "alertas",
    "tentativas",
    "criada_em",
    "atualizada_em",
    "autorizada_em",
    "cancelada_em",
    "substitui",
    "substituida_por",
    "substituida_em",
    "pdf_url",
    "xml_url",
    "links_expiram_em",
    "cobranca"
  ],
  "$defs": {
    "NfseCobrancaNota": {
      "properties": {
        "estado": {
          "type": "string",
          "enum": [
            "nao_aplicavel",
            "pendente",
            "cobrada"
          ],
          "title": "Estado",
          "description": "`cobrada`: o valor entrou no extrato da conta Dabra; `pendente`: a cobrança será confirmada em instantes (a nota vale do mesmo jeito); `nao_aplicavel`: sem cobrança (sandbox ou produção restrita)"
        },
        "valor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Valor",
          "description": "preço desta nota, em reais (string decimal); null até a confirmação"
        },
        "cobrada_em": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cobrada Em"
        }
      },
      "type": "object",
      "required": [
        "estado",
        "valor",
        "cobrada_em"
      ],
      "title": "CobrancaNota"
    },
    "NfseErroNota": {
      "properties": {
        "codigo": {
          "type": "string",
          "title": "Codigo"
        },
        "mensagem": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Mensagem"
        }
      },
      "type": "object",
      "required": [
        "codigo",
        "mensagem"
      ],
      "title": "ErroNota"
    }
  }
}