{
  "$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-nfcoms-request-schema.json",
  "title": "post_api_v1_nfcomsRequest",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": [
    "app/app/Modules/Fiscal/Nfcom/Http/Controllers/NfcomController.php:19"
  ],
  "type": "object",
  "properties": {
    "ide": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "cUF": {
          "x-laravel-rules": [
            "required",
            "integer"
          ],
          "type": "integer"
        },
        "dhEmi": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "serie": {
          "x-laravel-rules": [
            "sometimes",
            "integer"
          ],
          "type": "integer"
        },
        "cMunFG": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        }
      },
      "required": [
        "cUF",
        "dhEmi",
        "cMunFG"
      ]
    },
    "emit": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "CNPJ": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "xNome": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "CRT": {
          "x-laravel-rules": [
            "required",
            "integer"
          ],
          "type": "integer"
        },
        "IE": {
          "x-laravel-rules": [
            "required",
            "regex:/^[0-9]{2,14}$/"
          ],
          "pattern": "^[0-9]{2,14}$"
        }
      },
      "required": [
        "CNPJ",
        "xNome",
        "CRT",
        "IE"
      ]
    },
    "enderEmit": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": [
        "array",
        "object"
      ],
      "items": {},
      "additionalProperties": true
    },
    "dest": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "xNome": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "CNPJ": {
          "x-laravel-rules": [
            "required_without_all:dest.CPF,dest.idOutros",
            "nullable",
            "string"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Obrigatório quando todos estiverem ausentes dest.CPF,dest.idOutros."
        },
        "CPF": {
          "x-laravel-rules": [
            "required_without_all:dest.CNPJ,dest.idOutros",
            "nullable",
            "string"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Obrigatório quando todos estiverem ausentes dest.CNPJ,dest.idOutros."
        },
        "idOutros": {
          "x-laravel-rules": [
            "required_without_all:dest.CNPJ,dest.CPF",
            "nullable",
            "string"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Obrigatório quando todos estiverem ausentes dest.CNPJ,dest.CPF."
        },
        "indIEDest": {
          "x-laravel-rules": [
            "required",
            "integer"
          ],
          "type": "integer"
        }
      },
      "required": [
        "xNome",
        "indIEDest"
      ]
    },
    "enderDest": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "xLgr": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "nro": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "xBairro": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "cMun": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "xMun": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "CEP": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "UF": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        }
      },
      "required": [
        "xLgr",
        "nro",
        "xBairro",
        "cMun",
        "xMun",
        "CEP",
        "UF"
      ]
    },
    "assinante": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "iCodAssinante": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "tpAssinante": {
          "x-laravel-rules": [
            "required",
            "integer"
          ],
          "type": "integer"
        },
        "tpServUtil": {
          "x-laravel-rules": [
            "required",
            "integer"
          ],
          "type": "integer"
        }
      },
      "required": [
        "iCodAssinante",
        "tpAssinante",
        "tpServUtil"
      ]
    },
    "det": {
      "x-laravel-rules": [
        "sometimes",
        "array"
      ],
      "type": [
        "array",
        "object"
      ],
      "items": {},
      "additionalProperties": true
    },
    "prod": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "cProd": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "xProd": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "cClass": {
          "x-laravel-rules": [
            "required",
            "regex:/^[0-9]{7}$/"
          ],
          "pattern": "^[0-9]{7}$"
        },
        "uMed": {
          "x-laravel-rules": [
            "required",
            "string"
          ],
          "type": "string"
        },
        "qFaturada": {
          "x-laravel-rules": [
            "required",
            "numeric"
          ],
          "type": "number"
        },
        "vItem": {
          "x-laravel-rules": [
            "required",
            "numeric"
          ],
          "type": "number"
        },
        "vProd": {
          "x-laravel-rules": [
            "required",
            "numeric"
          ],
          "type": "number"
        }
      },
      "required": [
        "cProd",
        "xProd",
        "cClass",
        "uMed",
        "qFaturada",
        "vItem",
        "vProd"
      ]
    },
    "total": {
      "x-laravel-rules": [
        "required",
        "array"
      ],
      "type": "object",
      "properties": {
        "vProd": {
          "x-laravel-rules": [
            "required",
            "numeric"
          ],
          "type": "number"
        },
        "vNF": {
          "x-laravel-rules": [
            "required",
            "numeric"
          ],
          "type": "number"
        }
      },
      "required": [
        "vProd",
        "vNF"
      ]
    }
  },
  "required": [
    "ide",
    "emit",
    "enderEmit",
    "dest",
    "enderDest",
    "assinante",
    "prod",
    "total"
  ]
}