Atlas Administration API リファレンス
- Atlas へのプログラムによるアクセスのための OAuth 2.0認証はプレビュー機能として利用できます。
- 機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。 OAuth2.0 認証を使用するには、Atlas Administration APIへのリクエストで使用する サービス アカウントを作成します。
Atlas Administration API は、 REST アーキテクチャ スタイルの原則に従い、Atlas の機能へのプログラムによるアクセスを可能にする多数の内部リソースを公開します。
Atlas ウェブ インターフェースを通じて行われた変更と同様、Atlas Administration API を通じて行われた変更には Atlas の請求が適用されます。 料金が発生する場合は、Atlas に登録されている有効なクレジットカードが必要です。または、アカウントがロックされるリスクがあります。
APIには、次の機能があります。
- リソースのバージョン管理
Atlas はバージョン管理された Atlas Administration API を提供します。これには、個々の Atlas Administration API リソース レベルでのバージョン管理が含まれます。 Atlas Administration API の詳細については、これらのリソースと次のセクションを使用してください。
- JSONエンティティ
- すべてのエンティティはJSONで表現されます。
- ブラウザ可能なインターフェース
- 一貫性のあるリンク メカニズムを使用すると、ルート リソースから開始し、関連リソースへのリンクをたどって、Atlas Administration API 全体をブラウザできます。
- HTTPS -only
- HTTPS経由でのみ Atlas Administration API にアクセスでき、ネットワーク経由で送信されるすべてのデータがTLSを使用して完全に暗号化されることが保証されます。
- ユーザー アクセス制御
各Atlas userのAtlas管理API機能は、 Atlas Atlas userロールによって付与される権限と一致します。
例
Project Read Only
Atlasプロジェクトで {2 を持つユーザーは、 インターフェースでもAtlas user AtlasAPIAdministration でも、そのプロジェクト内のリソースを変更できません。- APIネットワーク アクセス リスト
Atlas は、 APIアクセス リスト を通じて Atlas Administration APIへのアクセスを保護できます。このリストは、特定のIPアドレスまたは CIDR アドレスへのAPIへのアクセスを制限します。各認証方法には、独自の Atlas Administration APIアクセス リストがあります。Atlas UIを使用して新しい組織を作成すると、Atlas ではデフォルトでAPIアクセス リストの要求が有効になります。
HTTPメソッド
すべてのリソースは、次の一般的なHTTPメソッドのサブセットをサポートしています。
方式 | 目的 |
---|---|
GET | リソースのJSON表現を取得します。 |
POST | 指定されたJSON表現を使用して新しいリソースを作成します。 |
PUT | リソースを指定されたJSON表現で置き換えます。 |
PATCH | 提供されたJSON表現を使用して、リソース内の指定されたフィールドを更新します。 |
DELETE | リソースを削除します。 |
HEAD | リソースのJSON表現なしでレスポンス ヘッダーを返します。 |
JSON
すべてのエンティティはJSONで表されます。 次のルールと規則が適用されます。
コンテンツタイプリクエストヘッダー
POST
またはPUT
を介してサーバーにJSONを送信する場合は、必ず正しいコンテンツタイプのリクエスト ヘッダーを指定してください。Content-Type: application/json
無効なフィールド
無効なフィールドは無視されるのではなく拒否されます。 たとえば、新しいエンティティを作成してフィールドの 1 つのスペルをうっかり間違えた場合、または既存のエンティティを更新して変更できないフィールドを含めようとすると、サーバーは 400 のステータス コードと以下を示すエラーメッセージを返します。フィールドが無効です。
ISO-8601-形式の日付
すべての日付は、UTC で指定された ISO- 形式の文字列として返されます。8601サーバーに日付を送信する場合(つまり、
POST
またはPATCH
リクエストエンティティのクエリ パラメータまたはフィールドとして)は、ISO- 8601 形式の日付を使用します。タイムゾーンを指定しない場合は、UTC が想定されます。 ただし、あいまいさを避けるために、タイムゾーン指定子を含めることを強くお勧めします。BSON タイムスタンプ
場合によっては、タイムスタンプがBSON タイムスタンプとして返されることもあり、特にバックアップ リソースに含まれます。 これらは、 JSONドキュメントでは 2 つのフィールドを持つオブジェクトとして表されます。
date
は 2 番目の粒度を持つ UTC の ISO-8601 形式の日付stringで、increment
は 32 ビット整数です。数値を含むフィールドのフィールド名
特定の単位の数値を含むフィールドには、使用される単位を明確に区別するために名前が付けられます。
空のフィールド
現在の値がないフィールドは、適切なデフォルト値とともに返されます。
認識可能なデフォルト値を持たないフィールドは、エンティティから省略されます。
フィールドの順序
サーバーによって返されるJSONドキュメント内のフィールドは特定の順序ではなく、順序が変更される可能性があります。 フィールドの順序に依存しないでください。
リンク
各リソースには、サブリソースや関連リソースへの 1 つ以上のリンクが含まれています。 リンクは、リンク関係オブジェクトの配列であるエンティティのlinks
フィールドに配置されます。 各リンク関係には 2 つのフィールドがあります。
フィールド | 説明 |
---|---|
rel | 関係の名前(またはタイプ)。 これらの多くは拡張関係タイプと見なされ、 http://mms.mongodb.com というプレフィックスが付きます。 |
href | ターゲットURL 。 |
すべてのエンティティには、 self
と呼ばれるリンク関係が少なくとも 1 つ含まれます。これはつまり、独自のURLです。 エンティティがリストの一部である場合、そのエンティティにはself
リンク関係のみが含まれます。
詳細については、「 Web リンク仕様 」を参照してください。 。この仕様ではHTTPレスポンス ヘッダーにリンクを含めるための形式について説明していますが、これは必須ではないことに注意してください。 Atlas Administration API を簡単に参照できるようにするには、レスポンス ヘッダーではなくレスポンス本文にリンクを含めます。
リスト
一部のリソースはエンティティのリストを返します。 応答でエンティティのリストが要求される場合、結果は次のクエリ パラメーターに囲まれたバッチで返されます。
フィールド | 説明 |
---|---|
pageNum | ページ番号(1 から始まる)。 指定しない場合、デフォルトは 1 になります。 |
itemsPerPage | 1 ページあたりに返す項目の数は最大 500 です。 指定しない場合、デフォルトは 100 になります。 |
includeCount | レスポンスが totalCount フィールドを返すかどうかを指定します。 指定しない場合、デフォルトはtrue です。 |
応答エンティティには、次の 3 つのフィールドが含まれています。
フィールド | 説明 |
---|---|
totalCount | 結果セット全体に含まれる項目の合計数。 |
results | エンティティ ドキュメントの配列である結果セット。 |
links | 1 から 3 つのリンク関係が含まれます: 前の結果ページでは previous (最初のページは省略)、次のページの結果ではnext (最後のページでは省略)、現在のページでは とself が表示されます(常に存在)。 |
エンティティのリストのリクエストを行って結果がない場合、Atlas Administration API は 200 のステータス コードを返し、 results
配列は空になります。 この場合、エンティティのリストが将来のある時点で空ではなくなる可能性があるため、この場合は 404 では応答しません。 ただし、存在しないコンテキストのエンティティのリスト(存在しないプロジェクトのホストのリストなど)を要求すると、応答ステータスは404 になります。
エンベロープ
一部のクライアントは、 HTTPレスポンス ヘッダーやステータス コードにアクセスできない場合があります。 その場合は、レスポンスに「エンベロープ」を含めることをリクエストできます。これはJSONドキュメントの追加レイヤーで、レスポンス ヘッダーに通常含まれる関連詳細が含まれます。 デフォルトでは、Atlas Administration API のエンベロープに応答は含まれません。 リクエストするには、クエリ パラメータenvelope=true
を追加します。
単一のエンティティを含む応答の場合、エンベロープには 2 つのフィールドが含まれます。
フィールド | 説明 |
---|---|
status | HTTPステータス コード。 |
content | 要求されたエンティティ。 |
エンティティのリストを含む応答の場合、結果をラップするエンベロープはすでにあるため、 envelope=true
を指定すると既存のエンベロープにstatus
フィールドのみが追加されます。
Pretty Printing(整形表示)
デフォルトでは、サーバーによって返されるJSONから余計な空白が削除されます。 pretty-printed 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 | OK | リクエストは成功しました。 これは通常、成功した GET リクエストへの応答です。 |
201 | 作成済み | 新しいリソースが作成されました。 これは通常、成功した POST リクエストへの応答です。 |
202 | 承認済み | 非同期操作のリクエストが受け入れられました。 |
400 | 無効なリクエスト | クライアント リクエストで問題が発生しました。 |
401 | 許可されていない | 認証は必要ですが、リクエストに含まれていません 。 通常、これは認証情報がリクエストから省略されたか、提供された認証情報が正しくないか、特定の認証方法に関連付けられたユーザーが要求されたリソースにアクセスすることを許可されていないことを意味します。 |
403 | Forbidden | 指定されたリソースへのアクセスは許可されていません。 |
404 | 見つかりません | 要求されたリソースが存在しない。 |
405 | メソッドは許可されていません | HTTPメソッドは指定されたリソースではサポートされていません。 各リソースがサポートするのはHTTPメソッドのサブセットのみであることに注意してください。 たとえば、ルート リソースを DELETE することはできません。 |
409 | 競合 | これは、そのプロパティの同じ値を持つ既存のエンティティがすでに存在する場合に一意であるエンティティのプロパティを作成または変更するための リクエストに対する応答です。 |
5x | さまざまなサーバーエラー | 予期しない問題が発生しました。 後でもう一度試し、Atlas サポートへの通知を検討してください。 |
Errors
リクエストがエラーを返す場合、レスポンス本文にはJSONドキュメントが含まれます。 このドキュメントには、Atlas Administration API リクエストが失敗した理由に関する詳細が含まれています。 ドキュメントには、次の 5 つのパラメータが含まれています。
Parameter | データ型 | 説明 |
---|---|---|
詳細 | string | 誤った Atlas Administration API リクエストに対して Atlas が返す、人間が判読可能な説明。 |
エラー | integer | ステータス コード HTTP レスポンスのヘッダーに返された。 |
errorCode | string | 誤った Atlas Administration API リクエストを表す名前付き定数。 これらの定数の詳細については、「 Atlas Administration API エラー コード 」を参照してください。 |
パラメーター | 配列 | Atlas Administration API リクエストに含まれるパラメータのリスト。 |
理由 | string | ステータス コードの定義 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 プロジェクトを一意に識別する string 値です。
Atlas プロジェクトは、以前は「グループ」として識別されていました。 一部の Atlas エンドポイントは、リクエスト パス、クエリ、またはボディ パラメータの一部としてgroup
または{GROUP-ID}
を参照します。 {GROUP-ID}
を必要とするエンドポイントについては、代わりにプロジェクト ID を指定します。
プロジェクト ID を検索するには、次の手順に従います。
Atlas で、 Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Projects メニューの横にある Options メニューをクリックし、 Project Settings をクリックします。
[ Project Settings ]ページが表示されます。
認証
Atlas Administration APIでは、リクエストを認証するために 2 つの方法 ( APIキーまたはサービスアカウント)のいずれかを使用します。これにより、ユーザー名とパスワードとして機能するキーとアクセス トークンがネットワーク経由で送信されることがなくなります。 詳細については、 「Atlas Administration API認証」 を参照してください。
使用方法の詳細については、「 APIリクエストの作成 」を参照してください。
レート制限
特定のリソースでは、1 分あたりに処理できるリクエスト数が制限されます。
これらのリソースに対して、Atlas はプロジェクトごとに100 1 分あたり最大 のリクエストを許可します。Atlas Administration API認証メソッドは組織に属しますが、複数のプロジェクトへのアクセス権を付与できます。
例
A と B の 2 人のユーザーを考えてみましょう。ユーザー A はプロジェクト X に属し、ユーザー B はプロジェクト X と Y に属しています。
午後 1 時、ユーザー A はプロジェクト X のレート制限されたリソースに 50 回のリクエストを送信し、すべてが 1 時 00 分、20 時までに完了します。
午前 1 時 00分: 30 分に、ユーザー B はプロジェクト X のレート制限されたリソースに対して 60 回のリクエストを実行しようとします。
ユーザー A はプロジェクト X の 1 時 00 分以内に 50 個のリクエストをすでに使用しているため、ユーザー B が試みた最後の 10 個のリクエストは拒否されます。
ただし、各プロジェクトが個別のリクエスト カウンターを保持しているため、ユーザー B はプロジェクト Y のレート制限されたリソースにリクエストを行うことができます。
午後 1 時 1:00 になると、レート制限に使用されるリクエスト カウンターは 1 分ごとにリセットされるため、プロジェクト X へのリクエストが続行される可能性があります。
レート制限を超えた場合、Atlas Administration API は429 を返します (リクエストが多すぎる) HTTP ステータス コード。
次のステップ
使用を開始するには、「 Atlas Administration API の使い始める 」を参照してください。
プログラムによる Atlas Administration API へのアクセスを管理するには、次のいずれかの手順を参照してください。