Trips

Personalized travel restrictions for every journey.

Introduction

The Trips endpoint lets developers retrieve personalized travel restrictions and documents based on trip context like origin, destination, and date of travel.

See API Specification

📘

Trips endpoint is a convenient way to retrieve contextualized Restrictions and Procedures enforced by Countries or Regions.

Definitions

ISO 3166-1 Territory

ISO 3166-1 is a standard defining a code for the names of countries, dependent territories, and special areas of geographical interest. We will use this terminology throughout this document instead of countries and territories. At sherpa°, we default to ISO 3166-1 alpha-3 unless stated otherwise.

Transit/Connection

When the customer’s ticket between two locations includes one or more locations in between where travellers have to disembark the airplane and board another one. The customer will not be leaving the airport in this scenario.

🚧

Transit Information

A transit or connection only applies when the customer has purchased the entire trip as a single ticket. This means they would usually not be required to collect their baggage and have them rechecked. If the trip is international, they may be able to stay in the international section of the airport without crossing the border control or customs gates.

Self Transit or Virtual Interlining

A technology used by travel companies that combines flights from different carriers that don't traditionally work together to go from point A to B via C. Travellers might also create their custom trip by booking separate tickets simultaneously to reach their final destination. The customer may leave the airport in this scenario to fly out from another airport in the same city.

📘

Virtual Interlining vs Normal Transit

The key difference with a regular transit described above is that it can result in some unique scenarios on international transits where a traveller must collect their baggage, pass through customs or border control, and re-check their baggage before carrying on to their next flight.

Multi-Connection trip

If a trip between an origin and destination has at least one connection or transit, excluding self transit or virtual interlining.

Multi-Segment trip

A trip that has multiple flights, and the traveller is able to leave the airport at each transit point, even if they stay inside the airport. All trips with self-transit or virtual interlining are multi-connection trips.

Domestic Flight

A flight between two points where the origin and destination and transit points are located in the same ISO 3166-1 Territory. For example, Toronto to Vancouver, New York to Los Angeles, Edmonton to Calgary, etc.

📘

Domestic Requirements Support

Sherpaº currently only supports domestic requirements for the United States, Canada, and Australia. Domestic requirements will only be shown on flights that take place wholly within these ISO 3166-1 Territory.

International Flight

A flight between two points where the origin and destination [or transit points] are located in a different ISO 3166-1 Territory. For example, London to Paris (the U.K. and France), New York to Tokyo (USA and Japan), etc.

All international travel requirements that apply will be shown on these trips.

International Transit

This is an international flight between two points where passengers are not formally entering the destination ISO 3166-1 Territory, but only transiting through on their way to a final destination.

For example, if one is flying from Toronto to Dubai with a layover in London, Toronto to London would be considered an international transit. International transit requirements will apply from Toronto to London and international flight requirements will apply from London to Dubai.

Request Headers

Each call to the API must include your unique API key and the content type as headers. Additional optional headers are listed in the table below.

HeaderRequiredDescription
x-api-keyYYour unique API key that is used to authenticate requests.
Content-TypeYThe content type returned as the API response. Set to application/vnd.api+json
Accept-EncodingNThe type of compression to use for the API response. Set to gzip, br

📘

API Response Compression

Currently, our API responses are not compressed, however we are considering adding this feature in the future. The Accept-Encoding header can still be used so that applicable responses will be compressed autmatically once the feature is added.

Describing a Trip

A trip can be described with a type and an attribute object containing the trip details.

PropertyTypeDescription
typestringTRIP is the only accepted value
attributesobjectAn object that contains the attributes of a trip including the language, traveller, currency and travel nodes

Attributes Object

The attributes object contains all the details relevant to the trip. This includes information about the traveller, origin, destination, and localization attributes such as language and currency.

PropertyTypeDescription
localestringThe language the API response should be returned in, for example en-US

For a full list of supported languages please see our list of supported languages.
travellerobjectContains the passports and traveller arrays
currencystringThe currency the visa and ETA prices will be returned in. Possible values: USD, CAD, GBP, EUR
travelNodesarrayAn array of objects which contains itinerary details for the origin, destinations and any transits if applicable.

Describing a Traveller

A Traveller object is used to describe the specific travellers taking part in a trip. A traveller is an individual (PAX) person.

PropertyTypeDescription
passportsarrayThe nationality of the traveller defined with ISO3 Country Code
vaccinationsobjectList of vaccinations a traveller has received and disclosed.

Describing a Vaccination

🚧

Fully Vaccinated by default

The response from the API defaults to travel rules for fully-vaccinated travellers.

The API supports filtering for COVID-19 vaccination status. By default, the API returns information for fully-vaccinated travellers.

PropertyTypeDescription
statusstringVaccination status of the traveller. Possible values: NOT_VACCINATED, FULLY_VACCINATED
typestringType of vaccination. Currently, only COVID_19 is supported.

Describing a Travel Node

A travel node is either an origin or destination and contains all of the related itinerary details. The table below defines the properties related to this object.

PropertyTypeDescription
typestringEither origin or destination
locationCodestringUsed when defining a trip with an ISO3 Country Code
airportCodestringUsed when defining a trip with a supported airport code.
departureobjectAn object which contains the date, time and travelMode
arrivalobjectAn object which contains the date, time and travelMode
datestringArrival date YYYY-MM-DD
timestringHH:MM

Describing an arrival or departure object

PropertyTypeDescription
datestringArrival or departure date in the following format: YYYY-MM-DD
timestringArrival or departure time in the following format: HH:MM
travelModestringCurrently the only accepted value is AIR
curl --location --request POST 'https://requirements-api.sandbox.joinsherpa.com/v3/trips' \
--header 'Content-Type: application/vnd.api+json' \
--header 'x-api-key: <<your_api_key>>' \
--data-raw '{
    "data": {
        "type": "TRIP",
        "attributes": {
            "locale": "en-US",
            "traveller": {
                "passports": ["USA"],
                "vaccinations": [
                    {
                        "type": "COVID_19",
                        "status": "FULLY_VACCINATED"
                    }
                ]
            },
            "currency": "USD",
            "travelNodes": [
                {
                    "type": "ORIGIN",
                    "locationCode": "USA",
                    "departure": {
                        "date": "2022-12-01",
                        "time": "12:59",
                        "travelMode": "AIR"
                    }
                },
                {
                    "type": "DESTINATION",
                    "locationCode": "TUR",
                    "arrival": {
                        "date": "2022-12-01",
                        "time": "22:59",
                        "travelMode": "AIR"
                    }
                }
            ]
        }
    }
}'
{
    "meta": {
        "copyright": "Sherpa",
        "version": "3.0.0"
    },
    "data": {
        "id": "d39361c7-b0af-4654-9e54-050f9df533a3",
        "type": "TRIP",
        "attributes": {
            "traveller": {
                "passports": [
                    "USA"
                ],
                "vaccinations": [
                    {
                        "type": "COVID_19",
                        "status": "FULLY_VACCINATED"
                    }
                ]
            },
            "locale": "en-US",
            "travelNodes": [
                {
                    "type": "ORIGIN",
                    "departure": {
                        "date": "2022-12-01",
                        "time": "12:59",
                        "travelMode": "AIR"
                    },
                    "locationCode": "USA",
                    "locationName": "United States"
                },
                {
                    "type": "DESTINATION",
                    "arrival": {
                        "date": "2022-12-01",
                        "time": "22:59",
                        "travelMode": "AIR"
                    },
                    "locationCode": "TUR",
                    "locationName": "Türkiye"
                }
            ],
            "headline": "Most travelers from United States can enter Türkiye, but there are restrictions.",
            "informationGroups": [
                {
                    "name": "Visa Requirements",
                    "type": "VISA_REQUIREMENTS",
                    "tooltip": "Visa requirements are determined by the passport you are travelling with and duration of your trip.",
                    "groupings": [
                        {
                            "name": "Türkiye",
                            "enforcement": "MANDATORY",
                            "data": [
                                {
                                    "type": "PROCEDURE",
                                    "id": "e74d0857-57d5-4e57-99b8-c04a573e735e"
                                }
                            ]
                        }
                    ],
                    "enforcement": "MANDATORY",
                    "headline": "You need a visa for Türkiye if you have a United States passport."
                },
                {
                    "name": "Travel Restrictions",
                    "type": "TRAVEL_RESTRICTIONS",
                    "tooltip": "Travel restrictions often depend on your travel history. Check details for each part of your trip to see if any of them apply to you.",
                    "groupings": [
                        {
                            "name": "Türkiye",
                            "data": [
                                {
                                    "type": "RESTRICTION",
                                    "id": "4d945064-2318-40d5-b8cb-cd3129ba7525"
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "Documents and Forms",
                    "type": "DOCUMENTS_AND_FORMS",
                    "groupings": [
                        {
                            "name": "Türkiye",
                            "enforcement": "MANDATORY",
                            "data": [
                                {
                                    "type": "PROCEDURE",
                                    "id": "e0dde7f5-b34f-4959-ae9e-fbffa62867bf"
                                }
                            ]
                        }
                    ],
                    "enforcement": "MANDATORY"
                },
                {
                    "name": "Public Health Requirements",
                    "type": "PUBLIC_HEALTH_REQUIREMENTS",
                    "groupings": [
                        {
                            "name": "Türkiye",
                            "enforcement": "NOT_REQUIRED",
                            "data": [
                                {
                                    "type": "PROCEDURE",
                                    "id": "a13499b3-eb6d-4864-93ca-38df1737c3f1"
                                },
                                {
                                    "type": "PROCEDURE",
                                    "id": "260c29ed-9b67-4c8d-9dff-348886356dc4"
                                }
                            ]
                        }
                    ],
                    "enforcement": "NOT_REQUIRED"
                },
                {
                    "name": "Additional Information",
                    "type": "ADDITIONAL_INFORMATION",
                    "groupings": [
                        {
                            "name": "Türkiye",
                            "enforcement": "NOT_REQUIRED",
                            "data": [
                                {
                                    "type": "PROCEDURE",
                                    "id": "c379062e-74c2-4104-a4c0-0c5911654fb9"
                                },
                                {
                                    "type": "PROCEDURE",
                                    "id": "c3c59609-f52b-4b3d-8fdd-714a4cb48ff1"
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "Upcoming",
                    "type": "UPCOMING",
                    "tooltip": "Some of these changes may not be in effect yet and may change unexpectedly."
                }
            ],
            "currency": "USD",
            "travelOpenness": "LEVEL_1"
        },
        "relationships": {
            "procedures": {
                "data": [
                    {
                        "type": "PROCEDURE",
                        "id": "e74d0857-57d5-4e57-99b8-c04a573e735e"
                    },
                    {
                        "type": "PROCEDURE",
                        "id": "e0dde7f5-b34f-4959-ae9e-fbffa62867bf"
                    },
                    {
                        "type": "PROCEDURE",
                        "id": "a13499b3-eb6d-4864-93ca-38df1737c3f1"
                    },
                    {
                        "type": "PROCEDURE",
                        "id": "260c29ed-9b67-4c8d-9dff-348886356dc4"
                    },
                    {
                        "type": "PROCEDURE",
                        "id": "c379062e-74c2-4104-a4c0-0c5911654fb9"
                    },
                    {
                        "type": "PROCEDURE",
                        "id": "c3c59609-f52b-4b3d-8fdd-714a4cb48ff1"
                    }
                ],
                "meta": {
                    "count": 6
                }
            },
            "restrictions": {
                "data": [
                    {
                        "type": "RESTRICTION",
                        "id": "4d945064-2318-40d5-b8cb-cd3129ba7525"
                    }
                ],
                "meta": {
                    "count": 1
                }
            }
        }
    },
    "included": []
}

Unsupported Cases

Even though a trip might be valid syntax, it might not provide the desired output. Here are some cases we currently don't support along with a brief description and example

Airport -> Airport (within same region)
Example: SFO -> SAN
Travel rules remain the same within the same region.

"alerts": [
                "We don't have information for travel within California. Be sure to check official sources."
            ]

Airport → Airport (Within same country but different regions with no domestic info)
Example: SXF → FRA
We currently only fully support regions from selected countries.

"headline": "We don't have information for travel from Berlin (SXF) to Frankfurt (FRA). Be sure to check official sources."

Airport → Region (Within same country but different regions with no domestic info)
Example: COK → IN-DL

"headline": "We don't have information for travel from Kochi (COK) to Delhi. Be sure to check official sources.",

Example: SXF → DE-HE

"headline": "We don't have information for travel from Berlin (SXF) to Germany. Be sure to check official sources."

Region → Airport - (Within same country but different regions with no domestic info)
Example: DE-HE → SXF

"headline": "We don't have information for travel from Berlin (SXF) to Germany. Be sure to check official sources."

Region → Region (Within same country but different regions with no domestic info)
Example: DE-HE → DE-BR

"headline": "We don't have information for travel within Germany. Be sure to check official sources."

📘

Actual headlines are localized and may change

Headlines as part of the summary are fully localized and can be easily used to display information to the end users.

The outlined examples are a current snapshot and the exact copy of the messages may change as we continuously improve on making travel rules understandable.

Examples of invalid trips

Country -> Country (same country)
Example: CAN -> CAN

Country -> Region (region in same country)
Region -> Country (region in same country)
Example: CAN -> CA-ON

Country -> Airport (airport in same country)
Airport -> Country (airport in same country)
Example: CAN -> YYZ

Visa Specific Data on Trips Endpoint

Visa requirements show the destination country's visa (paper and eVisa) requirements for a traveller. The Visa requirements section can be found as part of the /v3/trips response or as a stand-alone request for entry requirements under the /v2/procedures resource endpoint.

Looking at a /v3/trips response, the visa requirements are listed under the attributes informationGroups with the type: VISA_REQUIREMENTS (data.attributes.informationGroups[x].type)

For a typical trip going one way from Canada(CAN) to Italy(ITA), a snippet below shows what to expect. The informationGroups section has a list of the response ids which point to details about each visa requirement necessary for the trip.

"informationGroups": [
                {
                    "name": "Visa Requirements",
                    "type": "VISA_REQUIREMENTS",
                    "tooltip": "Visa requirements are determined by the passport you are travelling with and duration of your trip.",
                    "groupings": [
                        {
                            "name": "Italy",
                            "enforcement": "NOT_REQUIRED",
                            "data": [
                                {
                                    "type": "PROCEDURE",
                                    "id": "9e170760-a9cc-446b-9389-4be9f4e29022"
                                }
                            ]
                        }
                    ],
                    "enforcement": "NOT_REQUIRED",
                    "headline": "You don't need a visa for Italy if you have a Canadian passport."
                }
AttributeDescription
nameThe name of the informationGroup
typeThe type of informationGroup
tooltipThe tooltip that can be used in conjunction with our icon guide.
groupingsAn array containing the groupings of procedures
groupings.nameThe name of the country the procedure applies to
groupings.enforcementMANDATORY: visa is required
NOT_REQUIRED: a visa is not required
MAY_BE_REQUIRED: visa requirement is dependent on other factors such as length of stay
groupings.data[x].typeThe type of grouping being returned, for example PROCEDURE
groupings.data[x].idThe unique procedure id
enforcementMANDATORY: visa is required
NOT_REQUIRED: a visa is not required
MAY_BE_REQUIRED: visa requirement is dependent on other factors such as length of stay
headlineThe summary of the visa requirement

A search of the id "9e170760-a9cc-446b-9389-4be9f4e29022" takes us to the included[0] section of the trip response, where details of the visa requirement are listed below.

 "included": [
    {
      "id": "9e170760-a9cc-446b-9389-4be9f4e29022",
      "type": "PROCEDURE",
      "attributes": {
        "category": "DOC_REQUIREMENT",
        "subCategory": "BEFORE_ARRIVAL",
        "title": "Visa is not required ",
        "description": "Travelers don’t need a visa to visit Italy for Business or Tourism.",
        "more": [],
        "actions": [],
        "sources": [
          {
            "type": "GOVERNMENT",
            "title": "Ministry of Foreign Affairs of Italy",
            "url": "https://vistoperitalia.esteri.it/home/en"
          }
        ],
        "lastUpdatedAt": "2022-10-07T08:04:00.000Z",
        "createdAt": "2021-04-27T03:44:00.000Z",
        "startDate": null,
        "endDate": null,
        "enforcement": "NOT_REQUIRED",
        "documentTypes": [
          "VISA"
        ],
        "tags": [
          "international",
          "fully_vaccinated",
          "not_vaccinated",
          "land",
          "air",
          "sea",
          "tourism",
          "business"
        ],
        "travelPurposes": [
          "TOURISM",
          "BUSINESS"
        ],
        "lengthOfStay": [
          {
            "type": "DAYS",
            "value": 90,
            "text": "90 days"
          }
        ],
        "included": [
          {
            "code": "ALB",
            "text": "Albania (ALB)",
            "type": "PASSPORT"
          },
          {
            "code": "AND",
            "text": " Andorra (AND)",
            "type": "PASSPORT"
          },
          {
            "code": "AGO",
            "text": "Angola (AGO)",
            "type": "PASSPORT"
          },
          {
            "code": "ATG",
            "text": "Antigua and Barbuda (ATG)",
            "type": "PASSPORT"
          },
          {
            "code": "ARG",
            "text": "Argentina (ARG)",
            "type": "PASSPORT"
          },
          {
            "code": "AUS",
            "text": "Australia (AUS)",
            "type": "PASSPORT"
          },
          {
            "code": "AUT",
            "text": "Austria (AUT)",
            "type": "PASSPORT"
          },
          {
            "code": "BHS",
            "text": "Bahamas (BHS)",
            "type": "PASSPORT"
          },
          {
            "code": "BRB",
            "text": "Barbados (BRB)",
            "type": "PASSPORT"
          },
          {
            "code": "BEL",
            "text": "Belgium (BEL)",
            "type": "PASSPORT"
          },
          {
            "code": "BMU",
            "text": "Bermuda (GBR)",
            "type": "PASSPORT"
          },
          {
            "code": "BIH",
            "text": "Bosnia and Herzegovina (BIH)",
            "type": "PASSPORT"
          },
          {
            "code": "BRA",
            "text": "Brazil (BRA)",
            "type": "PASSPORT"
          },
          {
            "code": "BRN",
            "text": "Brunei (BRN)",
            "type": "PASSPORT"
          },
          {
            "code": "BGR",
            "text": "Bulgaria (BGR)",
            "type": "PASSPORT"
          },
          {
            "code": "CAN",
            "text": "Canada (CAN)",
            "type": "PASSPORT"
          },
          {
            "code": "CHL",
            "text": "Chile (CHL)",
            "type": "PASSPORT"
          },
          {
            "code": "COL",
            "text": "Colombia (COL)",
            "type": "PASSPORT"
          },
          {
            "code": "CRI",
            "text": "Costa Rica (CRI)",
            "type": "PASSPORT"
          },
          {
            "code": "HRV",
            "text": "Croatia (HRV)",
            "type": "PASSPORT"
          },
          {
            "code": "CZE",
            "text": "Czech Republic (CZE)",
            "type": "PASSPORT"
          },
          {
            "code": "CYP",
            "text": "Cyprus (CYP)",
            "type": "PASSPORT"
          },
          {
            "code": "DNK",
            "text": "Denmark (DNK)",
            "type": "PASSPORT"
          },
          {
            "code": "DMA",
            "text": "Dominica (DMA)",
            "type": "PASSPORT"
          },
          {
            "code": "TLS",
            "text": "East Timor (TLS)",
            "type": "PASSPORT"
          },
          {
            "code": "SLV",
            "text": "El Salvador (SLV)",
            "type": "PASSPORT"
          },
          {
            "code": "EST",
            "text": "Estonia (EST)",
            "type": "PASSPORT"
          },
          {
            "code": "FIN",
            "text": "Finland (FIN)",
            "type": "PASSPORT"
          },
          {
            "code": "FRA",
            "text": "France (FRA)",
            "type": "PASSPORT"
          },
          {
            "code": "GEO",
            "text": "Georgia (GEO)",
            "type": "PASSPORT"
          },
          {
            "code": "DEU",
            "text": "Germany (D)",
            "type": "PASSPORT"
          },
          {
            "code": "GRC",
            "text": "Greece (GRC)",
            "type": "PASSPORT"
          },
          {
            "code": "GRD",
            "text": "Grenada (GRD)",
            "type": "PASSPORT"
          },
          {
            "code": "GTM",
            "text": "Guatemala (GTM)",
            "type": "PASSPORT"
          },
          {
            "code": "HND",
            "text": "Honduras (HND)",
            "type": "PASSPORT"
          },
          {
            "code": "HKG",
            "text": "Hong Kong SAR (CHN)",
            "type": "PASSPORT"
          },
          {
            "code": "HUN",
            "text": "Hungary (HUN)",
            "type": "PASSPORT"
          },
          {
            "code": "ISL",
            "text": "Iceland (ISL)",
            "type": "PASSPORT"
          },
          {
            "code": "IRL",
            "text": "Ireland (IRL)",
            "type": "PASSPORT"
          },
          {
            "code": "ISR",
            "text": "Israel (ISR)",
            "type": "PASSPORT"
          },
          {
            "code": "JPN",
            "text": "Japan (JPN)",
            "type": "PASSPORT"
          },
          {
            "code": "KIR",
            "text": "Kiribati (KIR)",
            "type": "PASSPORT"
          },
          {
            "code": "LVA",
            "text": "Latvia (LVA)",
            "type": "PASSPORT"
          },
          {
            "code": "LIE",
            "text": "Liechtenstein (LIE)",
            "type": "PASSPORT"
          },
          {
            "code": "LTU",
            "text": "Lithuania (LTU)",
            "type": "PASSPORT"
          },
          {
            "code": "LUX",
            "text": "Luxembourg (LUX)",
            "type": "PASSPORT"
          },
          {
            "code": "MAC",
            "text": "Macao SAR (CHN)",
            "type": "PASSPORT"
          },
          {
            "code": "MYS",
            "text": "Malaysia (MYS)",
            "type": "PASSPORT"
          },
          {
            "code": "MLT",
            "text": "Malta (MLT)",
            "type": "PASSPORT"
          },
          {
            "code": "MHL",
            "text": "Marshall Islands (MHL)",
            "type": "PASSPORT"
          },
          {
            "code": "MUS",
            "text": "Mauritius (MUS)",
            "type": "PASSPORT"
          },
          {
            "code": "MEX",
            "text": "Mexico (MEX)",
            "type": "PASSPORT"
          },
          {
            "code": "FSM",
            "text": "Micronesia (FSM)",
            "type": "PASSPORT"
          },
          {
            "code": "NRU",
            "text": "Nauru (NRU)",
            "type": "PASSPORT"
          },
          {
            "code": "PLW",
            "text": "Palau (PLW)",
            "type": "PASSPORT"
          },
          {
            "code": "MDA",
            "text": "Moldova (MDA)",
            "type": "PASSPORT"
          },
          {
            "code": "MCO",
            "text": "Monaco (MCO)",
            "type": "PASSPORT"
          },
          {
            "code": "MNE",
            "text": "Montenegro (MNE)",
            "type": "PASSPORT"
          },
          {
            "code": "NLD",
            "text": "Netherlands (NLD)",
            "type": "PASSPORT"
          },
          {
            "code": "NZL",
            "text": "New Zealand (NZL)",
            "type": "PASSPORT"
          },
          {
            "code": "NIC",
            "text": "Nicaragua (NIC)",
            "type": "PASSPORT"
          },
          {
            "code": "MKD",
            "text": "North Macedonia (MKD)",
            "type": "PASSPORT"
          },
          {
            "code": "NOR",
            "text": "Norway (NOR)",
            "type": "PASSPORT"
          },
          {
            "code": "PAN",
            "text": "Panama (PAN)",
            "type": "PASSPORT"
          },
          {
            "code": "PRY",
            "text": "Paraguay (PRY)",
            "type": "PASSPORT"
          },
          {
            "code": "PER",
            "text": "Peru (PER)",
            "type": "PASSPORT"
          },
          {
            "code": "POL",
            "text": "Poland (POL)",
            "type": "PASSPORT"
          },
          {
            "code": "PRT",
            "text": "Portugal (PRT)",
            "type": "PASSPORT"
          },
          {
            "code": "ROU",
            "text": "Romania (ROU)",
            "type": "PASSPORT"
          },
          {
            "code": "KNA",
            "text": "Saint Kitts and Nevis (KNA)",
            "type": "PASSPORT"
          },
          {
            "code": "LCA",
            "text": "Saint Lucia (LCA)",
            "type": "PASSPORT"
          },
          {
            "code": "WSM",
            "text": "Samoa (WSM)",
            "type": "PASSPORT"
          },
          {
            "code": "SRB",
            "text": "Serbia (SRB)",
            "type": "PASSPORT"
          },
          {
            "code": "SYC",
            "text": "Seychelles (SYC)",
            "type": "PASSPORT"
          },
          {
            "code": "SGP",
            "text": "Singapore (SGP)",
            "type": "PASSPORT"
          },
          {
            "code": "SVK",
            "text": "Slovakia (SVK)",
            "type": "PASSPORT"
          },
          {
            "code": "SVN",
            "text": "Slovenia (SVN)",
            "type": "PASSPORT"
          },
          {
            "code": "SLB",
            "text": "Solomon Islands (SLB)",
            "type": "PASSPORT"
          },
          {
            "code": "KOR",
            "text": "South Korea (KOR)",
            "type": "PASSPORT"
          },
          {
            "code": "ESP",
            "text": "Spain (ESP)",
            "type": "PASSPORT"
          },
          {
            "code": "SWE",
            "text": "Sweden (SWE)",
            "type": "PASSPORT"
          },
          {
            "code": "CHE",
            "text": "Switzerland (CHE)",
            "type": "PASSPORT"
          },
          {
            "code": "TWN",
            "text": "Taiwan (TWN)",
            "type": "PASSPORT"
          },
          {
            "code": "TON",
            "text": "Tonga (TON)",
            "type": "PASSPORT"
          },
          {
            "code": "TTO",
            "text": "Trinidad and Tobago (TTO)",
            "type": "PASSPORT"
          },
          {
            "code": "TUV",
            "text": "Tuvalu (TUV)",
            "type": "PASSPORT"
          },
          {
            "code": "GBR",
            "text": "United Kingdom (GBR)",
            "type": "PASSPORT"
          },
          {
            "code": "UKR",
            "text": "Ukraine (UKR)",
            "type": "PASSPORT"
          },
          {
            "code": "ARE",
            "text": "United Arab Emirates (ARE)",
            "type": "PASSPORT"
          },
          {
            "code": "USA",
            "text": "United States (USA)",
            "type": "PASSPORT"
          },
          {
            "code": "URY",
            "text": "Uruguay (URY)",
            "type": "PASSPORT"
          },
          {
            "code": "VAT",
            "text": "Vatican City (VAT)",
            "type": "PASSPORT"
          },
          {
            "code": "VEN",
            "text": "Venezuela (VEN)",
            "type": "PASSPORT"
          }
        ],
        "icon": {
          "name": "visa"
        }
      },
      "relationships": {
        "location": {
          "data": {
            "id": "ITA",
            "type": "LOCATION"
          }
        }
      }
    }

The visa requirement contains the following attributes as explained in the tables below:

AttributeDescription
idThe unique procedure id
typePossible values:
PROCEDURE for visa requirements
RESTRICTION for travel restrictions
PRODUCTfor a visa product
attributesAn object containing the visa attributes, whose properties are listed below
categoryThe category of the requirement. For visa procedures, the possible categories are:

DOC_REQUIRED, DOC_REQUIREMENT, NO_DOC_REQUIRED, RE_ENTRY_PERMIT, VISA, NO_VISA, PASSPORT
subcategoryDescribes the time the requirement is applicable

Visa procedures can have the following subcategories:
BEFORE_DEPARTURE, BEFORE_ARRIVAL, IN_FLIGHT, ON_ARRIVAL, DOMESTIC, IN_AIRPORT
titleThe title of the procedure
descriptionDocument Description
moreUsed for additional information or context relevant to the trip. For example, residency exemptions will be found here.
actionsIf a visa is application, a link to the application will be placed here
sourcesSherpa's source for the information
sources.typeThe type of source, usually GOVERNMENT
Other possible values: AIRLINE, AIRPORT, ORGANIZATION, UNKNOWN.
sources.titleThe name of the source
sources.urlThe url location of the source information
lastUpdatedAtLast date sherpa° updated its database with information on this requirement.
createdAtWhen the requirement was created in Sherpa's repository
startDateWhen the requirement became active. This is usually null since most visa requirements have been in place.
endDateWhen the requirement is expected to end. This is also always null since visa requirements unlike covid restrictions are not expected to end soon.
enforcementLevel of enforcement of the requirement for entry.
Values: MANDATORY, RECOMMENDED, MAY_BE_REQUIRED, OPTIONAL, NOT_REQUIRED, UNKNOWN.
documentTypesType of document. This can be a health pass, passenger locator form etc.
For visas the possible types are: E_VISA, ETA, EMBASSY_VISA, VISA, SPECIAL_PROVISION.
tagsA summary of the context information used to determine trip requirements
travelPurposesPurpose for which the visa requirement is issued. Can be Tourism, Business, Transit
lengthOfStayThe number of days a traveller is allowed to stay in the destination country with a visa or without, if it is not enforced or required.
includedList of countries affected by the specific visa requirement.
icon.nameThe icon name that can be used from our icon that would apply to this itinerary
relationshipsContains an object which describes the country enforcing the procedure

Clarifications

Can I retrieve information for both vaccinated and non-vaccinated traveller in one API request?
No, you must make two requests.

What is a fully vaccinated traveller?
Governments have different expectations from travellers. Sherpa provides information in the body of the response, but there is no way to personalize the information based on traveller vaccine types.