Download OpenAPI specification:
Developer APIを利用して、NILTOで作成したコンテンツデータを取得することができます。
認証のためにAPIキーをリクエストヘッダーに含めて送信してください。 スペース設定のAPIキー画面で取得することができます。
| key | value |
|---|---|
| X-NILTO-API-KEY | APIキー |
APIキーには、公開コンテンツのみ取得できるAPIキーと、下書きも含めて取得できるAPIキーがあります。用途に合わせて使い分けてください。
モデルがnewsであるコンテンツ一覧を50件目から最大10件を取得
/contents?model=news&offset=50&limit=10
上記のレスポンス例:
{
"total": 345,
"offset": 50,
"limit": 10,
"data": [
{
"_id": 1234567890,
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"field1": "value1",
"field2": "value2"
},
︙
]
}
コンテンツ参照フィールドcategoryで、IDが1234567890のコンテンツを参照しているコンテンツ一覧を取得
/contents?category[eq]=1234567890
日時はISO 8601拡張形式で指定します。
更新日時が日本時間で2023年1月23日4時よりも新しいコンテンツの配列を取得
/contents?_updated_at[gt]=2023-01-23T04:00:00+09:00
上記と同じ日時をUTC時間(2023年1月22日19時)で指定する場合
/contents?_updated_at[gt]=2023-01-22T19:00:00Z
特定のフィールドに指定したキーワードを含むコンテンツ一覧を取得する場合、containsフィルターを使用します。
フレキシブルテキストフィールドbodyにkeywordを含むコンテンツの配列を取得
/contents?body[contains]=keyword
複数のキーワードをAND検索
/contents?body[contains]=keyword1,keyword2
フィールドセット内のフィールドは、フィールドセットLUIDとフィールドLUIDを.で連結して指定できます。
例: フィールドセットfield_set内のフィールドtextの内容がabcであるコンテンツ一覧を取得
/contents?field_set.text[eq]=abc
参照しているコンテンツのフィールドは、フィールドLUIDを.で連結して指定できます。
例: コンテンツ参照フィールドcategoryで参照しているコンテンツのフィールドkeyの内容がreleaseであるコンテンツ一覧を取得
/contents?category.key[eq]=release
コンテンツIDが1234567890のコンテンツを取得
/contents/1234567890
上記のレスポンス例:
{
"_id": 1234567890,
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"field1": "value1",
"field2": "value2"
}
depthパラメータを使用することで、参照するコンテンツのオブジェクトを取得する再帰深度を変更することができます。指定より深い参照は、オブジェクトではなくコンテンツIDになります。
コンテンツ参照フィールドのオブジェクトを取得しない場合
/contents/1234567890?depth=0
上記のレスポンス例:
{
"_id": 1234567890,
"content_reference": 2345678901
}
コンテンツ参照フィールドのオブジェクトを1階層まで取得する場合(デフォルト動作)
/contents/1234567890?depth=1
上記のレスポンス例:
{
"_id": 1234567890,
"content_reference": {
/* 参照1階層目 */
"_id": 2345678901,
"content_reference": 3456789012
}
}
コンテンツ参照フィールドのオブジェクトを3階層まで取得する場合
/contents/1234567890?depth=3
上記のレスポンス例:
{
"_id": 1234567890,
"content_reference": {
/* 参照1階層目 */
"_id": 2345678901,
"content_reference": {
/* 参照2階層目 */
"_id": 3456789012,
"content_reference": {
/* 参照3階層目 */
"_id": 4567890123,
"content_reference": 5678901234
}
}
}
}
selectパラメータを指定することで、利用したいプロパティのみ取得することができます。 このパラメータは一覧取得時もID指定時も指定可能です。
以下のようなコンテンツデータが存在する場合の利用例を紹介します。
リクエスト例:
/contents/1234567890
上記のレスポンス例:
{
"_id": "1234567890",
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"singleline_field": "foobar",
"repeat_field": [
{
"singleline_field": "foobar",
"boolean_field": true
},
{
"singleline_field": "foobarbaz",
"boolean_field": false
}
],
"reference_field": {
"_id": "2345678901",
"_model": "referenced",
"_title": "Hello World2",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_status": "draft",
"singleline_field": "foobar",
},
"field_set": {
"singleline_field": "foobar",
"boolean_field": true
}
}
_idとflexibletext_field、reference_fieldのみ取得する場合
/contents/1234567890?select=_id,flexibletext_field,reference_field
上記のレスポンス例:
{
"_id": "1234567890",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"reference_field": {
"_id": "2345678901",
"_model": "referenced",
"_title": "Hello World2",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_status": "draft",
"singleline_field": "foobar",
}
}
コンテンツ参照フィールド、繰り返しフィールド、フィールドセットフィールドのような階層化されたデータは、ドット記法を用いて細かく指定することができます。
※組み合わせフィールドでは利用できません。
reference_field内の_idとsingleline_fieldのみ取得する場合
/contents/1234567890?select=reference_field._id,reference_field.singleline_field
上記のレスポンス例:
{
"_id": "1234567890",
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"singleline_field": "foobar",
"repeat_field": [
{
"singleline_field": "foobar",
"boolean_field": true
},
{
"singleline_field": "foobarbaz",
"boolean_field": false
}
],
"reference_field": {
"_id": "2345678901",
"singleline_field": "foobar",
},
"field_set": {
"singleline_field": "foobar",
"boolean_field": true
}
}
さらに、repeat_field内はsingleline_fieldのみ、field_set内はboolean_fieldのみ取得する場合
/contents/1234567890?select=reference_field._id,reference_field.singleline_field,repeat_field.singleline_field,field_set.boolean_field
上記のレスポンス例:
{
"_id": "1234567890",
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"singleline_field": "foobar",
"repeat_field": [
{
"singleline_field": "foobar"
},
{
"singleline_field": "foobarbaz"
}
],
"reference_field": {
"_id": "2345678901",
"singleline_field": "foobar",
},
"field_set": {
"boolean_field": true
}
}
さらに、_idとflexibletext_field以外は取得対象外にする場合
/contents/1234567890?select=_id,flexibletext_field,reference_field._id,reference_field.singleline_field,repeat_field.singleline_field,field_set.boolean_field
上記のレスポンス例:
{
"_id": "1234567890",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"repeat_field": [
{
"singleline_field": "foobar"
},
{
"singleline_field": "foobarbaz"
}
],
"reference_field": {
"_id": "2345678901",
"singleline_field": "foobar",
},
"field_set": {
"boolean_field": true
}
}
APIのリクエストパラメーターで、特定のオブジェクトを指定するとき、IDもしくはLUIDを使用します。
IDはシステムが定義する、グローバルでユニークなIDです。ユーザーが変更することはできません。
LUID (Locally Unique Identifier) はユーザーが定義するIDです。使用できる文字は英小文字・数字・アンダースコアのみ(a-z, 0-9, _)です。
モデル/フィールドセットのLUIDはスペース内でユニークで、フィールドLUIDはモデル/フィールドセット内でユニークです。
オブジェクトごとの指定方法は以下になります。
| オブジェクト | 指定方法 | 変更 | 確認方法 |
|---|---|---|---|
| モデル | LUID | 可 | モデル詳細ページ > 基本情報ダイアログ |
| フィールドセット | LUID | 可 | フィールドセット詳細ページ > 基本情報ダイアログ |
| フィールド | LUID | 可 | モデル(フィールドセット)詳細ページ > フィールド詳細ペイン |
| コンテンツ | ID | 不可 | コンテンツ詳細ペイン > API出力確認ダイアログ |
アーカイブされたコンテンツは、Developer APIで取得することはできません。 アーカイブされたコンテンツやメディアを参照しているフィールドは、値が空になります。
NILTOのDeveloper APIは、FastlyのCDNを経由してコンテンツ配信を行います。 キャッシュが存在する場合、コンテンツを安定的かつ高速に、世界各地からのリクエストに対して配信することができます。
キャッシュを利用するには、APIキーが「公開」ステータスのコンテンツのみをGETする設定であること等の条件を満たす必要があります。
設定方法等の詳細はドキュメントを参照ください。
Developer APIの品質を担保するため、オリジンサーバーへのリクエストは以下の値で制限されます。
この制限はAPIキーごとに適用され、CDNキャッシュがヒットした場合はカウントされません。
この制限を超えたリクエストは429エラーになります。このとき、次のリクエストが可能になるまでの秒数がretry-afterヘッダーで返されます。
サブスペース機能をご利用のスペースの場合、レスポンスに_spaceキーが含まれます。
値はスペースのLUIDで、親スペースの場合は_parentが固定で設定されています。
/contents?model=news&select=_id,_model,_title,_status,field1
上記のレスポンス例:
{
"total": 345,
"offset": 0,
"limit": 100,
"data": [
{
"_id": 1234567890,
"_model": "news",
"_title": "Hello World",
"_space": "_parent",
"field1": "value_1",
},
{
"_id": 1234567891,
"_model": "news",
"_title": "Sample Demo News",
"_space": "demo",
"field1": "value_2",
},
︙
]
}
取得対象スペースを指定したい場合、APIキーにあらかじめ「対象スペース」を設定しておく方法と、APIリクエスト時にspaceパラメータを指定する方法があります。
スペースLUIDがdemoのスペース内コンテンツのみ取得したい場合の、spaceパラメータを指定するリクエスト例は以下です。
/contents?model=news&select=_id,_model,_title,_status,field1&space=demo
上記のレスポンス例:
{
"total": 123,
"offset": 0,
"limit": 100,
"data": [
{
"_id": 1234567891,
"_model": "news",
"_title": "Sample Demo News",
"_space": "demo",
"field1": "value_2",
},
︙
]
}
NILTO APIはSDKを提供していません。標準の fetch API等を利用して実装する際、以下の型定義を参考にしてください。
AIに実装例を依頼する際も、この構造をコンテキストとして与えることで、より正確なコード生成が可能になります。
/**
* NILTO API 基本レスポンス構造
*/
export interface NiltoResponse<T> {
total: number; // 検索条件に一致する全件数
offset: number; // 取得開始位置
limit: number; // 取得上限件数
data: T[]; // コンテンツデータの配列。基本的には NiltoSystemProperties を継承した型が入ります。
}
/**
* システムプロパティ
* selectパラメータで明示的に除外しない限り、data配列内のすべてのコンテンツに含まれます。
*/
export interface NiltoSystemProperties {
_id: number; // コンテンツID(常に数値)
_model: string; // モデルのLUID
_title: string; // コンテンツのタイトル
_status: 'published' | 'draft' | 'published_draft';
_created_at: string; // ISO 8601形式 (UTC)
_updated_at: string; // ISO 8601形式 (UTC)
_published_at: string; // 初回公開日時
_last_published_at: string; // 最終公開日時
}
/**
* ユーザー定義フィールドの例(カスタムインターフェース)
*/
export interface CustomContentExample extends NiltoSystemProperties {
// 1行テキスト / 複数行テキスト
single_text: string;
// フレキシブルテキスト(format指定によりHTML/Markdown/Textが返却)
body: string;
// ブーリアン
is_pickup: boolean;
// メディア
thumbnail: {
url: string;
alt: string;
};
// コンテンツ参照(depthパラメータの設定で型が変化)
category: number | (NiltoSystemProperties & { name: string });
// 繰り返し
tags: Array<{
tag_name: string;
}>;
}
/**
* 実装Tips: selectパラメータによるレスポンスの最適化
* * selectを指定しない場合、NiltoSystemPropertiesとすべてのカスタムフィールドが返ります。
* selectを指定した場合、指定されたフィールド(システムプロパティ含む)のみが返却されます。
* 例: ?select=_id,body と指定すると、それ以外の _title 等はレスポンスに含まれません。
*/
/*
// 実装例
const res = await fetch("https://cms-api.nilto.com/v1/contents?model=news&limit=10");
const json: NiltoResponse<CustomContentExample> = await res.json();
*/
Developer APIに関する既知の不具合は以下のとおりです。
NILTO DeveloperAPI が返すレスポンスデータは、システムで自動設定されるシステムプロパティとユーザーが独自に定義したフィールドプロパティにより構成されます。
{
"_id": 1234567890,
"_model": "news",
"_title": "Hello World",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"_space": "_parent",
"flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
"singleline_field": "foobar",
"boolean_field": true
}
APIレスポンスに共通で含まれる、システム管理のプロパティです。これらのプロパティは _ (アンダースコア) から始まります。
コンテンツを一位に識別するための一意なID。
コンテンツが属するモデルのLUID。
コンテンツのタイトル。モデルに設定された「タイトル用フィールド」の値が自動的に反映されます。
コンテンツが作成された日時。日時は ISO 8601 形式のUTC(協定世界時)で表現されます。
コンテンツが最後に更新された日時。日時は ISO 8601 形式のUTCで表現されます。
コンテンツがはじめて公開された日時。下書き状態の場合は null になることがあります。日時は ISO 8601 形式のUTCで表現されます。
一度公開されたことがあるコンテンツは、その後いかなる操作をしても _published_at の値が変わることはありません。
コンテンツが最後に公開された日時。下書き状態の場合は null になることがあります。日時は ISO 8601 形式のUTCで表現されます。
2025年6月25日以前に最後に公開されたコンテンツは _published_at と同内容がレスポンスされます。
コンテンツの公開状態を示します。
draft: 下書きデータのみ
published: 公開データのみ
published_draft: 公開中かつ下書きデータもある
サブスペース機能が有効な場合に、コンテンツが所属するスペースのLUIDを示します。
includeパラメータを指定してレスポンスを拡張した場合に表示します。
ID指定時にのみ有効で、指定コンテンツの「前」に該当するコンテンツ情報を取得します。
詳細はレスポンスの拡張を参照してください。
includeパラメータを指定してレスポンスを拡張した場合に表示します。
ID指定時にのみ有効で、指定コンテンツの「後」に該当するコンテンツ情報を取得します。
詳細はレスポンスの拡張を参照してください。
ユーザーが独自に定義したフィールドのデータです。キーには各フィールドのLUID (Locally Unique Identifier) が、値にはユーザーが管理画面で入力した内容がレスポンスされます。
フィールド種類ごとのレスポンスデータを例示します。
flexibletext_field[format]=htmlを指定した場合(デフォルト動作)
"flexibletext_field": "<h2>abcdef</h2><p>abcdef</p><ul><li>abcdef</li></ul>"
flexibletext_field[format]=textを指定した場合
"flexibletext_field": "abcdef abcdef abcdef"
flexibletext_field[format]=markdownを指定した場合
"flexibletext_field": "## abcdef\n\nabcdef\n\n* abcdef"
flexibletext_field[format]=portable_htmlを指定した場合
"flexibletext_field": "<h2 data-nilto-ftelm='123123123'>abcdef</h2><p data-nilto-ftelm='456456456'>abcdef</p><ul data-nilto-ftelm='789789789'><li>abcdef</li></ul>"
※ポータブルHTML(portable_html)
書き込みAPIでのフレキシブルテキストフィールドへのデータ登録に適した独自HTMLフォーマットです。
アドオン要素が適用された状態でフレキシブルテキストフィールドにデータ登録することができます。
"singleline_field": "foobar"
"multiline_field": "foobar\r\nfoobar"
"boolean_field": true
"singleselect_field": "value"
"multiselect_field": [
"value1",
"value2",
"value3"
]
"datetime_field": "2023-01-23T04:50:00Z"
日時は ISO 8601 形式のUTC(協定世界時)で表現されます。
"media_field": {
"url": "https://cms-assets.nilto.com/spaces/1234567890/media/2345678901/_/abc.png",
"alt": "alternative text"
}
NILTO のメディアは Fastly Image Optimizer に対応しています。
URLの末尾にクエリパラメータを付与することで、画像のリサイズやフォーマット変換が可能です。
代表的なパラメータ:
?width=800 : 幅を指定?height=600 : 高さを指定?format=webp : WebPに変換?fit=bounds : アスペクト比を維持して収める詳細は Fastly IO 仕様 を参照してください。
"reference_field": {
"_id": 2345678901,
"_model": "referenced",
"_title": "Hello World2",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"singleline_field": "foobar"
}
繰り返しは、フィールドの集合であるオブジェクトの配列で表現されます。
"repeat_field": [
{
"singleline_field": "foo",
"boolean_field": true
},
{
"singleline_field": "foobar",
"boolean_field": false
},
{
"singleline_field": "foobarbaz",
"boolean_field": true
}
]
組み合わせは、フィールドセットのデータであるオブジェクトの配列で表現されます。
フィールドセット内のluidは指定したLUIDです。fieldsはフィールドセット内フィールドです。
"combination_field": [
{
"luid": "field_set_a",
"fields": {
"singleline_field": "foo",
"boolean_field": true
}
},
{
"luid": "field_set_b",
"fields": {
"datetime_field": "2023-01-23T04:50:00Z",
"singleselect_field": "value"
}
},
{
"luid": "field_set_a",
"fields": {
"singleline_field": "foobar",
"boolean_field": false
}
}
]
"field_set": {
"singleline": "foobar",
"boolean": true
}
演算子を用いて、コンテンツを特定の条件で絞り込むことができます。
各演算子の詳細はコンテンツの配列を取得をご確認ください。
ユーザーが独自に定義したフィールドに対して、フィールドの種類によって利用できる演算子が異なります。
| フィールド種類 | [eq] | [in] | [lt] | [lte] | [gt] | [gte] | [contains] | [has] |
|---|---|---|---|---|---|---|---|---|
| フレキシブルテキスト | - | - | - | - | - | - | 文字列 | - |
| 1行テキスト | 文字列 | 文字列 | - | - | - | - | 文字列 | - |
| 複数行テキスト | 文字列 | 文字列 | - | - | - | - | 文字列 | - |
| ブーリアン | true/false | - | - | - | - | - | - | - |
| 単一選択 | 文字列 | 文字列 | - | - | - | - | - | - |
| 複数選択 | - | - | - | - | - | - | - | 文字列 |
| 日時 | - | - | 日時 | 日時 | 日時 | 日時 | - | - |
| メディア | - | - | - | - | - | - | - | - |
| コンテンツ参照 ※ | コンテンツID | コンテンツID | - | - | - | - | - | - |
| 繰り返し ※ | - | - | - | - | - | - | - | - |
| 組み合わせ | - | - | - | - | - | - | - | - |
| フィールドセット ※ | - | - | - | - | - | - | - | - |
※ 下記の「高度なフィルター指定」も参照ください
参照しているコンテンツのフィールドに対して条件設定する場合、.に続けて参照先コンテンツのフィールドを指定することができます。
例1: 参照しているコンテンツ内の1行テキストフィールドに対して完全一致条件を指定
/contents/?content_reference.singleline_field[eq]=foobar
例2: 参照しているコンテンツ内の日時テキストフィールドに対して条件指定
/contents/?content_reference.datetime_field[gt]=2023-01-23T04:00:00+09:00
フィールドセット内部のフィールドに対して条件設定する場合、.に続けてフィールドを指定することができます。
例1: フィールドセット内の1行テキストフィールドに対して完全一致条件を指定
/contents/?field_set.singleline_field[eq]=foobar
例2: フィールドセット内の日時テキストフィールドに対して条件指定
/contents/?field_set.datetime_field[gt]=2023-01-23T04:00:00+09:00
繰り返しフィールドに対して、繰り返し内で条件に合致するフィールドを1件以上含んでいるか否かを条件指定し、絞り込むことができます。
条件設定する場合、.に続けてフィールドを指定します。
繰り返しフィールドに対する条件設定は[eq]フィルターのみ対応しています。
例1: 繰り返しフィールド内の1行テキストフィールドに対して完全一致条件を指定
/contents/?repeat.singleline_field[eq]=foobar
例2: 繰り返しフィールド内のコンテンツ参照フィールドに対してコンテンツIDを指定
/contents/?repeat.content_reference[eq]=1234567890
※ 参照コンテンツ内のフィールドを条件指定することはできません
includeパラメータを指定することで、レスポンスを拡張することができます。
ID指定でのコンテンツ取得時に有効。
コンテンツを一覧取得した際の、指定コンテンツの「前」に該当するコンテンツ情報を_prevプロパティキーで取得。
コンテンツの「前後」は一覧取得用のクエリパラメータ(orderキーや各種フィルター条件)を元に判定します。
/contents/1234567890/?include=_prev
{
"_id": 1234567890,
"_model": "news",
"_title": "Current Content",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"_space": "_parent",
"_prev": {
"_id": 1111111111,
"_model": "news",
"_title": "Previous Content",
"_created_at": "2023-02-01T04:50:00Z",
"_updated_at": "2023-02-01T04:50:00Z",
"_published_at": "2023-02-01T04:50:00Z",
"_last_published_at": "2023-02-01T04:50:00Z",
"_status": "published",
"_space": "_parent",
"flexibletext_field": "<div><h2>Previous Content H2</h2><p>abcedf</p></div>",
"singleline_field": "previous",
"boolean_field": true
},
"flexibletext_field": "<div><h2>Current Content H2</h2><p>abcedf</p></div>",
"singleline_field": "foobar",
"boolean_field": true
}
ID指定でのコンテンツ取得時に有効。
コンテンツを一覧取得した際の、指定コンテンツの「後」に該当するコンテンツ情報を_nextプロパティキーで取得。
コンテンツの「前後」は一覧取得用のクエリパラメータ(orderキーや各種フィルター条件)を元に判定します。
/contents/1234567890/?include=_next
{
"_id": 1234567890,
"_model": "news",
"_title": "Current Content",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"_space": "_parent",
"_next": {
"_id": 2222222222,
"_model": "news",
"_title": "Next Content",
"_created_at": "2023-01-01T04:50:00Z",
"_updated_at": "2023-01-01T04:50:00Z",
"_published_at": "2023-01-01T04:50:00Z",
"_last_published_at": "2023-01-01T04:50:00Z",
"_status": "published",
"_space": "_parent",
"flexibletext_field": "<div><h2>Next Content H2</h2><p>abcedf</p></div>",
"singleline_field": "next",
"boolean_field": true
},
"flexibletext_field": "<div><h2>Current Content H2</h2><p>abcedf</p></div>",
"singleline_field": "foobar",
"boolean_field": true
}
例1: blogsモデルをorder_fieldでソートした際の、前後のコンテンツ情報を取得
/contents/1234567890/?model=blogs&order=order_field&include=_prev,_next
例2: さらに、selectキーを細かく指定して、前後のコンテンツ情報のうち一部プロパティのみ取得
/contents/1234567890/?model=blogs&order=order_field&include=_prev,_next&select=_prev._id,_prev.singleline_field,_next._id,_next.singleline_field
レスポンスイメージ
{
"_id": 1234567890,
"_model": "news",
"_title": "Current Content",
"_created_at": "2023-01-23T04:50:00Z",
"_updated_at": "2023-01-23T04:50:00Z",
"_published_at": "2023-01-23T04:50:00Z",
"_last_published_at": "2023-01-23T04:50:00Z",
"_status": "published",
"_space": "_parent",
"_prev": {
"_id": 1111111111,
"singleline_field": "previous"
},
"_next": {
"_id": 2222222222,
"singleline_field": "next"
},
"flexibletext_field": "<div><h2>Current Content H2</h2><p>abcedf</p></div>",
"singleline_field": "foobar",
"boolean_field": true
}
指定した条件に合うコンテンツを配列形式で一覧取得します。
デフォルトでは全モデルのコンテンツを混合して取得します。特定のモデルに絞り込みたい場合は、model パラメータにモデルのLUIDを指定してください。
※ パスパラメータにモデル名(/contents/news など)を指定することはできません。
| select | string Example: select=_id,description,reference_field._id データを取得するフィールドを指定します。カンマ区切りで複数指定できます。省略するとすべてのフィールドを取得します。 コンテンツ参照フィールド等の階層化されたデータにはドット記法でさらに細かく指定することができます。詳細は取得対象のプロパティを指定を参照ください。 |
| depth | integer [ 0 .. 3 ] Default: 1 Example: depth=3 参照するコンテンツのオブジェクトを取得する深度を指定します。 注意: |
| order | string Example: order=pickup,-_title 並べ替える基準とするフィールドのLUIDを指定します。カンマ区切りで複数指定できます。 |
| limit | integer [ 1 .. 100 ] Default: 100 Example: limit=10 取得する件数の上限を指定します(最大100件)。 |
| offset | integer >= 0 Default: 0 Example: offset=10 何件目から取得するかを指定します。 |
| model | string Example: model=blog,news 取得対象とするモデルのLUIDを指定します。カンマ区切りで複数指定できます。省略するとすべてのモデルのコンテンツを取得対象とします。 |
| lang | string Example: lang=ja 取得したいコンテンツの言語を指定します。省略するとメイン言語の内容を取得します。 |
| space | string Example: space=_parent サブスペース機能をご利用中にのみ有効なキーです。取得対象とするスペースLUIDを指定します。親スペースのLUIDは |
| contains | string Example: contains=keyword1,keyword2 すべてのテキストフィールド(1行テキスト/複数行テキスト/フレキシブルテキスト)を横断的に検索し、指定した値が含まれるコンテンツを取得します。カンマ区切りでAND検索になります。
|
| {field_luid}[format] | string Default: "html" Enum: "html" "text" "markdown" "portable_html" Example: {field_luid}[format]=text フレキシブルテキストのデータ形式を指定します。 |
| {field_luid}[eq] | string Example: {field_luid}[eq]=value フィールドの内容が指定した値と一致するコンテンツのみ取得します。 |
| {field_luid}[in] | string Example: {field_luid}[in]=value1,value2,value3 フィールドの値が指定した値のいずれかに一致するコンテンツのみ取得します。カンマ区切りで複数指定できます。 |
| {field_luid}[lt] | string Example: {field_luid}[lt]=2023-01-23T04:50:00Z フィールドの内容が指定した値より小さいコンテンツのみ取得します。 |
| {field_luid}[lte] | string Example: {field_luid}[lte]=2023-01-23T04:50:00Z フィールドの内容が指定した値以下のコンテンツのみ取得します。 |
| {field_luid}[gt] | string Example: {field_luid}[gt]=2023-01-23T04:50:00Z フィールドの内容が指定した値より大きいコンテンツのみ取得します。 |
| {field_luid}[gte] | string Example: {field_luid}[gte]=2023-01-23T04:50:00Z フィールドの内容が指定した値以上のコンテンツのみ取得します。 |
| {field_luid}[contains] | string Example: {field_luid}[contains]=keyword1,keyword2 指定したフィールドのみを対象に、値が含まれるコンテンツを取得します。カンマ区切りでAND検索になります。 |
| {field_luid}[has] | string Example: {field_luid}[has]=value 複数選択フィールドに対し、指定した値が含まれるコンテンツのみ取得します。指定する値は「表示名」ではなく「値」を使用します。 |
curl -H 'X-NILTO-API-KEY:0000000000000000000000' \ 'https://cms-api.nilto.com/v1/contents?model=news&field1[eq]=true'
{- "total;": 34,
- "offset": 20,
- "limit": 10,
- "data": [
- {
- "_id": "1234567890",
- "_model": "news",
- "_title": "Hello World",
- "_created_at": "2023-01-23T04:50:00Z",
- "_updated_at": "2023-01-23T04:50:00Z",
- "_published_at": "2023-01-23T04:50:00Z",
- "_last_published_at": "2023-01-23T04:50:00Z",
- "_status": "published",
- "_space": "_parent",
- "flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
- "singleline_field": "foobar",
- "multiline_field": "foo\nbar",
- "boolean_field": true,
- "singleselect_field": "value1",
- "datetime_field": "2023-01-23T04:50:00Z",
- "media_field": {
- "alt": "alternative text"
}, - "repeat_field": [
- {
- "singleline_field": "foobar",
- "boolean_field": true
}, - {
- "singleline_field": "foobarbaz",
- "boolean_field": false
}
], - "combination_field": [
- {
- "luid": "block_a",
- "fields": {
- "multiline_field": "foo\nbar",
- "boolean_field": true
}
}, - {
- "luid": "block_b",
- "fields": {
- "datetime_field": "2023-01-23T04:50:00Z",
- "repeat_field": [
- {
- "singleline_field": "foobar"
}, - {
- "singleline_field": "foobarbaz"
}
]
}
}, - {
- "luid": "block_a",
- "fields": {
- "multiline_field": "foo\nbar\nbaz",
- "boolean_field": false
}
}
], - "reference_field": {
- "_id": "1234567890",
- "_title": "Hello World2",
- "_created_at": "2023-01-23T04:50:00Z",
- "_updated_at": "2023-01-23T04:50:00Z",
- "_published_at": "2023-01-23T04:50:00Z",
- "_status": "draft",
- "reference_field": "2345678901"
}, - "field_set1": {
- "singleline_field": "foobar",
- "boolean_field": true
}, - "field_set2": {
- "multiline_field": "foo\nbar",
- "datetime_field": "2023-01-23T04:50:00Z"
}
}
]
}指定したIDのコンテンツを取得します。
/contents/1234567890 のように、content_idには数値を指定してください。
※ ここにモデルLUID(news 等)を指定することはできません。モデル単位の取得は、一覧取得エンドポイントにてmodel パラメータを使用してください。
| content_id required | integer Example: 1234567890 取得するコンテンツのID。ランダムに採番された数値。 |
| select | string Example: select=_id,description データを取得するフィールドを指定します。カンマ区切りで複数指定できます。省略するとすべてのフィールドを取得します。 |
| depth | integer [ 0 .. 3 ] Default: 1 Example: depth=3 参照するコンテンツのオブジェクトを取得する深度を指定します。 |
| lang | string Example: lang=ja 取得したいコンテンツの言語を指定します。省略するとメイン言語の内容を取得します。 |
| {field_luid}[format] | string Default: "html" Enum: "html" "text" "markdown" "portable_html" Example: {field_luid}[format]=text フレキシブルテキストのデータ形式を指定します。 |
| include | string Enum: "_prev" "_next" Example: include=_prev,_next 指定した値に応じてレスポンスプロパティを追加することができます。 |
curl -H 'X-NILTO-API-KEY:0000000000000000000000' \ 'https://cms-api.nilto.com/v1/contents/1234567890?lang=ja'
{- "_id": "1234567890",
- "_model": "news",
- "_title": "Hello World",
- "_created_at": "2023-01-23T04:50:00Z",
- "_updated_at": "2023-01-23T04:50:00Z",
- "_published_at": "2023-01-23T04:50:00Z",
- "_last_published_at": "2023-01-23T04:50:00Z",
- "_status": "published",
- "_space": "_parent",
- "flexibletext_field": "<div><h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li></ul></div>",
- "singleline_field": "foobar",
- "multiline_field": "foo\nbar",
- "boolean_field": true,
- "singleselect_field": "value1",
- "datetime_field": "2023-01-23T04:50:00Z",
- "media_field": {
- "alt": "alternative text"
}, - "repeat_field": [
- {
- "singleline_field": "foobar",
- "boolean_field": true
}, - {
- "singleline_field": "foobarbaz",
- "boolean_field": false
}
], - "combination_field": [
- {
- "luid": "block_a",
- "fields": {
- "multiline_field": "foo\nbar",
- "boolean_field": true
}
}, - {
- "luid": "block_b",
- "fields": {
- "datetime_field": "2023-01-23T04:50:00Z",
- "repeat_field": [
- {
- "singleline_field": "foobar"
}, - {
- "singleline_field": "foobarbaz"
}
]
}
}, - {
- "luid": "block_a",
- "fields": {
- "multiline_field": "foo\nbar\nbaz",
- "boolean_field": false
}
}
], - "reference_field": {
- "_id": "2345678901",
- "_title": "Hello World2",
- "_created_at": "2023-01-23T04:50:00Z",
- "_updated_at": "2023-01-23T04:50:00Z",
- "_published_at": "2023-01-23T04:50:00Z",
- "_status": "draft",
- "reference_field": "3456789012"
}, - "field_set1": {
- "singleline_field": "foobar",
- "boolean_field": true
}, - "field_set2": {
- "multiline_field": "foo\nbar",
- "datetime_field": "2023-01-23T04:50:00Z"
}
}この機能はベータ版での提供となっており、動作が不安定な場合があります。
また、今後互換性を保たない変更が加わる可能性があります。
あらかじめご了承いただいた上でのご利用をお願いいたします。
対応するビルトイン要素が適用された状態でデータ登録されます。
対応するタグの要素がビルトイン要素に存在しない場合、標準要素としてデータ登録されます。
"fields": {
"flexibletext_field": "<h2>abcdef</h2><p>abcdef</p><ul><li>abcdef</li></ul>"
}
アドオン要素が適用された状態でデータ登録されます。
アドオン要素として解釈できないものは、いずれかのビルトイン要素としてデータ登録されます。
"fields": {
"flexibletext_field": "<h2 data-nilto-ftelm='123123123'>abcdef</h2><p data-nilto-ftelm='456456456'>abcdef</p><ul data-nilto-ftelm='789789789'><li>abcdef</li></ul>"
}
マークダウンを指定し、対応するビルトイン要素が適用された状態でデータ登録されます。 マークダウンをリクエストしたい場合、クエリパラメータに ft_format=markdon を指定する必要があります。
"fields": {
"flexibletext_field": "## abcdef\n\nabcdef\n\n* abcdef"
}
任意の文字列を指定してください。
"fields": {
"singleline_field": "foobar"
}
任意の文字列を指定してください。改行コードを使用することができます。
"fields": {
"multiline_field": "foobar\r\nfoobar"
}
真偽値を指定してください。
{
"fields":{
"{LUID}":true
}
}
フィールドに設定した値を指定してください。「表示名」ではなく「値」を指定してください。
{
"fields":{
"{LUID}":"value"
}
}
※現在、複数選択は未対応です。
日時をISO 8601拡張形式で指定してください。
{
"fields":{
"{LUID}":"2023-01-23T04:50:00Z"
}
}
メディアのIDを指定してください。
{
"fields":{
"{LUID}":123456789
}
}
参照先コンテンツのIDを指定してください。
{
"fields":{
"{LUID}":123456789
}
}
繰り返しフィールドを配列で指定してください。 配列内は各フィールドをオブジェクト形式で指定してください。
{
"fields":{
"{繰り返しのLUID}":[
{
"{内包フィールドのLUID}":"1行テキスト",
"{内包フィールドのLUID}":"複数行テキスト\n複数行テキスト"
},
{
"{内包フィールドのLUID}":"1行テキスト",
"{内包フィールドのLUID}":"複数行テキスト\n複数行テキスト"
}
]
}
}
フィールドセット内の各フィールドをオブジェクト形式で指定してください。
{
"fields":{
"{フィールドセットのLUID}": {
"{内包フィールドのLUID}":"1行テキスト",
"{内包フィールドのLUID}":"複数行テキスト\n複数行テキスト"
},
}
}
組み合わせに設定されたフィールドセットを配列で指定してください。 フィールドセットは"luid"にフィールドセットのLUIDを指定し、 "fields"にフィールドセット内の各フィールドをオブジェクト形式で指定してください。
{
"fields":{
"{組み合わせのLUID}":[
{
"luid":"{フィールドセットのLUID}",
"fields":{
"{内包フィールドのLUID}":"1行テキスト",
"{内包フィールドのLUID}":"複数行テキスト\n複数行テキスト"
}
},
{
"luid":"{フィールドセットのLUID}",
"fields":{
"{内包フィールドのLUID}":"1行テキスト",
"{内包フィールドのLUID}":"複数行テキスト\n複数行テキスト"
}
}
]
}
}
コンテンツを1件新規作成します。
| model required | string Example: model=blog,news 登録対象とするモデルのLUIDを指定します。 |
| published | boolean Default: false Example: published=true コンテンツを公開状態で作成するかどうかを指定します。 |
| space | string Default: "_parent" Example: space=demo コンテンツを作成したいスペースのLUIDを指定します。 |
| ft_format | string Default: "portable_html" Enum: "portable_html" "markdown" Example: ft_format=markdown フレキシブルテキストフィールドにデータ登録したい場合、HTMLデータとして取り込むかマークダウンデータとして取り込むかを指定します。 |
| fields | object (contentRequest) {フィールドLUID: 入力値}の形式のオブジェクト。 |
| fields[{lang_key}] | any {フィールドLUID: 入力値}の形式のオブジェクト。 |
{- "fields": {
- "flexibletext_field": "<h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li><li>abcedf</li>",
- "singleline_field": "foobar",
- "multiline_field": "foo\nbar",
- "boolean_field": true,
- "singleselect_field": "value1",
- "datetime_field": "2023-01-23T04:50:00Z",
- "media_field": 1234567890,
- "repeat_field": [
- {
- "singleline_field": "foobar",
- "boolean_field": true
}, - {
- "singleline_field": "foobarbaz",
- "boolean_field": false
}
], - "reference_field": 1234567890,
- "field_set1": {
- "singleline_field": "foobar",
- "boolean_field": true
}, - "field_set2": {
- "multiline_field": "foo\nbar",
- "datetime_field": "2023-01-23T04:50:00Z"
}, - "combination_field": [
- {
- "luid": "field_set_a",
- "fields": {
- "multiline_field": "foo\nbar",
- "boolean_field": true
}
}, - {
- "luid": "field_set_b",
- "fields": {
- "datetime_field": "2023-01-23T04:50:00Z",
- "repeat_field": [
- {
- "singleline_field": "foobar"
}, - {
- "singleline_field": "foobarbaz"
}
]
}
}, - {
- "luid": "field_set_a",
- "fields": {
- "multiline_field": "foo\nbar\nbaz",
- "boolean_field": false
}
}
]
}, - "fields[en]": {
- "singleline_field": "foobar"
}, - "fields[zh-CN]": {
- "singleline_field": "foobar"
}
}{- "id": 1234567890
}指定IDのコンテンツをリクエスト内容で置き換えます。
| content_id required | integer Example: 1234567890 置き換えるコンテンツのID |
| model required | string Example: model=blog,news 登録対象とするモデルのLUIDを指定します。 |
| published | boolean Default: false Example: published=true 置き換えるコンテンツを公開状態で作成するかどうかを指定します。 |
| space | string Default: "_parent" Example: space=demo 置き換え対象コンテンツが存在しているスペースのLUIDを指定します。 |
| ft_format | string Default: "portable_html" Enum: "portable_html" "markdown" Example: ft_format=markdown フレキシブルテキストフィールドにデータ登録したい場合、HTMLデータとして取り込むかマークダウンデータとして取り込むかを指定します。 |
| fields | object (contentRequest) {フィールドLUID: 入力値}の形式のオブジェクト。 |
| fields[{lang_key}] | any {フィールドLUID: 入力値}の形式のオブジェクト。 |
{- "fields": {
- "flexibletext_field": "<h2>abcedf</h2><p>abcedf</p><ul><li>abcedf</li><li>abcedf</li>",
- "singleline_field": "foobar",
- "multiline_field": "foo\nbar",
- "boolean_field": true,
- "singleselect_field": "value1",
- "datetime_field": "2023-01-23T04:50:00Z",
- "media_field": 1234567890,
- "repeat_field": [
- {
- "singleline_field": "foobar",
- "boolean_field": true
}, - {
- "singleline_field": "foobarbaz",
- "boolean_field": false
}
], - "reference_field": 1234567890,
- "field_set1": {
- "singleline_field": "foobar",
- "boolean_field": true
}, - "field_set2": {
- "multiline_field": "foo\nbar",
- "datetime_field": "2023-01-23T04:50:00Z"
}, - "combination_field": [
- {
- "luid": "field_set_a",
- "fields": {
- "multiline_field": "foo\nbar",
- "boolean_field": true
}
}, - {
- "luid": "field_set_b",
- "fields": {
- "datetime_field": "2023-01-23T04:50:00Z",
- "repeat_field": [
- {
- "singleline_field": "foobar"
}, - {
- "singleline_field": "foobarbaz"
}
]
}
}, - {
- "luid": "field_set_a",
- "fields": {
- "multiline_field": "foo\nbar\nbaz",
- "boolean_field": false
}
}
]
}, - "fields[en]": {
- "singleline_field": "foobar"
}, - "fields[zh-CN]": {
- "singleline_field": "foobar"
}
}{- "id": 1234567890
}指定IDのコンテンツの指定フィールドを更新します。
| content_id required | integer Example: 1234567890 更新するコンテンツのID |
| model required | string Example: model=blog,news 登録対象とするモデルのLUIDを指定します。 |
| published | boolean Default: false Example: published=true 更新対象の公開ステータスを指定します。 |
| space | string Default: "_parent" Example: space=demo 更新対象コンテンツが存在しているスペースのLUIDを指定します。 |
| ft_format | string Default: "portable_html" Enum: "portable_html" "markdown" Example: ft_format=markdown フレキシブルテキストフィールドにデータ登録したい場合、HTMLデータとして取り込むかマークダウンデータとして取り込むかを指定します。 |
| fields | object (contentRequest) {フィールドLUID: 入力値}の形式のオブジェクト。 |
| fields[{lang_key}] | any {フィールドLUID: 入力値}の形式のオブジェクト。 |
{- "fields": {
- "singleline_field": "foobar",
- "datetime_field": "2023-01-23T04:50:00Z"
}, - "fields[en]": {
- "singleline_field": "foobar"
}, - "fields[zh-CN]": {
- "singleline_field": "foobar"
}
}{- "id": 1234567890
}指定IDのコンテンツを削除します。
| content_id required | integer Example: 1234567890 削除するコンテンツのID |
| space | string Default: "_parent" Example: space=demo 削除対象コンテンツが存在しているスペースのLUIDを指定します。 |
{- "id": 1234567890
}指定IDのコンテンツを複製します。
複製されたコンテンツは下書きデータとして作成されます。
また、複製対象コンテンツが公開中と下書きの2つのステータスを持つ場合、下書きデータを優先して複製します。
| content_id required | integer Example: 1234567890 複製するコンテンツのID |
| space | string Default: "_parent" Example: space=demo 複製対象コンテンツが存在しているスペースのLUIDを指定します。 |
{- "id": 1234567890
}この機能はベータ版での提供となっており、動作が不安定な場合があります。
また、今後互換性を保たない変更が加わる可能性があります。
あらかじめご了承いただいた上でのご利用をお願いいたします。
メディアファイルを1件アップロードします。
| alt | string alt属性の入力値を指定します。 |
| file required | string <binary> アップロードするメディアファイル。 |
curl -X POST -H 'X-NILTO-API-KEY:0000000000000000000000:' \ -F 'file=@abc.jpg' \ 'https://cms-api.nilto.com/v1/media?alt=abcdef&alt[kr]=xyz'
{- "id": 1234567890,
}