Atlas Administration API 参考
- 用于以编程访问权限Atlas的 OAuth 2.0身份验证作为预览功能。
- 在预览期间,功能和相应的文档可能随时更改。要使用 OAuth 2.0身份验证,请创建一个服务帐户,以便在向Atlas Administration API发出的请求中使用。
Atlas Administration API 遵循 REST 架构风格的原则,以开放大量内部资源,从而能够以编程方式访问 Atlas 的功能。
与通过 Atlas Web 界面进行的更改一样,通过 Atlas Administration API 进行的更改也需按 Atlas计费。 如果产生费用,则必须在 Atlas 文件一张有效的信用,否则帐户可能会被锁定。
API 具有以下功能:
- 资源版本控制
Atlas 提供版本化的 Atlas Administration API,其中包括单个 Atlas Administration API 资源级别的版本控制。使用这些资源和以下部分来了解有关 Atlas Administration API 的详细信息:
- JSON 实体
- 所有实体都以 JSON 表示。
- 可浏览界面
- 使用一致的链接机制,您可以从根资源开始,然后通过指向相关资源的链接来浏览整个 Atlas Administration API。
- 仅HTTPS
- 您只能通过 HTTPS 访问 Atlas Administration API,确保通过网络发送的所有数据均使用 TLS 进行完全加密。
- 用户访问控制
每个 Atlas user 的 Atlas Administration API 功能与其Atlas user 角色授予的权限相匹配。
例子
在 Atlas 项目中具有
Project Read Only
的用户无法修改该项目中的任何资源,无论是通过 Atlas user 界面还是 Atlas Administration API。- API 网络访问列表
Atlas可以通过API访问权限访问权限保护对其Atlas Administration API的访问。此列表将对API的访问权限限制为特定的IP或CIDR地址。每种身份验证方法都有自己的Atlas Administration API访问权限列表。使用Atlas用户界面创建新组织时, Atlas默认启用API访问权限列表要求。
HTTP 方法
所有资源都支持这些常用 HTTP 方法的子集:
方法 | 用途 |
---|---|
GET | 检索资源的 JSON 表示形式。 |
POST | 使用提供的 JSON 表示形式创建新资源。 |
PUT | 将资源替换为提供的 JSON 表示形式。 |
PATCH | 使用提供的 JSON 表示形式更新资源中的指定字段。 |
DELETE | 删除资源。 |
HEAD | 返回不带资源的 JSON 表示形式的响应标头。 |
JSON
所有实体都以 JSON 表示。以下规则和惯例适用:
内容类型请求标头
通过
POST
或PUT
向服务器发送JSON时,请确保指定正确的内容类型请求标头:Content-Type: application/json
无效字段
无效字段会被拒绝,而不是被忽略。 例如,如果您尝试创建新实体并拼错其中一个字段,或尝试更新现有实体但包含无法修改的字段,则服务器会以 400 状态代码和错误消息进行响应,说明是哪个实体字段无效。
ISO-8601 格式日期
所有日期都返回为 ISO-8601 - 以 UTC 格式指定的字符串。将日期发送到服务器时(即作为查询参数或
POST
或PATCH
请求实体中的字段),请使用 ISO-8601 格式的日期。如果不指定时区域,则假定为 UTC。但是,强烈建议您包含时区域标识符以避免任何歧义。BSON 时间戳
在某些情况下,时间戳会以BSON timestamp的形式返回,尤其是在备份资源中。 它们在JSON文档中表示为具有两个字段的对象:
date
(以 UTC 为单位、粒度精确到秒的 ISO-8601 格式的日期string )和increment
(一个 32 位整数)。包含数字的字段的字段名称
将命名包含特定单位数值的字段,以便消除所使用单位的歧义。
空字段
没有当前值的字段将返回适当的默认值。
将从实体中省略没有合理默认值的字段。
字段排序
服务器返回的 JSON 文档中的字段没有特定的顺序,并且顺序可能会发生变化。不要依赖字段的顺序。
链接
每个资源都包括一个或多个指向子资源和/或相关资源的链接。 链接放置在实体的links
字段中,该实体是链接关系对象的数组。 每个链接关系都有两个字段:
字段 | 说明 |
---|---|
rel | 关系的名称(或类型)。 其中许多被视为扩展关系类型,并以 http://mms.mongodb.com 为前缀。 |
href | 目标 URL。 |
所有实体都至少包含一个名为self
的链接关系,即实体自己的URL 。 当实体是列表的一部分时,它仅包含self
链接关系。
有关详情,请参阅网络链接规范。请注意,尽管该规范描述了在 HTTP 响应标头中包含链接的格式,但这不是必需的。为了使 Atlas Administration API 易于浏览,它将链接包含在响应正文中,而不是在响应标头中。
列表
某些资源会返回实体列表。当响应中预期有实体列表时,将按以下查询参数分批返回结果:
字段 | 说明 |
---|---|
pageNum | 页码(从 1 开始)。 如果未指定,则默认为 1 。 |
itemsPerPage | 每页要返回的项目数,最多 500 个。 如果未指定,则默认为 100 。 |
includeCount | 指定响应是否返回 totalCount 字段。如果未指定,则默认为true 。 |
响应实体包含三个字段:
字段 | 说明 |
---|---|
totalCount | 整个结果集中的项目总数。 |
results | 结果集,它是实体文档的数组。 |
links | 包含一到三个链接关系: previous 表示上一页结果(第一页时省略); next 代表下一页结果(最后一页省略);以及当前页面的self (始终存在)。 |
如果您请求实体列表但没有结果,则 Atlas Administration API 将使用 200 状态代码进行响应,并且results
数组为空。 在这种情况下,它不会以 404 进行响应,因为实体列表在将来的某个点可能不为空。但是,如果您在不存在的上下文中请求实体列表(例如,不存在的项目的主机列表),则会导致 404 响应状态。
信封
某些客户端可能无法访问HTTP响应标头和/或状态代码。 在这种情况下,您可以请求响应包含一个“信封”,它只是JSON文档中的额外信息层,包含通常位于响应标头中的任何相关详细信息。 默认情况下,Atlas Administration API不会将响应包含在信封中。 要请求一个,只需添加查询参数envelope=true
即可。
对于包含单个实体的响应,信封包含两个字段:
字段 | 说明 |
---|---|
status | HTTP 状态代码。 |
content | 请求的实体。 |
对于包含实体列表的响应,已经有一个包装结果的信封,因此指定envelope=true
仅将status
字段添加到现有信封。
美观打印
默认情况下,会从服务器返回的JSON中去掉多余空格。 要请求美观打印的JSON ,只需将pretty=true
查询参数附加到任何请求:
curl --user '{USERNAME}:{APIKEY}' --digest \ --header 'Accept: application/json' \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v1.0?pretty=true"
响应代码
响应使用标准 HTTP 响应代码,包括:
代码 | 含义 | 注意 |
---|---|---|
200 | 正常 | 请求成功。 这通常是对成功 GET 请求的响应。 |
201 | 已创建 | 已创建新资源。 这通常是对成功 POST 请求的响应。 |
202 | 已接受 | 已接受异步操作请求。 |
400 | Bad Request | 客户端请求出现问题。 |
401 | Unauthorized | 需要进行身份验证,但请求中未提供身份验证。通常,这意味着请求中省略了身份验证信息、提供的凭证不正确,或者不允许与给定身份验证方法关联的用户访问权限所请求的资源。 |
403 | Forbidden | 不允许访问指定的资源。 |
404 | 未找到 | 请求的资源不存在。 |
405 | 不允许的方法 | 指定的资源不支持该HTTP方法。 请记住,每个资源可能仅支持HTTP方法的子集。 示例,您无法 DELETE 根资源。 |
409 | 冲突 | 这是对创建或修改实体属性的请求的响应,当现有实体已存在且与该属性具有相同值时,则该实体属性是唯一的。 |
5xx | 各种服务器错误 | 出现意外问题。请稍后重试并考虑通知 Atlas 支持。 |
Errors
当请求返回错误时,响应正文将包含 JSON 文档。本文档详细介绍了 Atlas Administration API 请求失败的原因。该文档包含五个参数:
Parameter | 数据类型 | 说明 |
---|---|---|
详细信息 | 字符串 | Atlas 针对错误的 Atlas Administration API 请求返回的可读说明。 |
错误 | 整型 | 状态代码 在 HTTP 响应的标头中返回。 |
错误代码 | 字符串 | 表示错误的 Atlas Administration API 请求的命名常量。 要了解这些常量,请参阅Atlas Administration API 错误代码。 |
参数 | 阵列 | Atlas Administration API 请求中包含的参数列表。 |
原因 | 字符串 | 状态代码定义 在 HTTP 响应的标头中返回。 |
例子
以不正确的格式发送请求时,Atlas 会返回以下响应正文:
1 { 2 "detail" : "Cannot find resource /api/atlas/v1.0/softwareComponents/version.", 3 "error" : 404, 4 "errorCode" : "RESOURCE_NOT_FOUND", 5 "parameters" : [ "/api/atlas/v1.0/softwareComponents/version" ], 6 "reason" : "Not Found" 7 }
项目 ID
项目 ID 是一个字符串值,用于唯一标识 Atlas 项目。
Atlas 项目此前被确定为“群组”。 某些 Atlas 端点引用group
或{GROUP-ID}
作为请求路径、查询或正文参数的一部分。 对于需要{GROUP-ID}
的任何端点,请改为指定您的项目 ID。
要检索项目 ID,请执行以下操作:
在Atlas中,转到Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Settings(项目设置)。
显示项目设置页面。
身份验证
Atlas Administration API使用两种方法之一对请求进行身份验证: API密钥或服务帐户。这可确保用提供服务户名和密码的密钥和访问权限令牌永远不会通过网络发送。要学习;了解更多信息,请参阅Atlas Administration API身份验证。
有关用法详情,请参阅发送发送 API 请求。
速率限制
某些资源会限制每分钟可以处理的请求数量。
对于这些资源, Atlas允许每个项目每分钟最多100个请求。 Atlas Administration API身份验证方法属于一个组织,但可以授予对多个项目的访问权限。
例子
考虑两个用户:A 和 B。用户 A 属于项目 X,用户 B 属于项目 X 和 Y。
下午 1:00:00,用户 A 对项目 X 中的速率受限资源发出 50 个请求,所有请求均在下午 1:00:20 之前完成。
下午 1:00:30,用户 B 尝试向项目 X 中的速率受限资源发出 60 个请求。
由于用户 A 在下午 1:00 已用完项目 X 的 50 个请求,因此已拒绝用户 B 尝试发出的最后 10 个请求。
然而,用户 B 可以向项目 Y 中的速率受限资源发出请求,因为每个项目都有一个单独的请求计数器。
在下午 1:01:00,对项目 X 的请求可能会继续进行,因为用于速率限制的请求计数器每分钟重置一次。
如果超过速率限制,Atlas Administration API 将返回429 (请求过多) HTTP 状态代码。
后续步骤
要开始使用,请参阅 Atlas Administration API 入门。
要管理对 Atlas Administration API 的编程访问,请参阅以下任一过程: