Google Registry APIは、開発者が開発で使用するAPIの機械可読な説明をアップロードして共有することにより、APIに関する情報を整理できるようにすることを目的としている。
Registry APIはgRPCサービスである。Protocol Buffersによって形式的に記述され、aip.devのGoogle API設計ガイドラインに厳密に従っています。Registry APIの説明には、gRPC HTTP/JSOトランスコーディングをサポートするようにアノテーションが付けられています。これにより、プロキシを使用してJSON REST APIとして自動的に公開できます。
APIは、OpenAPI、Google API Discovery Service Format形式、Protocol Buffersなどのさまざまな形式を使用して記述される。Registry API自体は、Protocol Buffers言語で記述されている。これは、サーバに登録され、指定のプロジェクトに属するすべてのAPIのリストを取得する方法である。そして、特定のAPI対する使用可能なすべてのバージョンを取得する方法である。
curl "https://<registry-api-server>/v1alpha1/projects/<prj>/apis"
curl "https://<registry-api-server>/v1alpha1/projects/<prj>/apis/<api>/versions"
projects
、apis
、versions
に加えて、Registry APIによって管理される他の高レベルのエンティティはspecs
である。これは、構造化された方法でAPIバージョンを説明するドキュメントに対応する。それは、properties
とlabels
から構成される。properties
は、プロジェクト、API、およびバージョンに関連付けることができる名前付きの値である。labels
はプロパティに似ているが、値はない。
Googleは、Registry APIのリファレンス実装を開発チームのためにデプロイして実行できるようにした。Goで記述されたRegistry APIサーバは、ローカルにデプロイすることも、提供されたDockerイメージを使用してGoogle Cloud Runでデプロイすることもできる。どちらの場合も、サーバはデフォルトでリモートNoSQLデータベースサービスであるCloud Datastore APIを使用する。ただし、registry-server
を起動し、ストレージバックエンド構成を含むYAMLファイルを渡すときに、-c
オプションを使用してリレーショナルデータベースを使用するように構成できる。現在、リポジトリにはPostgreSQLとSQLiteの構成ファイルが含まれている。
Registry APIのリファレンス実装は、make all
を使って構築できる。これにより、GoコンパイラとProtocol Bufferコンパイラを除き、必要なすべての依存関係もダウンロードされる。これにより、Goクライアントライブラリとコマンドラインインターフェイスが生成され、APIの操作が簡単になる。
現在、Registry APIとそのリファレンス実装は「アルファ版」と見なされており、変更される可能性がある。