{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/astranexo-com/json-schema/astranexo-com-receptor-message-request-schema.json",
  "title": "ReceptorMessageRequest",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aster-openapi.yaml#/components/schemas/ReceptorMessageRequest",
  "type": "object",
  "required": [
    "clave",
    "message",
    "issuer_id",
    "issuer_id_type",
    "receiver_id",
    "receiver_id_type",
    "issue_date",
    "total"
  ],
  "properties": {
    "clave": {
      "type": "string",
      "pattern": "^[0-9A-Z]{50}$",
      "description": "Clave del comprobante recibido (alias `key`)."
    },
    "message": {
      "description": "`1` aceptación, `2` aceptación parcial, `3` rechazo (alias `mensaje`). Acepta número o texto.",
      "oneOf": [
        {
          "type": "integer",
          "enum": [
            1,
            2,
            3
          ]
        },
        {
          "type": "string",
          "enum": [
            "1",
            "2",
            "3"
          ]
        }
      ]
    },
    "message_detail": {
      "type": "string",
      "maxLength": 160,
      "description": "Detalle; obligatorio en la aceptación parcial (alias `detalle_mensaje`, `detail`)."
    },
    "issuer_id": {
      "type": "string",
      "pattern": "^[0-9A-Z]+$",
      "description": "Identificación del emisor del comprobante (alias `emisor_id`, `cedula_emisor`)."
    },
    "issuer_id_type": {
      "type": "string",
      "description": "Tipo de identificación del emisor (alias `emisor_id_type`, `tipo_emisor`)."
    },
    "receiver_id": {
      "type": "string",
      "pattern": "^[0-9A-Z]+$",
      "description": "Identificación de la organización receptora (alias `receptor_id`, `cedula_receptor`)."
    },
    "receiver_id_type": {
      "type": "string",
      "description": "Tipo de identificación del receptor (alias `receptor_id_type`, `tipo_receptor`)."
    },
    "issue_date": {
      "type": "string",
      "description": "Fecha de emisión del comprobante (alias `fecha_emision`, `date`)."
    },
    "total": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Total del comprobante (alias `total_factura`)."
    },
    "total_tax": {
      "type": "number",
      "description": "Impuesto total del comprobante (alias `total_impuesto`, `monto_total_impuesto`)."
    },
    "activity_code": {
      "type": "string",
      "pattern": "^(\\d{6}|\\d{2,4}\\.\\d{1,2})$",
      "description": "Actividad económica del receptor (alias `codigo_actividad`)."
    },
    "tax_condition": {
      "type": "string",
      "enum": [
        "01",
        "02",
        "03",
        "04",
        "05"
      ],
      "description": "Condición del impuesto (alias `condicion_impuesto`)."
    },
    "total_tax_credit": {
      "type": "number",
      "description": "Impuesto a acreditar (alias `monto_total_impuesto_acreditar`)."
    },
    "total_applicable_expense": {
      "type": "number",
      "description": "Gasto aplicable (alias `monto_total_gasto_aplicable`)."
    },
    "environment": {
      "$ref": "#/$defs/Environment"
    },
    "callback_url": {
      "type": "string",
      "format": "uri"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en"
      ]
    },
    "original_doc_type": {
      "type": "string",
      "default": "01",
      "description": "Tipo del comprobante recibido (alias `tipo_documento_original`)."
    }
  },
  "$defs": {
    "Environment": {
      "type": "string",
      "enum": [
        "staging",
        "production"
      ],
      "description": "Ambiente de Hacienda. Con claves de Aster lo decide la clave."
    }
  }
}