Citi · Schema

FinalMessageResponse

BankingFinancial ServicesOpen BankingPaymentsTreasuryISO 20022Commercial CardsForeign ExchangeCustodyTrade FinanceCorporate BankingAPI Gateway

Properties

Name Type Description
message_id string Message Identification
creation_date_time string UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Date time when a message was created
message_type string Message Type as provided by the customer - RFR - Request for Refund (camt.056) - RRFR - Response to Request for Refund(camt.029) - PCR - Payment Confirmation Request - RPCR - Response to Payment Confi
original_payment object
message object
View JSON Schema on GitHub

JSON Schema

citi-final-message-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citi/main/json-schema/citi-final-message-response-schema.json",
  "title": "FinalMessageResponse",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/citi-non-payment-messages-api-openapi.yml#/components/schemas/Final-Message-Response",
  "type": "object",
  "properties": {
    "message_id": {
      "type": "string",
      "description": "Message Identification",
      "readOnly": true,
      "maxLength": 35,
      "title": "message_id"
    },
    "creation_date_time": {
      "type": "string",
      "format": "date-time",
      "description": "UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) \n- Date time when a message was created",
      "readOnly": true,
      "title": "creation_date_time"
    },
    "message_type": {
      "type": "string",
      "description": "Message Type as provided by the customer \n- RFR - Request for Refund (camt.056) \n- RRFR - Response to Request for Refund(camt.029) \n- PCR - Payment Confirmation Request \n- RPCR - Response to Payment Confirmation Request \n- RFP - Request for Payment (pain.013) \n- RRFP - Response to Request for Payment (pain.014) \n- RFICS - Request for Information Compliance \n- RRFICS - Response to Request for Information Compliance",
      "enum": [
        "RFR",
        "RRFR",
        "PCR",
        "RPCR",
        "RFP",
        "RRFP",
        "RFICS",
        "RRFICS"
      ],
      "title": "message_type"
    },
    "original_payment": {
      "type": "object",
      "title": "OriginalPayment",
      "readOnly": true,
      "properties": {
        "message_id": {
          "type": "string",
          "description": "Message Id of original payment",
          "maxLength": 35,
          "title": "message_id"
        },
        "creation_date_time": {
          "type": "string",
          "format": "date-time",
          "description": "UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) \n- Date time when a original payment was created",
          "title": "creation_date_time"
        },
        "instruction_id": {
          "type": "string",
          "description": "Instruction ID of Original Payment",
          "minLength": 1,
          "maxLength": 35,
          "title": "instruction_id"
        },
        "end_to_end_id": {
          "type": "string",
          "description": "End to End ID of Original Payment",
          "minLength": 1,
          "maxLength": 35,
          "title": "end_to_end_id"
        },
        "transaction_id": {
          "type": "string",
          "description": "Transaction ID of Original Payment",
          "minLength": 1,
          "maxLength": 35,
          "title": "transaction_id"
        },
        "uetr": {
          "type": "string",
          "description": "UETR of Original payment",
          "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$",
          "title": "uetr"
        },
        "clearing_reference": {
          "type": "string",
          "description": "Clearing reference of Original Payment",
          "minLength": 1,
          "maxLength": 35,
          "title": "clearing_reference"
        },
        "instructed_amount": {
          "type": "number",
          "description": "Instructed amount of Original Payment",
          "minimum": 0.01,
          "maximum": 1000000000000000,
          "title": "instructed_amount"
        },
        "instructed_currency": {
          "type": "string",
          "description": "Instructed currency of Original Payment",
          "enum": [
            "USD",
            "EUR",
            "GBP",
            "AUD",
            "INR",
            "ARS",
            "BRL",
            "HUF",
            "HKD",
            "CNY"
          ],
          "title": "instructed_currency"
        },
        "value_date": {
          "type": "string",
          "format": "date",
          "description": "Date in local time zone (e.g., EST for a United States RTP network transaction) when Citi's transaction processing application starts processing a transaction.Format is YYYY-MM-DD",
          "title": "value_date"
        },
        "message_name_identification": {
          "type": "string",
          "description": "Clearing specific original message name",
          "minLength": 1,
          "maxLength": 35,
          "title": "message_name_identification"
        },
        "requested_execution_date": {
          "type": "string",
          "format": "date",
          "description": "Requested Execution Date of Original Request for Payment",
          "title": "requested_execution_date"
        },
        "requested_execution_date_time": {
          "type": "string",
          "format": "date-time",
          "description": "Requested Execution Date/ Time of Original Request for Payment",
          "title": "requested_execution_date_time"
        },
        "expiry_date": {
          "type": "string",
          "format": "date",
          "description": "Expiry Date of Original Request for Payment",
          "title": "expiry_date"
        },
        "expiry_date_time": {
          "type": "string",
          "format": "date-time",
          "description": "Expiry Date/Time of Original Request for Payment",
          "title": "expiry_date_time"
        },
        "payment_information_id": {
          "type": "string",
          "maxLength": 35,
          "minLength": 1,
          "description": "Payment Information ID Original Request for Payment",
          "title": "payment_information_id"
        },
        "category_purpose": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "description": "Category purpose of original payment",
          "title": "category_purpose"
        },
        "unstructured_remittance_info": {
          "type": "array",
          "description": "Unstructured remitance information of original payment",
          "items": {
            "$ref": "#/$defs/Unstructured"
          },
          "title": "unstructured_remittance_info"
        },
        "structured_remittance_info": {
          "type": "object",
          "title": "structured_remittance_info",
          "properties": {
            "creditor_reference_information_code": {
              "maxLength": 35,
              "minLength": 1,
              "type": "string",
              "description": "Structured Creditor Reference Information Code of original payment",
              "title": "creditor_reference_information_code"
            },
            "creditor_reference_issuer": {
              "maxLength": 35,
              "minLength": 1,
              "type": "string",
              "description": "Structured Creditor Reference Issuer \n - For TH Instant payment transaction.structured_remittance_info.creditor_reference_issuer  is not applicable \n - For US Instant payment transaction.structured_remittance_info.creditor_reference_issuer field is not applicable \n - For IN IMPS transaction.structured_remittance_info.creditor_reference_issuer  is not applicable \n - For UK FPS Instant payment transaction.structured_remittance_info.creditor_reference_issuer  is not applicable \n - For JP Instant payment transaction.structured_remittance_info.creditor_reference_issuer  is not applicable \n - For IN UPI transaction.structured_remittance_info.creditor_reference_issuer  is not applicable \n - For US WIRE,transaction.structured_remittance_info.creditor_reference_issuer field is not applicable \n - For US ACH CCD/PPD/IAT payment,transaction.structured_remittance_info.creditor_reference_issuer field is not applicable \n - For SEPA IDP transaction.structured_remittance_info.creditor_reference_issuer field is optional with max length 35 \n - For Japan Instant payment transaction.structured_remittance_info.creditor_reference_issuer field is not applicable \n - For SEPA, transaction.structured_remittance_info.creditor_reference_issuer field is optional field and allowed maxLength is 35",
              "title": "creditor_reference_issuer"
            },
            "creditor_reference": {
              "maxLength": 35,
              "minLength": 1,
              "type": "string",
              "description": "Structured Creditor Reference of original payment",
              "title": "creditor_reference"
            }
          }
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5,
          "description": "Purpose of a transaction of original payment\n- CASH for cash management \n- CNFL for confidential \n- COST for payment for business expenses \n- GDDS for payment related to purchase or sale of goods \n- GDSV for payment related to purchase or sale of goods and services \n- GP2P for person-to-person payment \n- OTHR for other, if your payment doesn't fit any of the specific purpose codes \n- PAYR for payroll payment \n- RCPT for payment of a receipt \n- SALA for salary payment \n- SCVE for payment related to purchase or sale of services \n- SUPP for supplier payment \n- TREA for treasury payment \n- REFU for refund payment \n- CLPO for Claim Payouts \n- LODI for Loan Disbursals \n- TIPO for Tips Payout \n- GIEO for Gig economy \n- VEPO for Vendor Payouts \n- INPO for Incentive Payouts \n- ISPO for Insurance Payouts \n- MPPO for Merchant/Marketplace Payouts \n- TXPO for Tax Payments \n- RDPO for Rider payout",
          "title": "purpose"
        },
        "method": {
          "type": "object",
          "title": "OriginalMethod",
          "properties": {
            "network": {
              "type": "string",
              "enum": [
                "RTP",
                "FDN",
                "AUNPP"
              ],
              "description": "Financial market infrastructure or clearing system (e.g., RTP Network in the United States) of original payment",
              "title": "network"
            }
          }
        },
        "debtor": {
          "$ref": "#/$defs/Original-Debtor"
        },
        "creditor": {
          "$ref": "#/$defs/Original-Creditor"
        },
        "ultimate_debtor": {
          "$ref": "#/$defs/Original-Ultimate-Debtor"
        },
        "ultimate_creditor": {
          "$ref": "#/$defs/Original-Ultimate-Creditor"
        }
      }
    },
    "message": {
      "oneOf": [
        {
          "$ref": "#/$defs/Request-For-Refund"
        },
        {
          "$ref": "#/$defs/Final-Response-To-Request-For-Refund"
        },
        {
          "$ref": "#/$defs/Payment-Confirmation-Request"
        },
        {
          "$ref": "#/$defs/Response-To-Payment-Confirmation-Request"
        },
        {
          "$ref": "#/$defs/Request-For-Payment"
        },
        {
          "$ref": "#/$defs/Response-To-Request-For-Payment"
        },
        {
          "$ref": "#/$defs/Final-Request-For-Information-Compliance"
        },
        {
          "$ref": "#/$defs/Response-To-Request-For-Information-Compliance"
        }
      ]
    }
  },
  "required": [
    "message_id",
    "creation_date_time",
    "message_type"
  ],
  "$defs": {
    "Address": {
      "type": "string",
      "maxLength": 70,
      "minLength": 1,
      "maxItems": 7,
      "description": "Address",
      "title": "Address"
    },
    "Debtor-Payment": {
      "type": "object",
      "title": "DebtorPayment",
      "writeOnly": true,
      "properties": {
        "name": {
          "minLength": 1,
          "maxLength": 140,
          "type": "string",
          "description": "Name of Debtor that may be passed for payment initiation",
          "title": "name"
        },
        "street_name": {
          "minLength": 1,
          "maxLength": 70,
          "type": "string",
          "description": "Street Name of Debtor that may be passed for payment initiation",
          "title": "street_name"
        },
        "building_number": {
          "minLength": 1,
          "maxLength": 16,
          "type": "string",
          "description": "Building number of Debtor that may be passed for payment initiation",
          "title": "building_number"
        },
        "postal_code": {
          "minLength": 1,
          "maxLength": 16,
          "type": "string",
          "description": "Postal code of Debtor that may be passed for payment initiation",
          "title": "postal_code"
        },
        "city": {
          "minLength": 1,
          "maxLength": 35,
          "type": "string",
          "description": "City of Debtor that may be passed for payment initiation",
          "title": "city"
        },
        "state": {
          "minLength": 1,
          "maxLength": 35,
          "type": "string",
          "description": "State of Debtor that may be passed for payment initiation",
          "title": "state"
        },
        "country": {
          "type": "string",
          "description": "Country of Debtor that may be passed for payment initiation",
          "pattern": "^[A-Z]{2,2}$",
          "title": "country"
        },
        "address_lines": {
          "type": "array",
          "minItems": 1,
          "maxItems": 7,
          "description": "Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which may be passed for payment initiation",
          "items": {
            "$ref": "#/$defs/Address"
          },
          "title": "address_lines"
        }
      }
    },
    "Debtor-Refund": {
      "type": "object",
      "title": "DebtorRefund",
      "properties": {
        "name": {
          "minLength": 1,
          "maxLength": 140,
          "type": "string",
          "description": "Name of Debtor to be passed for Refund payment \n- For United States debtor.name field is mandatory for decision code IPAY and PECR \n- For Thailand debtor.name field is not applicable \n- For Brazil debtor.name field is not applicable \n- For SEPA debtor.name field is not applicable",
          "title": "name"
        },
        "street_name": {
          "minLength": 1,
          "maxLength": 70,
          "type": "string",
          "description": "Street Name of Debtor to be passed for Refund payment \n- For United States debtor.street_name field is optional \n- For Thailand debtor.street_name field is not applicable \n- For Brazil debtor.street_name field is not applicable \n- For SEPA debtor.street_name field is not applicable",
          "title": "street_name"
        },
        "building_number": {
          "minLength": 1,
          "maxLength": 16,
          "type": "string",
          "description": "Building number of Debtor to be passed for Refund payment \n- For United States debtor.building_number field is optional \n- For Thailand debtor.building_number field is not applicable \n- For Brazil debtor.building_number field is not applicable \n- For SEPA debtor.building_number field is not applicable",
          "title": "building_number"
        },
        "postal_code": {
          "minLength": 1,
          "maxLength": 16,
          "type": "string",
          "description": "Postal code of Debtor to be passed for Refund payment \n- For United States debtor.postal_code field is optional \n- For Thailand debtor.postal_code field is not applicable \n- For Brazil debtor.postal_code field is not applicable \n- For SEPA debtor.postal_code field is not applicable",
          "title": "postal_code"
        },
        "city": {
          "minLength": 1,
          "maxLength": 35,
          "type": "string",
          "description": "City of Debtor to be passed for Refund payment \n- For United States debtor.city field is optional \n- For Thailand debtor.city field is not applicable \n- For Brazil debtor.city field is not applicable \n- For SEPA debtor.city field is not applicable",
          "title": "city"
        },
        "state": {
          "minLength": 1,
          "maxLength": 35,
          "type": "string",
          "description": "State of Debtor to be passed for Refund payment \n- For United States debtor.state field is optional \n- For Thailand debtor.state field is not applicable \n- For Brazil debtor.state field is not applicable \n- For SEPA debtor.state field is not applicable",
          "title": "state"
        },
        "country": {
          "type": "string",
          "description": "Country of Debtor to be passed for Refund payment \n- For United States debtor.country field is optional \n- For Thailand debtor.country field is not applicable \n- For Brazil debtor.country field is not applicable \n- For SEPA debtor.country field is not applicable",
          "pattern": "^[A-Z]{2,2}$",
          "title": "country"
        },
        "address_lines": {
          "type": "array",
          "minItems": 1,
          "maxItems": 7,
          "description": "Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which is to be passed for Refund payment \n- For United States debtor.address_lines field is optional \n- For Thailand debtor.address_lines field is not applicable \n- For Brazil debtor.address_lines field is not applicable \n- For SEPA debtor.address_lines field is not applicable",
          "items": {
            "$ref": "#/$defs/Address"
          },
          "title": "address_lines"
        }
      }
    },
    "Field-level-Requests-For-RFICS": {
      "type": "object",
      "description": "“FieldlevelRequestsForRFICS”",
      "title": "Field-level-Requests-For-RFICS",
      "properties": {
        "field_id": {
          "type": "string",
          "description": "Field ID.",
          "minLength": 1,
          "maxLength": 16,
          "title": "field_id"
        },
        "field_name": {
          "type": "string",
          "description": "Field name. ",
          "minLength": 1,
          "maxLength": 70,
          "title": "field_name"
        },
        "field_value": {
          "type": "string",
          "description": "Field value. ",
          "minLength": 1,
          "maxLength": 70,
          "title": "field_value"
        },
        "input_type": {
          "type": "string",
          "description": "The Input type or template to provide the response against the field. It will be one the following - individual / entity / aircraft / vessel / unknown. \n If requested input type is unknown, populate fields from any of the other 4 input types in the response.",
          "minLength": 1,
          "maxLength": 16,
          "title": "input_type"
        }
      },
      "required": [
        "field_id",
        "field_name",
        "field_value",
        "input_type"
      ]
    },
    "Field-level-Responses-For-RRFICS": {
      "type": "object",
      "description": "“FieldlevelResponsesForRRFICS”",
      "title": "Field-level-Responses-For-RRFICS",
      "properties": {
        "field_id": {
          "type": "string",
          "description": "Field ID.",
          "minLength": 1,
          "maxLength": 16,
          "title": "field_id"
        },
        "field_name": {
          "type": "string",
          "description": "Field name.",
          "minLength": 1,
          "maxLength": 70,
          "title": "field_name"
        },
        "field_value": {
          "type": "string",
          "description": "Field value.",
          "minLength": 1,
          "maxLength": 70,
          "title": "field_value"
        },
        "individual": {
          "type": "object",
          "description": "Input type selected as Individual. \n When individual is selected any one of the fields displayed under individual object are mandatory",
          "title": "individual",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of individual.\n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "name"
            },
            "street_name": {
              "type": "string",
              "description": "Street Name of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 70,
              "title": "street_name"
            },
            "building_number": {
              "type": "string",
              "description": "Building Number of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 16,
              "title": "building_number"
            },
            "postal_code": {
              "type": "string",
              "description": "Postal Code of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 16,
              "title": "postal_code"
            },
            "city": {
              "type": "string",
              "description": "City of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "city"
            },
            "state": {
              "type": "string",
              "description": "State of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "state"
            },
            "country": {
              "type": "string",
              "description": "Country of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 2,
              "title": "country"
            },
            "birth_date": {
              "type": "string",
              "format": "date",
              "description": "Birth Date of individual \n Format is YYYY-MM-DD. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "title": "birth_date"
            },
            "city_of_birth": {
              "type": "string",
              "description": "City Of Birth of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "city_of_birth"
            },
            "country_of_birth": {
              "type": "string",
              "description": "Country Of Birth of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 2,
              "title": "country_of_birth"
            },
            "nationality": {
              "type": "string",
              "description": "Nationality of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "nationality"
            },
            "occupation": {
              "type": "string",
              "description": "Occupation of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "occupation"
            },
            "country_of_residence": {
              "type": "string",
              "description": "Country of Residence of individual. \n If selected input type = individual, at least 1 field from individual object must be provided.",
              "minLength": 1,
              "maxLength": 2,
              "title": "country_of_residence"
            }
          }
        },
        "entity": {
          "type": "object",
          "description": "Input type selected as Entity. When Entity is selected any one of the fields displayed under entity object are mandatory",
          "title": "entity",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "name"
            },
            "street_name": {
              "type": "string",
              "description": "Street Name of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 70,
              "title": "street_name"
            },
            "building_number": {
              "type": "string",
              "description": "Building Number of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 16,
              "title": "building_number"
            },
            "postal_code": {
              "type": "string",
              "description": "Postal Code of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 16,
              "title": "postal_code"
            },
            "city": {
              "type": "string",
              "description": "City of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "city"
            },
            "state": {
              "type": "string",
              "description": "State of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "state"
            },
            "country": {
              "type": "string",
              "description": "Country of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 2,
              "title": "country"
            },
            "line_of_business": {
              "type": "string",
              "description": "Line of business of Entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "line_of_business"
            },
            "ownership_details": {
              "type": "string",
              "description": "Ownership Details of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 560,
              "title": "ownership_details"
            },
            "global_presence": {
              "type": "string",
              "description": "Global Presence of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "global_presence"
            },
            "website": {
              "type": "string",
              "description": "Website of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "website"
            },
            "registration_number": {
              "type": "string",
              "description": "Registration Number of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "registration_number"
            },
            "country_of_incorporation": {
              "type": "string",
              "description": "Country of incorporation of entity. \n If selected input type = entity, at least 1 field from entity object must be provided.",
              "minLength": 1,
              "maxLength": 2,
              "title": "country_of_incorporation"
            }
          }
        },
        "vessel": {
          "type": "object",
          "description": "Input type selected as vessel. When vessel is selected any one of the fields displayed under vessel object are mandatory",
          "title": "vessel",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "name"
            },
            "flag": {
              "type": "string",
              "description": "Flag of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "flag"
            },
            "ownership_details": {
              "type": "string",
              "description": "Ownership Details of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 560,
              "title": "ownership_details"
            },
            "imo_number": {
              "type": "string",
              "description": "Imo Number of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "imo_number"
            },
            "gross_registered_tonnage": {
              "type": "string",
              "description": "Gross registered tonnage of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 10,
              "title": "gross_registered_tonnage"
            },
            "vessel_type": {
              "type": "string",
              "description": "Type of vessel. \n If selected input type = vessel, at least 1 field from vessel object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "vessel_type"
            }
          }
        },
        "aircraft": {
          "type": "object",
          "description": "Input type selected as aircraft. When aircraft is selected any one of the fields displayed under aircraft object are mandatory",
          "title": "aircraft",
          "properties": {
            "call_sign": {
              "type": "string",
              "description": "Call Sign of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "minLength": 1,
              "maxLength": 140,
              "title": "call_sign"
            },
            "flag": {
              "type": "string",
              "description": "Flag of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "flag"
            },
            "ownership_details": {
              "type": "string",
              "description": "Ownership Details of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "minLength": 1,
              "maxLength": 560,
              "title": "ownership_details"
            },
            "msn_number": {
              "type": "string",
              "description": "Msn Number of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "msn_number"
            },
            "model": {
              "type": "string",
              "description": "Model of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "minLength": 1,
              "maxLength": 35,
              "title": "model"
            },
            "operator": {
              "type": "string",
              "description": "Operator of aircraft. \n If selected input type = aircraft, at least 1 field from aircraft object must be provided.",
              "mi

# --- truncated at 32 KB (131 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/citi/refs/heads/main/json-schema/citi-final-message-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/citi-final-message-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.