如何使用 Sitata API 确定旅行者的出行限制
许多人可能不知道,Sitata 最初的基础是为早期疾病检测而构建的。事实上,我们的创始人早在 2016 年就有一场 TedX 演讲,主题是为何需要警示旅行者以帮助预防疾病传播。因此,当 2019 年 12 月初报告出现异常肺炎病例群时,我们得知 COVID-19 的消息也就不足为奇了。2020 年 1 月 2 日,我们的健康团队决定向我们的旅行者和商业合作伙伴发布首次警告。这甚至比世界卫生组织的行动还要早几天!
在不可避免的后续影响中,我们有了一个顿悟。疾病传播如此迅速,我们清楚地意识到,全球应对措施充其量也只能是混乱的。每个国家都将颁布自己的一套法规和规则来控制传播。这不可避免地会给全球旅行带来严重破坏,并对那些仍想出行的人造成巨大的困惑。我们判断正确,并决定为此采取行动。Sitata 是全球首批为 COVID-19 导致的旅行限制和入境要求变化创建专用 API 和监控服务的公司之一。凭借先进的事件检测软件系统和一支专注的分析师团队,我们已经拥有了完成这项任务的所有合适工具和流程。
自这项新服务推出以来,已有各种组织利用这些数据为其自身客户谋利,包括 Eddy Travels、Flight Centre 和 Etihad Airways;还有更多即将宣布!为了帮助更多专注于旅行的组织从这项服务中受益,我们在下面详细撰写了一系列示例,以帮助解释如何针对各种使用场景使用该 API。希望这些说明能帮助您启动自己的计划。
入境要求
毫无疑问,旅行者首先会问的问题是“我能去那里吗?”和“我会被隔离吗?”,所以这是一个很好的起点。我们创建了入境要求数据集,以回答关于进入一个国家或地区的严格“是/否”问题。
在撰写本文时,该数据集包含以下 10 个不同类别:
- 居民可以入境吗?
- 外国人可以入境吗?
- 是否允许过境该国?
- 是否要求抵达时检测(疾病爆发)?
- 是否接受检测证明(疾病爆发)?
- 是否要求抵达时隔离(疾病爆发)?
- 是否要求疫苗接种?
- 是否要求保险?
- 是否要求检测证明?
- 是否要求登记表?(健康或其他)
每个类别可以具有以下值之一:
- 是
- 是,但有例外
- 否
- 否,但有例外
尽管绝大多数值是“是”和“否”,但实际情况并不总是那么简单。有时各国政府会制定一些真正奇怪和疯狂的规则,这就需要“有例外”这类值。
入境要求本质上是一条记录,记录了某个主体对一个或多个国家或地区实施的一套规则。在我们的数据架构中,主体可以是一个国家、州甚至城市。目前,Sitata 主要覆盖国家层面的数据。但是,对于美国等特定地区,我们也有一些州/省级记录。
任何在 **origin_country_division_id** 或 **origin_country_region_id** 字段下有值的记录,分别对应州级或市级数据。如果您需要更细粒度的数据,请联系我们,我们可以讨论您的使用场景。
请花些时间查看我们的 API 文档,熟悉入境要求的数据结构。
数据结构中一个有点令人困惑的地方是我们对 “来源” 一词的使用。这之所以令人困惑,是因为开发者通常认为来源是出发地或起点。然而,我们所说的来源实际上是指对其他国家实施规则的主体,即制定限制措施的国家或地区。
另一个需要注意的重要点是我们受影响国家列表的工作方式。如果 affected_countries 为空,则应将其解释为全球性规则,即所有国家都受影响。
一些示例
正如您在文档中看到的,有几种方法可以从 API 检索数据。下面我们将看一些最常见的使用场景。
如何获取两个国家之间的要求?
有几种方法可以发出此类请求。最简单的版本是使用 **destination** 和 **departure** 参数。这些参数接受 ISO 3166-1 alpha-2 代码作为输入。
GET https://www.sitata.com/api/v2/entry_requirements?departure=DE&destination=IN
响应将包含旅行者从出发国前往目的地国所需了解的所有要求(国家和州级)。
如果我想要州级数据怎么办?
Sitata 拥有某些地区的州级数据。如果某条记录的 origin_country_division_id 字段有值,则表明它是针对某个州的。您也可以使用 **destination_country_division** 参数进行筛选,仅检索州级数据。它期望一个 ISO_3166-2 值,例如,美国德克萨斯州为 US-TX。
GET https://www.sitata.com/api/v2/entry_requirements?departure=DE&destination_country_division=IN-AP
请注意,按国家查询然后筛选州级数据以查看是否存在这些数据,并在存在时使用它们,可能更简单。
如何获取两个机场之间的要求?
与国家类似,Sitata API 可以返回两个机场之间的结果。参数 departure_airport 和 destination_airport 使用 ICAO 或 IATA 机场代码来筛选结果。响应将包含旅行者从相应出发国前往目的地国所需了解的所有限制(国家和州级)。
GET https://www.sitata.com/api/v2/entry_requirements?departure_airport=MUC&destination_airport=BOM
响应将包含旅行者从出发国前往目的地国所需了解的所有限制(国家和州级)。
如果我只有城市信息怎么办?
Sitata 选择不提供按特定城市名称查询的功能,因为这可能导致冲突和混淆。相反,我们选择通过经纬度坐标来支持 API 查询,这不会在结果集中产生任何歧义。参数是 departure_lat、departure_lng、destination_lat 和 destination_lng。
GET https://www.sitata.com/api/v2/entry_requirements?departure_lat=48.13743&departure_lng=11.57549&destination_lat=19.0760&destination_lng=72.8777
如果您将城市解析为位置并基于坐标进行查询,我们的 API 将响应旅行者从出发国前往目的地国所需了解的所有限制(国家和州级)。
额外数据
对于某些类型的入境要求,可能在一个名为 extras 的元数据类型字段中有关联的额外数据。该字段是一个键/值映射,包含针对特定要求的各种额外信息片段。
隔离天数是多少?
此数据条目属于入境要求 类型 5。在此条目中,**extras** 映射将包含一个名为 quarantine_days 的字段,其中包含一个表示强制隔离天数的整数。
入境前阴性 COVID 检测的有效小时数是多少?
此数据条目属于入境要求 类型 8。在此条目中,**extras** 映射将包含一个名为 entry_hours 的字段,其中包含一个表示入境前允许的阴性 COVID 检测有效小时数的整数。
请告知我们
我们相信我们拥有一个非常强大的系统,很可能满足您帮助旅行者了解旅途中可能遇到情况的所有需求。如果您有我们尚未解决的特定使用场景,请告知我们!
等等……还有更多!
本文是两部分系列文章的第一部分,解释了如何与 Sitata API 交互以获取入境要求和旅行限制信息。到目前为止,我们已经讨论了入境要求,它概述了进入一个国家或地区所需的严格是/否类型要求,但我们还没有讨论进入国家后的情况。了解如何进入一个国家是一回事,而理解是否可以在国内自由行动、参观海滩,或者是否有强制宵禁则是另一回事。
请继续关注第二篇文章,它将深入探讨我们的旅行限制数据集。提示——它几乎完全相同,所以您随时可以在此期间查看我们的 API 文档。