公開 API
公開済みコンテンツを任意のフロントエンドから取得します。
公開 API は読み取り専用で、ETag によるキャッシュに対応しています。受け付けるメソッドは GET、HEAD、OPTIONS だけで、それ以外は 405 を返します。公開済みのコンテンツだけが返され、下書きは含まれません。
市場とロケール
- 市場コードは vn、ph、id の 3 つです。
- ロケールは vn が vi と en、ph が fil と en、id が id と en です。
- ページの取得で locale を省略するか無効な値を指定すると、市場の既定ロケールが使われます。
ランディングコンテンツ
- GET /api/v1/public/pages/{market}/{pageKey}?locale=:構造化ページフィールドを { fields } で返します。
- GET /api/v1/public/translations/{market}/{locale}:UI 翻訳を { messages } で返します。
- GET /api/v1/public/enablement/{market}:その市場で公開中のページとサービスを返します。
ts
const res = await fetch(
"https://tixigen.com/api/v1/public/pages/vn/home?locale=en",
{ next: { revalidate: 60 } }
);
const { fields } = await res.json();
fields["home.hero.headline"];記事
- GET /api/v1/page-articles/{pageKey}:記事一覧
- GET /api/v1/page-articles/{pageKey}/{slug}:記事詳細
- GET /api/v1/page-articles/{pageKey}/search:キーワード検索
- GET /api/v1/page-articles/{pageKey}/trending:人気の記事
- GET /api/v1/page-articles/{pageKey}/categories、/tags、/authors:カテゴリ、タグ、著者
pageKey は、admin が作成した Headless ページのキーです。一覧は page(既定 1)、limit(既定 12、最大 50)、category、tag、author、q、sort(latest、oldest、updated、sort_order)で絞り込めます。レスポンスは { items, pagination } の形です。
bash
curl "https://tixigen.com/api/v1/page-articles/$PAGE_KEY?limit=6&sort=latest" \
-H "x-api-key: $API_KEY"
# {
# "items": [ { "slug": "...", "title": "...", "publishedAt": "..." } ],
# "pagination": { "page": 1, "limit": 6, "total": 42, "totalPages": 7 }
# }Headless ページに公開 API キーが設定されている場合は、x-api-key ヘッダーまたは Authorization: Bearer でキーを送る必要があります。キーがないと 401(invalid_api_key)になります。
キャッシュと条件付きリクエスト
- JSON のレスポンスには ETag が付きます。If-None-Match で送ると、変更がなければ 304 が返ります。
- Cache-Control は、一覧が s-maxage=60、詳細とページが s-maxage=300、フィードが s-maxage=600 で、いずれも stale-while-revalidate 付きです。
- 公開直後は、キャッシュの更新が終わるまで古い内容が返ることがあります。
エラー
json
{
"error": {
"code": "invalid_market",
"message": "Unknown market \"xx\""
}
}- 400:invalid_market、invalid_page、invalid_locale、invalid_query
- 401:invalid_api_key
- 404:not_found
- 405:method_not_allowed(Allow: GET, HEAD, OPTIONS)
- 500:internal_error
API はサーバー側から呼び出すことをおすすめします。ブラウザからの呼び出しは許可されたオリジンからのみ可能で、API キーを公開せずに済みます。