手書きの API ページ
仕様を用意せずに MDX でエンドポイントをドキュメント化しても、メソッドとパス、Try it パネル、リクエストサンプル、固定表示される例を利用できます。
すべての API に OpenAPI 仕様があるわけではなく、手書きのほうが読みやすいエンドポイントもあります。api フロントマターを持つページは 1 つのエンドポイントをドキュメント化します。ページのフィールドがリクエストとレスポンスを記述し、Blume はそれをもとに OpenAPI リファレンスページの残りの部分を構築します。上部にはメソッドとパスが表示されます。コンテンツの横の列には Try it パネルとリクエストサンプルが並び、その下にリクエストとレスポンスの例が固定表示されます。
---
title: Create a user
api: POST /workspaces/{workspaceId}/users
---
Creates a user and sends them an invite.
<ParamField path="workspaceId" type="string" required>
The workspace to add the user to.
</ParamField>
<ParamField body="email" type="string" required placeholder="ada@example.com">
The user's email address.
</ParamField>
<ParamField body="role" type="string" default="member">
One of `owner`, `admin`, or `member`.
</ParamField>
<ResponseField name="id" type="string" required>
The new user's ID.
</ResponseField>
<ResponseExample>
```json 201
{ "id": "usr_8f2k", "status": "invited" }
```
</ResponseExample>
api には HTTP メソッドと、パスまたは完全な URL を指定します。パスパラメーターは {workspaceId} のように波かっこで囲んで記述し、対応する path フィールドの値が入ります。GET https://api.acme.com/v1/users のような完全な URL を指定した場合は、記述したとおりの URL にリクエストが送信されます。パスを指定した場合は、サイトの api.server と結合されます。
プレイグラウンドとサンプル
仕様内のオペレーションのパラメーターと同じように、ページの ParamField は Try it パネルの入力項目になります。path、query、header フィールドはパラメーターになり、body フィールドは JSON ボディを構成します。フィールドの中にネストされたフィールド(その Expandable 内のもの)は、オブジェクトのプロパティになります。type が string[] の場合は配列として扱われ、enum<string> のように JSON の型ではないものは文字列として送信されます。フィールドの default はボディの初期値になり、placeholder はサンプルに表示される例の値になります。
パネルの横には、cURL、JavaScript、Python のリクエストサンプルが表示されます。独自の RequestExample を持つページでは、これらの代わりにその内容が表示されます。
さらに 2 つのフロントマターキーでページを調整できます。
authMethodは、エンドポイントの認証方法を設定します。bearer、basic、key(ヘッダーで送る API キー)、noneのいずれかを指定します。この設定はサイトのapi.authより優先されます。playgroundは、ページに表示する内容を設定します。Try it パネルとサンプルを表示するinteractive(デフォルト)、サンプルのみを表示するsimple、どちらも表示しないnoneのいずれかを指定します。どの場合も、メソッド、パス、例は表示されたままです。
サイトのデフォルト
blume.config.ts の api では、すべてのエンドポイントページに共通する設定を指定します。
export default defineConfig({
api: {
server: "https://api.acme.com/v1",
auth: { method: "key", name: "x-api-key" },
playground: { proxy: true },
},
});
serverは、apiのパスと結合されるベース URL です。authは、ページでauthMethodを設定していない場合に使われるリクエストの認証方法です。methodにはbearer、basic、key、noneのいずれかを指定し、nameには API キーを入れるヘッダーを指定します(デフォルトはx-api-key)。authを指定しない場合、ページは認証情報を送信しません。playgroundには、OpenAPI リファレンスの playground オプションと同じ値を指定できます。falseを指定すると、すべてのページで Try it パネルが非表示になります。proxyを指定すると、パネルからのリクエストが CORS プロキシ経由で送信されます。値には独自のプロキシの URL を指定するか、trueを指定して Blume の組み込みプロキシを使用します。組み込みプロキシを使うにはサーバー出力が必要です。また、組み込みプロキシの転送先は、serverのオリジンと、apiフロントマターに記述された完全な URL のオリジンに限られます。
ページのレイアウト、フィールド、例には他のページと同じコンポーネントが使われています。そのため、ページの Markdown コピーには各フィールドが一覧表示され、検索でも他のページと同じようにインデックスされます。
フロントマターキーとコンポーネントの props は Mintlify のものと同じなので、Mintlify 向けに書かれたページはそのまま動作します。