{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/facture-ar/json-schema/facture-ar-invoice-schema.json",
  "title": "Invoice",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/facture-ar-openapi.json#/components/schemas/Invoice",
  "type": "object",
  "required": [
    "id",
    "userId",
    "cuitId",
    "environment",
    "amount",
    "voucherNumber",
    "feCAEReq",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "ID de la factura"
    },
    "userId": {
      "type": "string",
      "description": "ID del usuario"
    },
    "cuitId": {
      "type": "string",
      "description": "ID del CUIT emisor"
    },
    "environment": {
      "type": "string",
      "enum": [
        "production",
        "homologation"
      ],
      "description": "Entorno en el que se emitió"
    },
    "amount": {
      "type": "number",
      "description": "Importe total"
    },
    "voucherNumber": {
      "type": "integer",
      "description": "Número de comprobante"
    },
    "ptoVta": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Punto de venta"
    },
    "invoiceType": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Tipo de comprobante (código de ARCA)"
    },
    "feCAEReq": {
      "type": "object",
      "description": "Solicitud enviada a ARCA (FeCAEReq con FeCabReq y FeDetReq), más items, tributos y clientName"
    },
    "feCabResp": {
      "type": [
        "object",
        "null"
      ],
      "description": "Respuesta de ARCA tal cual (FeCabResp y FeDetResp; el CAE y su vencimiento están en FeDetResp.FECAEDetResponse)"
    },
    "status": {
      "type": "string",
      "enum": [
        "processing",
        "success",
        "error"
      ],
      "description": "Estado de la factura"
    },
    "errorMessage": {
      "type": [
        "string",
        "null"
      ],
      "description": "Motivo del error, si status es error"
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Descripción de la factura"
    },
    "issuedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Cuándo ARCA autorizó el comprobante. En las facturas emitidas desde Facturear es la fecha de creación; en las importadas desde ARCA, la fecha del comprobante. Los reportes agrupan por este campo"
    },
    "origin": {
      "type": "string",
      "enum": [
        "facturear",
        "arca"
      ],
      "description": "facturear: emitida desde Facturear. arca: copiada de un comprobante que ARCA ya había autorizado (Importar desde ARCA)"
    },
    "voidedBy": {
      "type": [
        "string",
        "null"
      ],
      "description": "ID de la nota de crédito que anuló esta factura (POST /invoices/{invoiceId}/credit-note), o null. Solo viene en GET /invoices"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Fecha de creación"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Fecha de última actualización"
    },
    "cuit": {
      "type": "object",
      "description": "CUIT emisor. persona solo viene en GET /invoices/{invoiceId}",
      "properties": {
        "number": {
          "type": "string",
          "description": "Número de CUIT"
        },
        "persona": {
          "type": [
            "object",
            "null"
          ],
          "description": "Datos del padrón de ARCA del emisor"
        }
      }
    }
  }
}