{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/foxnfe-com-br/json-schema/foxnfe-com-br-post-api-v1-nfce-emit-request-schema.json",
  "title": "post_api_v1_nfce_emitRequest",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": [
    "app/app/Http/Requests/EmitNfeRequest.php:20"
  ],
  "type": "object",
  "properties": {
    "natureza_operacao": {
      "x-laravel-rules": [
        "sometimes",
        "string",
        "max:60"
      ],
      "type": "string",
      "maxLength": 60
    },
    "pagamentos": {
      "x-laravel-rules": [
        "sometimes",
        "array",
        "min:1"
      ],
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "forma": {
            "x-laravel-rules": [
              "required_with:pagamentos",
              "string",
              "regex:/^\\d{2}$/"
            ],
            "type": "string",
            "description": "Obrigatório quando estiver presente pagamentos.",
            "pattern": "^\\d{2}$"
          },
          "valor": {
            "x-laravel-rules": [
              "required_with:pagamentos",
              "numeric",
              "min:0"
            ],
            "type": "number",
            "description": "Obrigatório quando estiver presente pagamentos.",
            "minimum": 0
          },
          "tipo_integracao": {
            "x-laravel-rules": [
              "sometimes",
              "integer",
              "in:1,2"
            ],
            "type": "integer",
            "enum": [
              1,
              2
            ]
          },
          "cnpj_credenciadora": {
            "x-laravel-rules": [
              "sometimes",
              "string",
              "regex:/^\\d{14}$/"
            ],
            "type": "string",
            "pattern": "^\\d{14}$"
          },
          "bandeira": {
            "x-laravel-rules": [
              "sometimes",
              "string",
              "regex:/^\\d{2}$/"
            ],
            "type": "string",
            "pattern": "^\\d{2}$"
          },
          "autorizacao": {
            "x-laravel-rules": [
              "sometimes",
              "string",
              "max:128"
            ],
            "type": "string",
            "maxLength": 128
          }
        }
      }
    },
    "destinatario": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "cpf_cnpj": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "x-laravel-custom-validation": true,
          "description": "Validação adicional de domínio é aplicada pelo servidor (por exemplo dígitos verificadores e autorização).",
          "type": "string"
        },
        "nome": {
          "x-laravel-rules": [
            "required",
            "string",
            "max:255"
          ],
          "type": "string",
          "maxLength": 255
        },
        "inscricao_estadual": {
          "x-laravel-rules": [
            "nullable",
            "string",
            "max:14"
          ],
          "type": [
            "string",
            "null"
          ],
          "maxLength": 14
        },
        "endereco": {
          "x-laravel-rules": [
            "required",
            "array"
          ],
          "type": "object",
          "properties": {
            "logradouro": {
              "x-laravel-rules": [
                "required",
                "string",
                "max:255"
              ],
              "type": "string",
              "maxLength": 255
            },
            "numero": {
              "x-laravel-rules": [
                "required",
                "string",
                "max:60"
              ],
              "type": "string",
              "maxLength": 60
            },
            "bairro": {
              "x-laravel-rules": [
                "required",
                "string",
                "max:60"
              ],
              "type": "string",
              "maxLength": 60
            },
            "municipio": {
              "x-laravel-rules": [
                "required",
                "string",
                "max:60"
              ],
              "type": "string",
              "maxLength": 60
            },
            "uf": {
              "x-laravel-rules": [
                "required",
                "string",
                "size:2"
              ],
              "type": "string",
              "minLength": 2,
              "maxLength": 2
            },
            "cep": {
              "x-laravel-rules": [
                "required",
                "regex:/^\\d{8}$/"
              ],
              "pattern": "^\\d{8}$"
            }
          },
          "required": [
            "logradouro",
            "numero",
            "bairro",
            "municipio",
            "uf",
            "cep"
          ]
        }
      },
      "required": [
        "cpf_cnpj",
        "nome",
        "endereco"
      ]
    },
    "itens": {
      "x-laravel-rules": [
        "required",
        "array",
        "min:1"
      ],
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "produto": {
            "x-laravel-rules": [
              "required",
              "string",
              "max:120"
            ],
            "type": "string",
            "maxLength": 120
          },
          "codigo": {
            "x-laravel-rules": [
              "required_with:itens.*.rtc_resolution_id",
              "nullable",
              "string",
              "max:60"
            ],
            "type": [
              "string",
              "null"
            ],
            "description": "Obrigatório quando estiver presente itens.*.rtc_resolution_id.",
            "maxLength": 60
          },
          "ncm": {
            "x-laravel-rules": [
              "required",
              "regex:/^\\d{8}$/"
            ],
            "pattern": "^\\d{8}$"
          },
          "cfop": {
            "x-laravel-rules": [
              "required",
              "regex:/^\\d{4}$/"
            ],
            "pattern": "^\\d{4}$"
          },
          "unidade": {
            "x-laravel-rules": [
              "required",
              "string",
              "max:6"
            ],
            "type": "string",
            "maxLength": 6
          },
          "quantidade": {
            "x-laravel-rules": [
              "required",
              "numeric",
              "min:0.01"
            ],
            "type": "number",
            "minimum": 0.01
          },
          "valor_unitario": {
            "x-laravel-rules": [
              "required",
              "numeric",
              "min:0.01"
            ],
            "type": "number",
            "minimum": 0.01
          },
          "csosn": {
            "x-laravel-rules": [
              "nullable",
              "string",
              "max:3"
            ],
            "type": [
              "string",
              "null"
            ],
            "maxLength": 3
          },
          "cst": {
            "x-laravel-rules": [
              "nullable",
              "string",
              "max:3"
            ],
            "type": [
              "string",
              "null"
            ],
            "maxLength": 3
          },
          "rtc_resolution_id": {
            "x-laravel-rules": [
              "nullable",
              "uuid"
            ],
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "produto",
          "ncm",
          "cfop",
          "unidade",
          "quantidade",
          "valor_unitario"
        ],
        "x-prohibited-fields": [
          "ibscbs"
        ]
      }
    }
  },
  "required": [
    "destinatario",
    "itens"
  ]
}