{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cm-com/main/json-schema/cm-com-create-transaction-schema.json",
  "title": "CreateTransaction",
  "x-generated": "2026-10-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cm-com-verification-id-scan-v1-openapi.yml#/components/schemas/CreateTransaction",
  "allOf": [
    {
      "$ref": "#/$defs/Transaction"
    }
  ],
  "properties": {
    "expiresIn": {
      "type": "integer",
      "minimum": 3600,
      "maximum": 86400,
      "description": "The time in seconds after which a transaction should expire.",
      "default": 3600
    }
  },
  "$defs": {
    "CaptureSource": {
      "type": "string",
      "enum": [
        "camera",
        "file"
      ],
      "default": "camera"
    },
    "GraphicField": {
      "type": "string",
      "enum": [
        "bar_code",
        "color_dynamic",
        "contact_chip",
        "document_image",
        "document_rear",
        "eye",
        "finger_left_four_fingers",
        "finger_left_index",
        "finger_left_little",
        "finger_left_middle",
        "finger_left_ring",
        "finger_left_thumb",
        "finger_right_four_fingers",
        "finger_right_index",
        "finger_right_little",
        "finger_right_middle",
        "finger_right_ring",
        "finger_right_thumb",
        "finger_two_thumbs",
        "fingerprint",
        "ghost_portrait",
        "other",
        "portrait",
        "portrait_of_child",
        "proof_of_citizenship",
        "signature",
        "stamp"
      ]
    },
    "Locale": {
      "type": "string",
      "enum": [
        "en-US",
        "nl-NL",
        "fr-FR",
        "it-IT"
      ],
      "default": "en-US",
      "description": "The language of the ID Scan process. Currently supports English, Dutch, French, and Italian."
    },
    "Settings": {
      "type": "object",
      "properties": {
        "documentScan": {
          "properties": {
            "allowedExpiration": {
              "type": "integer",
              "description": "Change the allowed expiry date of the document. A positive number allows a document to be expired for the specified number of days, a negative number requires a document to be valid for at least the specified number of days."
            },
            "captureSources": {
              "type": [
                "array",
                "null"
              ],
              "description": "The camera capture source allows the user to live capture an ID document. The file capture source allows the user to upload an already captured ID document.",
              "items": {
                "$ref": "#/$defs/CaptureSource"
              },
              "default": [
                "camera",
                "file"
              ]
            },
            "redactFields": {
              "type": "array",
              "description": "The fields to be masked/blurred on the downloaded ID document.",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/TextField"
                  },
                  {
                    "$ref": "#/$defs/GraphicField"
                  }
                ]
              }
            },
            "minimumAge": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "description": "Set a minimum age of the user, that will be derived from the document."
            },
            "maximumAge": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "description": "Set a maximum age of the user, that will be derived from the document."
            },
            "requireBothSides": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "If set to true, the back side of the document will also be requested. Regardless if the personal number is detected on the front side. Unless the document has no other side."
            },
            "desiredFields": {
              "type": "array",
              "description": "Request availability of specific fields. The other side of the document will be scanned if the desired fields are not available on the front side. The document scan will not fail if the desired fields can't be found on any of the scanned sides.",
              "items": {
                "$ref": "#/$defs/TextField"
              }
            },
            "validateFields": {
              "type": "array",
              "description": "The specified fields must have a valid validity status. A field with a validity status of `not_checked` is also considered valid. If any of the fields have an `invalid` status, the user must attempt to scan again.",
              "items": {
                "$ref": "#/$defs/TextField"
              }
            },
            "extractFields": {
              "type": "array",
              "description": "Specify which fields should be extracted from the document. Only the specified fields will be processed and returned in the response.",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/TextField"
                  },
                  {
                    "$ref": "#/$defs/GraphicField"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "TaskType": {
      "type": "string",
      "enum": [
        "document_scan",
        "face_liveness",
        "face_match"
      ]
    },
    "TextField": {
      "type": "string",
      "enum": [
        "academic_title",
        "accompanied_by",
        "address",
        "address_area",
        "address_block_number",
        "address_building",
        "address_building_type",
        "address_city",
        "address_city_sector",
        "address_city_type",
        "address_country",
        "address_county_type",
        "address_entrance",
        "address_flat",
        "address_floor_number",
        "address_house",
        "address_jurisdiction_code",
        "address_location",
        "address_municipality",
        "address_postal_code",
        "address_state",
        "address_street",
        "address_street_number",
        "address_street_type",
        "address_zip_code",
        "administrative_number",
        "age",
        "age_at_issue",
        "agy",
        "airline_code",
        "airline_designator_of_boarding_pass_issuer",
        "airline_name",
        "airline_name_frequent_flyer",
        "airline_numeric_code",
        "airport_from",
        "airport_to",
        "aka_date_of_birth",
        "aka_given_names",
        "aka_name_prefix",
        "aka_name_suffix",
        "aka_social_security_number",
        "aka_surname",
        "aka_surname_and_given_names",
        "allergies",
        "alt_code",
        "alt_date_of_expiry",
        "application_number",
        "artistic_name",
        "audit_information",
        "authority",
        "authority_code",
        "authority_rus",
        "authorization_number",
        "bank_card_number",
        "bank_card_valid_thru",
        "banknote_number",
        "bdb_type",
        "benefits_number",
        "binary_code",
        "biometric_format_owner",
        "biometric_format_type",
        "biometric_product_id",
        "biometric_subtype",
        "biometric_type",
        "blood_group",
        "booklet_number",
        "caliber",
        "card_access_number",
        "category",
        "ccw_until",
        "cdl_class",
        "century_date_of_birth",
        "chassis_number",
        "check_in_sequence_number",
        "children",
        "citizenship_of_first_person",
        "citizenship_of_second_person",
        "citizenship_status",
        "civil_status",
        "commercial_indicator",
        "commercial_vehicle_codes",
        "company_name",
        "compartment_code",
        "complexion",
        "compliance_type",
        "conditions",
        "configuration",
        "consul",
        "control_number",
        "copy",
        "court_code",
        "csc_code",
        "cty",
        "current_date",
        "custody_info",
        "cvv",
        "data_date_of_expiry",
        "data_discriminator",
        "date_first_renewal",
        "date_of_arrival",
        "date_of_birth",
        "date_of_birth_check_digit",
        "date_of_birth_checksum",
        "date_of_birth_of_husband",
        "date_of_birth_of_wife",
        "date_of_creation",
        "date_of_expiry",
        "date_of_expiry_check_digit",
        "date_of_expiry_checksum",
        "date_of_first_positive_test_result",
        "date_of_flight",
        "date_of_insurance_expiry",
        "date_of_issue",
        "date_of_issue_boarding_pass",
        "date_of_issue_check_digit",
        "date_of_issue_checksum",
        "date_of_personalization",
        "date_of_registration",
        "date_of_retirement",
        "date_of_specimen_collection",
        "date_second_renewal",
        "day",
        "department",
        "dept_number",
        "destination",
        "digital_travel_authorization_number",
        "discretionary_data",
        "dl_cdl_restriction_code",
        "dl_class",
        "dl_class_code_a1_from",
        "dl_class_code_a1_notes",
        "dl_class_code_a1_to",
        "dl_class_code_a2_from",
        "dl_class_code_a2_notes",
        "dl_class_code_a2_to",
        "dl_class_code_a3_from",
        "dl_class_code_a3_notes",
        "dl_class_code_a3_to",
        "dl_class_code_a_from",
        "dl_class_code_a_notes",
        "dl_class_code_a_to",
        "dl_class_code_am_from",
        "dl_class_code_am_notes",
        "dl_class_code_am_to",
        "dl_class_code_b1_from",
        "dl_class_code_b1_notes",
        "dl_class_code_b1_to",
        "dl_class_code_b2_from",
        "dl_class_code_b2_notes",
        "dl_class_code_b2_to",
        "dl_class_code_b2e_from",
        "dl_class_code_b2e_notes",
        "dl_class_code_b2e_to",
        "dl_class_code_b_from",
        "dl_class_code_b_notes",
        "dl_class_code_b_to",
        "dl_class_code_be_from",
        "dl_class_code_be_notes",
        "dl_class_code_be_to",
        "dl_class_code_btp_from",
        "dl_class_code_btp_notes",
        "dl_class_code_btp_to",
        "dl_class_code_c1_from",
        "dl_class_code_c1_notes",
        "dl_class_code_c1_to",
        "dl_class_code_c1e_from",
        "dl_class_code_c1e_notes",
        "dl_class_code_c1e_to",
        "dl_class_code_c2_from",
        "dl_class_code_c2_notes",
        "dl_class_code_c2_to",
        "dl_class_code_c3_from",
        "dl_class_code_c3_notes",
        "dl_class_code_c3_to",
        "dl_class_code_c_from",
        "dl_class_code_c_notes",
        "dl_class_code_c_to",
        "dl_class_code_ca_from",
        "dl_class_code_ca_notes",
        "dl_class_code_ca_to",
        "dl_class_code_cd_from",
        "dl_class_code_cd_notes",
        "dl_class_code_cd_to",
        "dl_class_code_ce_from",
        "dl_class_code_ce_notes",
        "dl_class_code_ce_to",
        "dl_class_code_d1_from",
        "dl_class_code_d1_notes",
        "dl_class_code_d1_to",
        "dl_class_code_d1e_from",
        "dl_class_code_d1e_notes",
        "dl_class_code_d1e_to",
        "dl_class_code_d2_from",
        "dl_class_code_d2_notes",
        "dl_class_code_d2_to",
        "dl_class_code_d3_from",
        "dl_class_code_d3_notes",
        "dl_class_code_d3_to",
        "dl_class_code_d_from",
        "dl_class_code_d_notes",
        "dl_class_code_d_to",
        "dl_class_code_de_from",
        "dl_class_code_de_notes",
        "dl_class_code_de_to",
        "dl_class_code_e_from",
        "dl_class_code_e_notes",
        "dl_class_code_e_to",
        "dl_class_code_eb_from",
        "dl_class_code_eb_notes",
        "dl_class_code_eb_to",
        "dl_class_code_ec1_from",
        "dl_class_code_ec1_notes",
        "dl_class_code_ec1_to",
        "dl_class_code_ec_from",
        "dl_class_code_ec_notes",
        "dl_class_code_ec_to",
        "dl_class_code_f_from",
        "dl_class_code_f_notes",
        "dl_class_code_f_to",
        "dl_class_code_fa1_from",
        "dl_class_code_fa1_notes",
        "dl_class_code_fa1_to",
        "dl_class_code_fa_from",
        "dl_class_code_fa_notes",
        "dl_class_code_fa_to",
        "dl_class_code_fb_from",
        "dl_class_code_fb_notes",
        "dl_class_code_fb_to",
        "dl_class_code_g1_from",
        "dl_class_code_g1_notes",
        "dl_class_code_g1_to",
        "dl_class_code_g_from",
        "dl_class_code_g_notes",
        "dl_class_code_g_to",
        "dl_class_code_h_from",
        "dl_class_code_h_notes",
        "dl_class_code_h_to",
        "dl_class_code_hc_from",
        "dl_class_code_hc_notes",
        "dl_class_code_hc_to",
        "dl_class_code_hr_from",
        "dl_class_code_hr_notes",
        "dl_class_code_hr_to",
        "dl_class_code_i_from",
        "dl_class_code_i_notes",
        "dl_class_code_i_to",
        "dl_class_code_j_from",
        "dl_class_code_j_notes",
        "dl_class_code_j_to",
        "dl_class_code_k_from",
        "dl_class_code_k_notes",
        "dl_class_code_k_to",
        "dl_class_code_l_from",
        "dl_class_code_l_notes",
        "dl_class_code_l_to",
        "dl_class_code_lc_from",
        "dl_class_code_lc_notes",
        "dl_class_code_lc_to",
        "dl_class_code_lk_from",
        "dl_class_code_lk_notes",
        "dl_class_code_lk_to",
        "dl_class_code_lr_from",
        "dl_class_code_lr_notes",
        "dl_class_code_lr_to",
        "dl_class_code_m_from",
        "dl_class_code_m_notes",
        "dl_class_code_m_to",
        "dl_class_code_mc_from",
        "dl_class_code_mc_notes",
        "dl_class_code_mc_to",
        "dl_class_code_mr_from",
        "dl_class_code_mr_notes",
        "dl_class_code_mr_to",
        "dl_class_code_n_from",
        "dl_class_code_n_notes",
        "dl_class_code_n_to",
        "dl_class_code_nt_from",
        "dl_class_code_nt_notes",
        "dl_class_code_nt_to",
        "dl_class_code_pw_from",
        "dl_class_code_pw_notes",
        "dl_class_code_pw_to",
        "dl_class_code_r_from",
        "dl_class_code_r_notes",
        "dl_class_code_r_to",
        "dl_class_code_re_from",
        "dl_class_code_re_notes",
        "dl_class_code_re_to",
        "dl_class_code_rm_from",
        "dl_class_code_rm_notes",
        "dl_class_code_rm_to",
        "dl_class_code_s_from",
        "dl_class_code_s_notes",
        "dl_class_code_s_to",
        "dl_class_code_t_from",
        "dl_class_code_t_notes",
        "dl_class_code_t_to",
        "dl_class_code_tb_from",
        "dl_class_code_tb_notes",
        "dl_class_code_tb_to",
        "dl_class_code_tm_from",
        "dl_class_code_tm_notes",
        "dl_class_code_tm_to",
        "dl_class_code_tn_from",
        "dl_class_code_tn_notes",
        "dl_class_code_tn_to",
        "dl_class_code_tr_from",
        "dl_class_code_tr_notes",
        "dl_class_code_tr_to",
        "dl_class_code_tv_from",
        "dl_class_code_tv_notes",
        "dl_class_code_tv_to",
        "dl_class_code_v_from",
        "dl_class_code_v_notes",
        "dl_class_code_v_to",
        "dl_class_code_w_from",
        "dl_class_code_w_notes",
        "dl_class_code_w_to",
        "dl_duplicate_date",
        "dl_endorsed",
        "dl_issue_type",
        "dl_record_created",
        "dl_restriction_code",
        "dl_under_18_date",
        "dl_under_19_date",
        "dl_under_21_date",
        "dni_number",
        "document_class_code",
        "document_class_name",
        "document_discriminator",
        "document_number",
        "document_number_check_digit",
        "document_number_checksum",
        "document_series",
        "document_status",
        "dod_number",
        "donor",
        "dossier_number",
        "ds_certificate_issuer",
        "ds_certificate_subject",
        "ds_certificate_valid_from",
        "ds_certificate_valid_to",
        "dtc_date_of_expiry",
        "dtc_id",
        "dtc_version",
        "duf_number",
        "duration_of_stay",
        "e_id_place_of_birth_city",
        "e_id_place_of_birth_country",
        "e_id_place_of_birth_state",
        "e_id_place_of_birth_street",
        "e_id_place_of_birth_zip_code",
        "e_id_residence_permit_1",
        "e_id_residence_permit_2",
        "ec_environmental_type",
        "ef_card_access",
        "electronic_ticket_indicator",
        "email",
        "endorsement_expiration_date",
        "engine_model",
        "engine_number",
        "engine_power",
        "engine_volume",
        "eqv_code",
        "exam_date",
        "except_in_tanks",
        "expiry_timestamp",
        "eyes_color",
        "faculty",
        "family_name",
        "family_name_truncation",
        "fast_track",
        "father_country_of_birth",
        "father_date_of_birth",
        "father_given_name",
        "father_personal_number",
        "father_place_of_birth",
        "father_surname",
        "fathers_name",
        "fathers_name_rus",
        "federal_elections",
        "fee",
        "field_from_mrz",
        "final_check_digit",
        "final_checksum",
        "first_issue_date",
        "first_issue_date_checkdigit",
        "first_issue_date_checksum",
        "first_name",
        "first_name_truncation",
        "first_surname",
        "flight_number",
        "folio_number",
        "form_of_education",
        "fourth_name",
        "free_baggage_allowance",
        "frequent_flyer_airline_designator",
        "frequent_flyer_number",
        "from_airport_code",
        "fuel_type",
        "given_names",
        "given_names_rus",
        "gnib_number",
        "grandfather_name",
        "grandfather_name_maternal",
        "hair_color",
        "health_number",
        "height",
        "identifier",
        "identity_card_number",
        "identity_card_number_check_digit",
        "identity_card_number_checksum",
        "in_tanks",
        "inventory_number",
        "invitation_number",
        "invitation_number_check_digit",
        "invitation_number_checksum",
        "invited_by",
        "iso_issuer_id_number",
        "issue_timestamp",
        "issuer_identification_number",
        "issuing_state_code",
        "issuing_state_code_alpha2",
        "issuing_state_code_numeric",
        "issuing_state_name",
        "jurisdiction_endorsement_code",
        "jurisdiction_restriction_code",
        "jurisdiction_specific_data",
        "jurisdiction_vehicle_class",
        "last_name",
        "license_number",
        "limited_duration_document_indicator",
        "line_1_check_digit",
        "line_1_checksum",
        "line_1_optional_data",
        "line_2_check_digit",
        "line_2_checksum",
        "line_2_optional_data",
        "line_3_check_digit",
        "line_3_checksum",
        "line_3_optional_data",
        "mailing_address_city",
        "mailing_address_jurisdiction_code",
        "mailing_address_postal_code",
        "mailing_address_street",
        "make",
        "marital_status",
        "max_mass_of_trailer_braked",
        "max_mass_of_trailer_unbraked",
        "max_speed",
        "mc_novice_date",
        "medical_indicator_codes",
        "method_of_testing",
        "middle_name",
        "middle_name_truncation",
        "military_book_number",
        "military_service_from",
        "military_service_to",
        "model",
        "month",
        "month_of_birth",
        "mortgage_by",
        "mother_country_of_birth",
        "mother_date_of_birth",
        "mother_given_name",
        "mother_personal_number",
        "mother_place_of_birth",
        "mother_surname",
        "mothers_name",
        "mrz_strings",
        "mrz_strings_icao_rfid",
        "mrz_strings_with_correct_check_sums",
        "mrz_type",
        "mvc_agency",
        "name_prefix",
        "name_suffix",
        "nationality",
        "nationality_code",
        "nationality_code_alpha2",
        "nationality_code_numeric",
        "non_domiciled_indicator",
        "non_resident_indicator",
        "number_of_axles",
        "number_of_card_issuance",
        "number_of_card_issuance_check_digit",
        "number_of_card_issuance_checksum",
        "number_of_cylinders",
        "number_of_duplicates",
        "number_of_entries",
        "number_of_seats",
        "number_of_standing_places",
        "observations",
        "ocr_number",
        "old_date_of_issue",
        "old_document_number",
        "old_place_of_issue",
        "optional_data",
        "optional_data_check_digit",
        "optional_data_checksum",
        "organization",
        "other",
        "other_name",
        "other_person_name",
        "other_valid_id",
        "owner",
        "parents_given_names",
        "passport_number",
        "passport_number_check_digit",
        "passport_number_checksum",
        "patron_header_version",
        "pay_grade",
        "payload_capacity",
        "payment_period_from",
        "payment_period_to",
        "pdf417_codec",
        "permissible_axle_load",
        "permit_date_of_expiry",
        "permit_date_of_issue",
        "permit_dl_class",
        "permit_endorsed",
        "permit_identifier",
        "permit_restriction_code",
        "person_to_notify_address",
        "person_to_notify_date_of_record",
        "person_to_notify_name",
        "person_to_notify_phone",
        "personal_number",
        "personal_number_check_digit",
        "personal_number_checksum",
        "personal_summary",
        "personalization_sn",
        "phone",
        "place_of_birth",
        "place_of_birth_area",
        "place_of_birth_city",
        "place_of_birth_rus",
        "place_of_birth_state_code",
        "place_of_examination",
        "place_of_issue",
        "place_of_registration",
        "pnr_code",
        "police_district",
        "power_weight_ratio",
        "precinct",
        "previous_type",
        "profession",
        "professional_id_number",
        "pseudo_code",
        "purpose_of_entry",
        "race_ethnicity",
        "rank",
        "reference_number",
        "reference_number_check_digit",
        "reference_number_checksum",
        "reg_cert_body_number",
        "reg_cert_body_type",
        "reg_cert_car_color",
        "reg_cert_car_mark",
        "reg_cert_car_model",
        "reg_cert_car_type",
        "reg_cert_max_weight",
        "reg_cert_reg_number",
        "reg_cert_reg_number_check_digit",
        "reg_cert_reg_number_checksum",
        "reg_cert_vehicle_its_code",
        "reg_cert_vin",
        "reg_cert_vin_check_digit",
        "reg_cert_vin_checksum",
        "reg_cert_weight",
        "relationship",
        "religion",
        "remainder_term",
        "resident_from",
        "resident_until",
        "result_of_testing",
        "retirement_number",
        "revision_date",
        "room_number",
        "sbh_integrity_options",
        "sbh_security_options",
        "seat_number",
        "second_name",
        "second_surname",
        "section",
        "selectee_indicator",
        "sequence_number",
        "serial_number",
        "sex",
        "short_flight_number",
        "signature",
        "skin_color",
        "social_security_number",
        "sp_code",
        "special_notes",
        "sponsor",
        "sponsor_service",
        "sponsor_ssn",
        "sponsor_status",
        "stamp_number",
        "status_date_of_expiry",
        "surname",
        "surname_and_given_names",
        "surname_and_given_names_check_digit",
        "surname_and_given_names_checksum",
        "surname_and_given_names_rus",
        "surname_at_birth",
        "surname_of_husband_after_registration",
        "surname_of_spouse",
        "surname_of_wife_after_registration",
        "tax",
        "tax_number",
        "telex_code",
        "territorial_validity",
        "third_name",
        "ticket_number",
        "title",
        "to_airport_code",
        "tracking_number",
        "trailer_hitch",
        "transaction_number",
        "transmission_type",
        "type_approval_number",
        "type_of_testing",
        "unique_certificate_identifier",
        "unique_customer_identifier",
        "url",
        "uscis",
        "vaccination_certificate_identifier",
        "validity_period",
        "vehicle_category",
        "veteran",
        "visa_class",
        "visa_id",
        "visa_id_check_digit",
        "visa_id_checksum",
        "visa_id_rus",
        "visa_number",
        "visa_number_check_digit",
        "visa_number_checksum",
        "visa_subclass",
        "visa_type",
        "visa_valid_from",
        "visa_valid_until",
        "visa_valid_until_check_digit",
        "visa_valid_until_checksum",
        "voter",
        "voter_key",
        "voucher_number",
        "vrc_data_object_entry",
        "weight",
        "weight_pounds",
        "year",
        "year_of_birth",
        "year_of_expiry",
        "years_since_issue"
      ]
    },
    "Transaction": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "readOnly": true
        },
        "state": {
          "$ref": "#/$defs/TransactionState",
          "readOnly": true
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TaskType"
          },
          "description": "The tasks to be performed by the user. The `face_liveness` task can only be performed when the `document_scan` task is added. For the `face_match` task both the `document_scan` task and `face_liveness` task must be added."
        },
        "settings": {
          "$ref": "#/$defs/Settings"
        },
        "locale": {
          "$ref": "#/$defs/Locale",
          "description": "The language of the ID Scan process. Currently supports English, Dutch, French.",
          "default": "en-US"
        },
        "url": {
          "type": "string",
          "description": "The URL to start the transaction.",
          "readOnly": true
        },
        "mobileOnly": {
          "type": "boolean",
          "description": "When this is set to true, the user must complete the transaction on their mobile device.",
          "default": false
        },
        "returnUrl": {
          "type": "string",
          "description": "The URL to redirect the user to after the transaction is completed. The `trxid`, `state` and `resultid` will be added as a query parameter. If the URL is not set a default page is shown.",
          "default": null
        },
        "scanReturnUrl": {
          "type": "string",
          "description": "The URL to redirect the user to in case the transaction is transferred to a mobile device (by scanning the QR code) and the transaction is completed. The `trxid` and `state` will be added as a query parameter. If the URL is not set a default page is shown.",
          "default": null
        },
        "expires": {
          "type": "string",
          "format": "date-time",
          "description": "The date the transaction expires.",
          "readOnly": true
        },
        "created": {
          "type": "string",
          "format": "date-time",
          "description": "The date the transaction was created.",
          "readOnly": true
        }
      },
      "required": [
        "tasks"
      ]
    },
    "TransactionState": {
      "type": "string",
      "description": "Current state of the transaction",
      "enum": [
        "pending",
        "completed",
        "failed"
      ]
    }
  }
}