{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "Zamna Checklist API",
    "version" : "1.3"
  },
  "paths" : {
    "/checklist/{checklistId}" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Returns current checklist state",
        "operationId" : "getChecklist",
        "parameters" : [ {
          "name" : "X-Request-Id",
          "in" : "header",
          "description" : "Request id to be returned in response header (auto generated if not specified)",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "Locale to return content with",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "checklistId",
          "in" : "path",
          "description" : "Checklist id",
          "required" : true,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string",
            "example" : "aae10767-d13b-4e5c-a9fe-0ab8f13b8087"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Current checklist state",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Checklist"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ ]
      }
    },
    "/checklist/{checklistId}/answers" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Provide nationality and/or birthdate and/or set answers to questions",
        "operationId" : "postAnswers",
        "parameters" : [ {
          "name" : "X-Request-Id",
          "in" : "header",
          "description" : "Request id to be returned in response header (auto generated if not specified)",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "Locale to return content with",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "checklistId",
          "in" : "path",
          "description" : "Checklist id",
          "required" : true,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string",
            "example" : "aae10767-d13b-4e5c-a9fe-0ab8f13b8087"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SetAnswersRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Current checklist state",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Checklist"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ ]
      }
    },
    "/start" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Endpoint to initiate checklist for a given journey. Must use the same checklistId for the same passenger - if null, will generate new and auto-generate its id",
        "operationId" : "start",
        "parameters" : [ {
          "name" : "X-Request-Id",
          "in" : "header",
          "description" : "Request id to be returned in response header (auto generated if not specified)",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "Locale to return content with",
          "required" : false,
          "deprecated" : false,
          "allowEmptyValue" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StartRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Current checklist state",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Checklist"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "ArrivalPointInput" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Arrival point - API input",
        "properties" : {
          "airport_code" : {
            "type" : "string",
            "description" : "Airport IATA code",
            "example" : "LAX"
          },
          "arrival_datetime" : {
            "type" : "string",
            "description" : "Date and time of arrival (local)",
            "pattern" : "$(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})^"
          }
        },
        "required" : [ "airport_code", "arrival_datetime" ]
      },
      "DeparturePointInput" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Departure point - API input",
        "properties" : {
          "airport_code" : {
            "type" : "string",
            "description" : "Airport IATA code",
            "example" : "MEX"
          },
          "departure_datetime" : {
            "type" : "string",
            "description" : "Date and time of departure (local)",
            "pattern" : "$(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})^"
          }
        },
        "required" : [ "airport_code", "departure_datetime" ]
      },
      "TransitPointInput" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Transit point - API input",
        "properties" : {
          "airport_code" : {
            "type" : "string",
            "description" : "Airport IATA code",
            "example" : "BOG"
          },
          "departure_datetime" : {
            "type" : "string",
            "description" : "Date and time of departure (local)",
            "pattern" : "$(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})^"
          },
          "arrival_datetime" : {
            "type" : "string",
            "description" : "Date and time of arrival (local)",
            "pattern" : "$(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})^"
          }
        },
        "required" : [ "airport_code", "departure_datetime", "arrival_datetime" ]
      },
      "JourneyInput" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Journey record (departure, transit, arrival) - API input",
        "properties" : {
          "departure" : {
            "$ref" : "#/components/schemas/DeparturePointInput",
            "description" : "Departure point"
          },
          "transit" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TransitPointInput"
            },
            "description" : "List of transit points"
          },
          "arrival" : {
            "$ref" : "#/components/schemas/ArrivalPointInput",
            "description" : "Arrival point"
          }
        },
        "required" : [ "departure", "transit", "arrival" ]
      },
      "Answer" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/Bool"
        }, {
          "$ref" : "#/components/schemas/FromList"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "bool-answer" : "#/components/schemas/Bool",
            "from-list-answer" : "#/components/schemas/FromList"
          }
        }
      },
      "Bool" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Answer to either `yes-no-question` or `have-document-question`",
        "properties" : {
          "question_id" : {
            "type" : "string",
            "description" : "Question id",
            "example" : "HelbxGxFg0gpdAdnumztVA=="
          },
          "value" : {
            "type" : "boolean",
            "nullable" : true,
            "description" : "Answer value - true/false. Null to remove question answer",
            "example" : "true"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "question_id", "type" ]
      },
      "FromList" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Answer to `pick-from-list-question`",
        "properties" : {
          "question_id" : {
            "type" : "string",
            "description" : "Question id",
            "example" : "PassportTypeInQuestion"
          },
          "value" : {
            "type" : "string",
            "description" : "Answer value - chosen option id",
            "example" : "DIPLOMATIC"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "question_id", "value", "type" ]
      },
      "Checklist" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Comprises checklist statuses, questions/answers and checklist items",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Checklist id",
            "example" : "667e0198-af81-4276-a931-365e5065e258"
          },
          "status" : {
            "$ref" : "#/components/schemas/ChecklistStatus",
            "description" : "Checklist status (ON_HOLD, REQUIRES_NATIONALITY_OR_BIRTHDATE, REQUIRES_ANSWERS, FORMED, FINALIZED)",
            "example" : "REQUIRES_NATIONALITY_OR_BIRTHDATE"
          },
          "resolution_status" : {
            "$ref" : "#/components/schemas/ChecklistResolutionStatus",
            "description" : "Checklist resolution status - UNKNOWN, until status is FORMED",
            "example" : "ONLY_TRAVEL_DOCUMENT_REQUIRED"
          },
          "nationality" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Nationality, if set",
            "example" : "GBR"
          },
          "has_nationality_question" : {
            "type" : "boolean",
            "description" : "True if nationality affects rules - require from passenger, unless `nationality` is not null (was provided already)",
            "example" : "false"
          },
          "birthdate" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true,
            "description" : "Birthdate, if set"
          },
          "has_birthdate_question" : {
            "type" : "boolean",
            "description" : "True if birthdate affects rules - require from passenger, unless `birthdate` is not null (was provided already)",
            "example" : "false"
          },
          "questions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Question"
            },
            "nullable" : true,
            "description" : "List of relevant questions to form the checklist, need to answer all via setAnswers endpoint"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChecklistItem"
            },
            "nullable" : true,
            "description" : "Checklist items for passenger. Shown once all relevant questions are answered"
          }
        },
        "required" : [ "id", "status", "resolution_status", "has_nationality_question", "has_birthdate_question" ]
      },
      "ChecklistItem" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/DocumentRequirement"
        }, {
          "$ref" : "#/components/schemas/InfoItem"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "document-requirement" : "#/components/schemas/DocumentRequirement",
            "info-item" : "#/components/schemas/InfoItem"
          }
        }
      },
      "DocumentRequirement" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Document requirement",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Checklist item id",
            "example" : "QFJHy3K9eSufEkA7auLeZQ=="
          },
          "title" : {
            "type" : "string",
            "description" : "Title (localised)",
            "example" : "US Green Card"
          },
          "short_title" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Short document title (localised)",
            "example" : "visa"
          },
          "description" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Description (localised)",
            "example" : "What is ESTA?..."
          },
          "short_description" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Short description (localised)",
            "example" : "You need to pay the Non-Resident Fee (DNR)"
          },
          "requirements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChecklistItemRequirement"
            },
            "nullable" : true,
            "description" : "Any relevant document fields requirements"
          },
          "external_link" : {
            "type" : "string",
            "nullable" : true,
            "description" : "External link for more info",
            "example" : "https://ceac.state.gov/genniv/"
          },
          "rule_origin" : {
            "$ref" : "#/components/schemas/RuleOrigin",
            "description" : "Rule origin"
          },
          "item_type" : {
            "$ref" : "#/components/schemas/ChecklistItemType",
            "description" : "Checklist item type"
          },
          "is_travel_document" : {
            "type" : "boolean",
            "description" : "Whether item is Travel Document requirement",
            "example" : "true"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "title", "rule_origin", "item_type", "is_travel_document", "type" ]
      },
      "InfoItem" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Info item - can't be resolved manually",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Checklist item id",
            "example" : "QFJHy3K9eSufEkA7auLeZQ=="
          },
          "title" : {
            "type" : "string",
            "description" : "Title (localised)",
            "example" : "US Green Card"
          },
          "short_title" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Short document title (localised)",
            "example" : "visa"
          },
          "description" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Description (localised)",
            "example" : "What is ESTA?..."
          },
          "short_description" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Short description (localised)",
            "example" : "You need to pay the Non-Resident Fee (DNR)"
          },
          "requirements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChecklistItemRequirement"
            },
            "nullable" : true,
            "description" : "Any relevant document fields requirements"
          },
          "external_link" : {
            "type" : "string",
            "nullable" : true,
            "description" : "External link for more info",
            "example" : "https://ceac.state.gov/genniv/"
          },
          "rule_origin" : {
            "$ref" : "#/components/schemas/RuleOrigin",
            "description" : "Rule origin"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "title", "rule_origin", "type" ]
      },
      "ChecklistItemRequirement" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/Not"
        }, {
          "$ref" : "#/components/schemas/ComposedAnd"
        }, {
          "$ref" : "#/components/schemas/ComposedOr"
        }, {
          "$ref" : "#/components/schemas/FieldCompare"
        }, {
          "$ref" : "#/components/schemas/FieldIn"
        }, {
          "$ref" : "#/components/schemas/FieldNotIn"
        }, {
          "$ref" : "#/components/schemas/Check"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "not" : "#/components/schemas/Not",
            "composed-and" : "#/components/schemas/ComposedAnd",
            "composed-or" : "#/components/schemas/ComposedOr",
            "field-compare" : "#/components/schemas/FieldCompare",
            "field-in" : "#/components/schemas/FieldIn",
            "field-not-in" : "#/components/schemas/FieldNotIn",
            "check" : "#/components/schemas/Check"
          }
        }
      },
      "Check" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Checklist item requirement: agent check (eg \"check: 2 blank pages\")",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "check: 2 blank pages"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "type" ]
      },
      "ComposedAnd" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Composed checklist item requirement: And([ChecklistItemRequirement])",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "expiryDate >= 2025-05-27 and docCountry = CAN"
          },
          "requirements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChecklistItemRequirement"
            },
            "description" : "Embedded requirements as a list (... and ... and ...)"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "requirements", "type" ]
      },
      "ComposedOr" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Composed checklist item requirement: Or([ChecklistItemRequirement])",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "expiryDate >= 2025-05-27 or nationality in (GBR,USA)"
          },
          "requirements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChecklistItemRequirement"
            },
            "description" : "Embedded requirements as a list (... or ... or ...)"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "requirements", "type" ]
      },
      "FieldCompare" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Checklist item requirement: compare field value ({field} {operator} {value}, eg expiryDate >= 2025-10-25)",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "expiryDate >= 2025-05-27"
          },
          "field" : {
            "type" : "string",
            "description" : "Field",
            "example" : "expiryDate"
          },
          "operator" : {
            "$ref" : "#/components/schemas/Operator",
            "description" : "Compare operator",
            "example" : "GTE"
          },
          "value" : {
            "type" : "string",
            "description" : "Value of the field to compare with - type depends on field",
            "example" : "2025-05-27"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "field", "operator", "value", "type" ]
      },
      "Operator" : {
        "type" : "string",
        "enum" : [ "GTE", "LTE", "GT", "LT", "EQ", "NEQ", "CONTAINS" ]
      },
      "FieldIn" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Checklist item requirement: field value IN list ({field} in [{values}], eg docSubType in [DIPLOMATIC,SERVICE])",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "docSubType in (DIPLOMATIC, SERVICE)"
          },
          "field" : {
            "type" : "string",
            "description" : "Field",
            "example" : "docSubType"
          },
          "values" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Allowed values",
            "example" : "[\"DIPLOMATIC\", \"SERVICE\"]"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "field", "values", "type" ]
      },
      "FieldNotIn" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Checklist item requirement: field value NOT IN list ({field} not in [{values}], eg docSubType not in [B1,B2,B1/B2])",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "docCountry not in (GBR, USA)"
          },
          "field" : {
            "type" : "string",
            "description" : "Field",
            "example" : "docCountry"
          },
          "values" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Not allowed values",
            "example" : "[\"GBR\", \"USA\"]"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "field", "values", "type" ]
      },
      "Not" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Composed checklist item requirement: Not(ChecklistItemRequirement)",
        "properties" : {
          "as_text" : {
            "type" : "string",
            "description" : "Requirement represented as text",
            "example" : "not(docSubType = \"TOURIST\" and durationFullYears = 10)"
          },
          "requirement" : {
            "$ref" : "#/components/schemas/ChecklistItemRequirement",
            "description" : "Embedded requirement"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "as_text", "requirement", "type" ]
      },
      "ChecklistItemType" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Checklist item type, eg RESIDENCE_PERMIT/USA which represents USA Green Card",
        "properties" : {
          "item_type" : {
            "type" : "string",
            "description" : "Checklist item type",
            "example" : "RESIDENCE_PERMIT"
          },
          "item_territory" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Item type territory, might be null",
            "example" : "USA"
          }
        },
        "required" : [ "item_type" ]
      },
      "ChecklistResolutionStatus" : {
        "type" : "string",
        "enum" : [ "UNKNOWN", "ENTRY_NOT_ALLOWED", "ONLY_TRAVEL_DOCUMENT_REQUIRED", "MORE_THAN_TRAVEL_DOCUMENT_REQUIRED" ]
      },
      "ChecklistStatus" : {
        "type" : "string",
        "enum" : [ "ON_HOLD", "REQUIRES_NATIONALITY_OR_BIRTHDATE", "REQUIRES_ANSWERS", "FORMED", "FINALIZED" ]
      },
      "Question" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/DeclarationItem"
        }, {
          "$ref" : "#/components/schemas/HaveDocumentQuestion"
        }, {
          "$ref" : "#/components/schemas/PickFromListQuestion"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "declaration-item" : "#/components/schemas/DeclarationItem",
            "have-document-question" : "#/components/schemas/HaveDocumentQuestion",
            "pick-from-list-question" : "#/components/schemas/PickFromListQuestion"
          }
        }
      },
      "DeclarationItem" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "A Yes/No question (boolean)",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Question/Declaration item id",
            "example" : "HelbxGxFg0gpdAdnumztVA=="
          },
          "answer" : {
            "type" : "boolean",
            "nullable" : true,
            "description" : "Declaration answer (confirm/refute), if was provided",
            "example" : "null"
          },
          "question_title" : {
            "$ref" : "#/components/schemas/QuestionTitle",
            "description" : "Declaration title (localised) - formed in either positive or negative form ('I am' or 'I am not'), depending on declaration"
          },
          "sample_image" : {
            "$ref" : "#/components/schemas/QuestionSampleImage",
            "nullable" : true,
            "description" : "Question sample image (eg US Green Card specimen) with a title"
          },
          "default_value" : {
            "type" : "boolean"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "question_title", "default_value", "type" ]
      },
      "HaveDocumentQuestion" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "A Yes/No question (boolean), manifested through a positive statement of 'I do have {document type}' format",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Question id",
            "example" : "HelbxGxFg0gpdAdnumztVA=="
          },
          "answer" : {
            "type" : "boolean",
            "nullable" : true,
            "description" : "Question answer, if was provided",
            "example" : "null"
          },
          "question_title" : {
            "$ref" : "#/components/schemas/QuestionTitle",
            "description" : "Question title (localised)"
          },
          "sample_image" : {
            "$ref" : "#/components/schemas/QuestionSampleImage",
            "nullable" : true,
            "description" : "Question sample image (eg US Green Card specimen) with a title"
          },
          "doc_category_order" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Document category sort order"
          },
          "doc_category_title" : {
            "type" : "string",
            "description" : "Document category (localised)",
            "example" : "Visa"
          },
          "doc_title" : {
            "type" : "string",
            "description" : "Document title (localised)",
            "example" : "US Green Card"
          },
          "country" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Document country code (iso alpha-3) - can be EURO",
            "example" : "USA"
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "question_title", "doc_category_order", "doc_category_title", "doc_title", "type" ]
      },
      "PickFromListQuestion" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "A question with options to choose from, requires single answer (option id)",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Question id",
            "example" : "PassportTypeInQuestion"
          },
          "answer" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Question answer (Option id), if was provided",
            "example" : "null"
          },
          "options" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Option"
            },
            "description" : "Options to choose from"
          },
          "question_title" : {
            "$ref" : "#/components/schemas/QuestionTitle",
            "description" : "Question title (localised)"
          },
          "sample_image" : {
            "$ref" : "#/components/schemas/QuestionSampleImage",
            "nullable" : true,
            "description" : "Question sample image with a title"
          },
          "default_value" : {
            "type" : "string",
            "nullable" : true
          },
          "type" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "options", "question_title", "type" ]
      },
      "Option" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Option to choose for `pick-from-list-question`",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Option id"
          },
          "title" : {
            "type" : "string",
            "description" : "Option title (localised)"
          }
        },
        "required" : [ "id", "title" ]
      },
      "QuestionSampleImage" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Question sample image with a name to form expressions like 'Sample of {title}'",
        "properties" : {
          "url" : {
            "type" : "string",
            "description" : "Image URL for a sample image to go with the question",
            "example" : "https://zamna-webview.s3.eu-west-1.amazonaws.com/samples/usa-green-card.png"
          },
          "title" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Optional title",
            "example" : "US Green Card"
          }
        },
        "required" : [ "url" ]
      },
      "QuestionTitle" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Question title and optional subtitle",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Question title",
            "example" : "Since 01/01/2011, I have visited the following countries:"
          },
          "subtitle" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Optional question subtitle",
            "example" : "Cuba, North Korea"
          }
        },
        "required" : [ "name" ]
      },
      "RuleOrigin" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Origin of the rule",
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/RuleType",
            "description" : "Type (ENTRY/TRANSIT/EXIT)",
            "example" : "ENTRY"
          },
          "country" : {
            "type" : "string",
            "description" : "Rule origin country",
            "example" : "MEX"
          }
        },
        "required" : [ "type", "country" ]
      },
      "RuleType" : {
        "type" : "string",
        "enum" : [ "ENTRY", "TRANSIT", "EXIT" ]
      },
      "SetAnswersRequest" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Request to set nationality, birthdate, answers to questions and confirm/refute declarations",
        "properties" : {
          "nationality" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Nationality, nullable",
            "example" : "MEX"
          },
          "birthdate" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true,
            "description" : "Birthdate, nullable"
          },
          "answers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Answer"
            },
            "nullable" : true,
            "description" : "List of answers, nullable"
          },
          "confirm_declarations" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "nullable" : true,
            "description" : "List of declaration ids to confirm"
          },
          "refute_declarations" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "nullable" : true,
            "description" : "List of declaration ids to refute"
          }
        }
      },
      "StartRequest" : {
        "type" : "object",
        "additionalProperties" : false,
        "description" : "Request to initiate checklist for a given journey. Must use the same checklistId for the same passenger - if null, will generate new and auto-generate its id",
        "properties" : {
          "checklistId" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Checklist id, optional - use deterministic id for the same passenger",
            "example" : "X36Q9C_pax_4445563"
          },
          "journey" : {
            "$ref" : "#/components/schemas/JourneyInput",
            "description" : "Journey"
          },
          "nationality" : {
            "type" : "string",
            "nullable" : true,
            "description" : "Nationality, optional",
            "example" : "MEX"
          },
          "birthdate" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true,
            "description" : "Birthdate, optional"
          }
        },
        "required" : [ "journey" ]
      }
    },
    "securitySchemes" : { }
  },
  "servers" : [ ],
  "security" : null
}