NILTO Developer APIリファレンス (1.1.0)

Download OpenAPI specification:

Developer APIを利用して、NILTOで作成したコンテンツデータを取得することができます。

基本情報

APIベースURL

https://cms-api.nilto.com/v1

APIキー認証

認証のために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フィルターを使用します。

フレキシブルテキストフィールドbodykeywordを含むコンテンツの配列を取得

/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を指定して特定のコンテンツを取得

コンテンツ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
  }
}

_idflexibletext_fieldreference_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内の_idsingleline_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
  }
}

さらに、_idflexibletext_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
  }
}

詳細

IDとLUID

APIのリクエストパラメーターで、特定のオブジェクトを指定するとき、IDもしくはLUIDを使用します。

IDはシステムが定義する、グローバルでユニークなIDです。ユーザーが変更することはできません。

LUID (Locally Unique Identifier) はユーザーが定義するIDです。使用できる文字は英小文字・数字・アンダースコアのみ(a-z, 0-9, _)です。
モデル/フィールドセットのLUIDはスペース内でユニークで、フィールドLUIDはモデル/フィールドセット内でユニークです。

オブジェクトごとの指定方法は以下になります。

オブジェクト 指定方法 変更 確認方法
モデル LUID モデル詳細ページ > 基本情報ダイアログ
フィールドセット LUID フィールドセット詳細ページ > 基本情報ダイアログ
フィールド LUID モデル(フィールドセット)詳細ページ > フィールド詳細ペイン
コンテンツ ID 不可 コンテンツ詳細ペイン > API出力確認ダイアログ

アーカイブされたコンテンツ・メディア

アーカイブされたコンテンツは、Developer APIで取得することはできません。 アーカイブされたコンテンツやメディアを参照しているフィールドは、値が空になります。

CDN

NILTOのDeveloper APIは、FastlyのCDNを経由してコンテンツ配信を行います。 キャッシュが存在する場合、コンテンツを安定的かつ高速に、世界各地からのリクエストに対して配信することができます。

キャッシュを利用するには、APIキーが「公開」ステータスのコンテンツのみをGETする設定であること等の条件を満たす必要があります。
設定方法等の詳細はドキュメントを参照ください。

一定時間あたりのリクエスト制限

Developer APIの品質を担保するため、オリジンサーバーへのリクエストは以下の値で制限されます。
この制限はAPIキーごとに適用され、CDNキャッシュがヒットした場合はカウントされません。

  • GET APIのレートリミット: 600回 / 1分
  • 書き込み API(POST / PUT / PATCH / DELETE)のレートリミット: 30回 / 1分

この制限を超えたリクエストは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",
    },]
}

型定義サンプル(TypeScript)

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に関する既知の不具合は以下のとおりです。

  • サブ言語の翻訳しないフィールドに対してフィルター条件を指定したとき、正しくフィルタリングされないことがある。
  • フィルター条件を指定したとき、APIキーが対象とするステータス以外のコンテンツの内容でヒットしてしまう。

Contents GET 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

コンテンツを一位に識別するための一意なID。

_model

コンテンツが属するモデルのLUID。

_title

コンテンツのタイトル。モデルに設定された「タイトル用フィールド」の値が自動的に反映されます。

_created_at

コンテンツが作成された日時。日時は ISO 8601 形式のUTC(協定世界時)で表現されます。

_updated_at

コンテンツが最後に更新された日時。日時は ISO 8601 形式のUTCで表現されます。

_published_at

コンテンツがはじめて公開された日時。下書き状態の場合は null になることがあります。日時は ISO 8601 形式のUTCで表現されます。
一度公開されたことがあるコンテンツは、その後いかなる操作をしても _published_at の値が変わることはありません。

_last_published_at

コンテンツが最後に公開された日時。下書き状態の場合は null になることがあります。日時は ISO 8601 形式のUTCで表現されます。
2025年6月25日以前に最後に公開されたコンテンツは _published_at と同内容がレスポンスされます。

_status

コンテンツの公開状態を示します。
draft: 下書きデータのみ
published: 公開データのみ
published_draft: 公開中かつ下書きデータもある

_space

サブスペース機能が有効な場合に、コンテンツが所属するスペースのLUIDを示します。

_prev

includeパラメータを指定してレスポンスを拡張した場合に表示します。
ID指定時にのみ有効で、指定コンテンツの「前」に該当するコンテンツ情報を取得します。

詳細はレスポンスの拡張を参照してください。

_next

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フォーマットです。
アドオン要素が適用された状態でフレキシブルテキストフィールドにデータ登録することができます。

1行テキスト

"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パラメータを指定することで、レスポンスを拡張することができます。

_prev

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
}

_next

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 など)を指定することはできません。

Authorizations:
X-NILTO-API-KEY
query Parameters
select
string
Example: select=_id,description,reference_field._id

データを取得するフィールドを指定します。カンマ区切りで複数指定できます。省略するとすべてのフィールドを取得します。
指定しなかったフィールドはレスポンスに含まれません。_id を含むすべてのシステムプロパティが除外対象です。存在しないLUIDのみを指定した場合、空のオブジェクト{} が返ります。

コンテンツ参照フィールド等の階層化されたデータにはドット記法でさらに細かく指定することができます。詳細は取得対象のプロパティを指定を参照ください。

depth
integer [ 0 .. 3 ]
Default: 1
Example: depth=3

参照するコンテンツのオブジェクトを取得する深度を指定します。
depth=0 の場合、コンテンツ参照フィールドはオブジェクトではなく、常に数値形式のコンテンツIDが返ります。

注意:depth の設定は select 指定よりも優先されます。 例えば depth=0 かつ select=ref_field._id と指定した場合、select の指定は無視され、ID(数値)のみがレスポンスされます。

order
string
Example: order=pickup,-_title

並べ替える基準とするフィールドのLUIDを指定します。カンマ区切りで複数指定できます。
降順にするにはLUIDの先頭に-をつけます。
省略した場合、デフォルトで作成日(_created_at)の降順でソートされます。

limit
integer [ 1 .. 100 ]
Default: 100
Example: limit=10

取得する件数の上限を指定します(最大100件)。
全件取得を行う場合は、レスポンスに含まれる total の値を確認し、offset を用いて繰り返しリクエストを行ってください。

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は_parentで固定です。

contains
string
Example: contains=keyword1,keyword2

すべてのテキストフィールド(1行テキスト/複数行テキスト/フレキシブルテキスト)を横断的に検索し、指定した値が含まれるコンテンツを取得します。カンマ区切りでAND検索になります。 langパラメーターを指定している場合、その言語の内容と比較します。

{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

フィールドの内容が指定した値と一致するコンテンツのみ取得します。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[in]
string
Example: {field_luid}[in]=value1,value2,value3

フィールドの値が指定した値のいずれかに一致するコンテンツのみ取得します。カンマ区切りで複数指定できます。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[lt]
string
Example: {field_luid}[lt]=2023-01-23T04:50:00Z

フィールドの内容が指定した値より小さいコンテンツのみ取得します。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[lte]
string
Example: {field_luid}[lte]=2023-01-23T04:50:00Z

フィールドの内容が指定した値以下のコンテンツのみ取得します。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[gt]
string
Example: {field_luid}[gt]=2023-01-23T04:50:00Z

フィールドの内容が指定した値より大きいコンテンツのみ取得します。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[gte]
string
Example: {field_luid}[gte]=2023-01-23T04:50:00Z

フィールドの内容が指定した値以上のコンテンツのみ取得します。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[contains]
string
Example: {field_luid}[contains]=keyword1,keyword2

指定したフィールドのみを対象に、値が含まれるコンテンツを取得します。カンマ区切りでAND検索になります。
langパラメーターを指定している場合、その言語の内容と比較します。

{field_luid}[has]
string
Example: {field_luid}[has]=value

複数選択フィールドに対し、指定した値が含まれるコンテンツのみ取得します。指定する値は「表示名」ではなく「値」を使用します。
langパラメーターを指定している場合、その言語の内容と比較します。

Responses

Request samples

curl -H 'X-NILTO-API-KEY:0000000000000000000000' \
'https://cms-api.nilto.com/v1/contents?model=news&field1[eq]=true'

Response samples

Content type
application/json
{
  • "total;": 34,
  • "offset": 20,
  • "limit": 10,
  • "data": [
    ]
}

コンテンツを取得

指定したIDのコンテンツを取得します。

/contents/1234567890 のように、content_idには数値を指定してください。
※ ここにモデルLUID(news 等)を指定することはできません。モデル単位の取得は、一覧取得エンドポイントにてmodel パラメータを使用してください。

Authorizations:
X-NILTO-API-KEY
path Parameters
content_id
required
integer
Example: 1234567890

取得するコンテンツのID。ランダムに採番された数値。

query Parameters
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

指定した値に応じてレスポンスプロパティを追加することができます。
_prevを指定すると「前のコンテンツ情報」、_nextを指定すると「後のコンテンツ情報」を追加します。
詳細はレスポンスの拡張をご参照ください。

Responses

Request samples

curl -H 'X-NILTO-API-KEY:0000000000000000000000' \
'https://cms-api.nilto.com/v1/contents/1234567890?lang=ja'

Response samples

Content type
application/json
{
  • "_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": {},
  • "repeat_field": [
    ],
  • "combination_field": [
    ],
  • "reference_field": {
    },
  • "field_set1": {
    },
  • "field_set2": {
    }
}

Contents 書き込みAPI(ベータ版)

ベータ版機能について

この機能はベータ版での提供となっており、動作が不安定な場合があります。
また、今後互換性を保たない変更が加わる可能性があります。

あらかじめご了承いただいた上でのご利用をお願いいたします。

フィールド種類ごとのリクエストデータ

フレキシブルテキスト

一般的なhtmlをリクエストする例

対応するビルトイン要素が適用された状態でデータ登録されます。
対応するタグの要素がビルトイン要素に存在しない場合、標準要素としてデータ登録されます。

"fields": {
    "flexibletext_field": "<h2>abcdef</h2><p>abcdef</p><ul><li>abcdef</li></ul>"
}

ポータブルHTMLをリクエストする例

アドオン要素が適用された状態でデータ登録されます。
アドオン要素として解釈できないものは、いずれかのビルトイン要素としてデータ登録されます。

"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"
}

1行テキスト

任意の文字列を指定してください。

"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件新規作成します。

Authorizations:
X-NILTO-API-KEY
query Parameters
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データとして取り込むかマークダウンデータとして取り込むかを指定します。

Request Body schema: application/json
fields
object (contentRequest)

{フィールドLUID: 入力値}の形式のオブジェクト。
言語キー未指定時はメイン言語として登録します。

fields[{lang_key}]
any

{フィールドLUID: 入力値}の形式のオブジェクト。
[] 内は利用中言語の言語キーを指定。同時に複数の言語キーを指定できます。

Responses

Request samples

Content type
application/json
{
  • "fields": {
    },
  • "fields[en]": {
    },
  • "fields[zh-CN]": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1234567890
}

コンテンツを置き換え

指定IDのコンテンツをリクエスト内容で置き換えます。

Authorizations:
X-NILTO-API-KEY
path Parameters
content_id
required
integer
Example: 1234567890

置き換えるコンテンツのID

query Parameters
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データとして取り込むかマークダウンデータとして取り込むかを指定します。

Request Body schema: application/json
fields
object (contentRequest)

{フィールドLUID: 入力値}の形式のオブジェクト。
言語キー未指定時はメイン言語として登録します。

fields[{lang_key}]
any

{フィールドLUID: 入力値}の形式のオブジェクト。
[] 内は利用中言語の言語キーを指定。同時に複数の言語キーを指定できます。

Responses

Request samples

Content type
application/json
{
  • "fields": {
    },
  • "fields[en]": {
    },
  • "fields[zh-CN]": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1234567890
}

コンテンツの部分更新

指定IDのコンテンツの指定フィールドを更新します。

Authorizations:
X-NILTO-API-KEY
path Parameters
content_id
required
integer
Example: 1234567890

更新するコンテンツのID

query Parameters
model
required
string
Example: model=blog,news

登録対象とするモデルのLUIDを指定します。

published
boolean
Default: false
Example: published=true

更新対象の公開ステータスを指定します。
下書きデータを更新する場合false、公開データを更新する場合はtrueを指定します。

space
string
Default: "_parent"
Example: space=demo

更新対象コンテンツが存在しているスペースのLUIDを指定します。

ft_format
string
Default: "portable_html"
Enum: "portable_html" "markdown"
Example: ft_format=markdown

フレキシブルテキストフィールドにデータ登録したい場合、HTMLデータとして取り込むかマークダウンデータとして取り込むかを指定します。

Request Body schema: application/json
fields
object (contentRequest)

{フィールドLUID: 入力値}の形式のオブジェクト。
言語キー未指定時はメイン言語として登録します。

fields[{lang_key}]
any

{フィールドLUID: 入力値}の形式のオブジェクト。
[] 内は利用中言語の言語キーを指定。同時に複数の言語キーを指定できます。

Responses

Request samples

Content type
application/json
{
  • "fields": {
    },
  • "fields[en]": {
    },
  • "fields[zh-CN]": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1234567890
}

コンテンツの削除

指定IDのコンテンツを削除します。

Authorizations:
X-NILTO-API-KEY
path Parameters
content_id
required
integer
Example: 1234567890

削除するコンテンツのID

query Parameters
space
string
Default: "_parent"
Example: space=demo

削除対象コンテンツが存在しているスペースのLUIDを指定します。

Responses

Response samples

Content type
application/json
{
  • "id": 1234567890
}

コンテンツを複製

指定IDのコンテンツを複製します。

複製されたコンテンツは下書きデータとして作成されます。
また、複製対象コンテンツが公開中と下書きの2つのステータスを持つ場合、下書きデータを優先して複製します。

Authorizations:
X-NILTO-API-KEY
path Parameters
content_id
required
integer
Example: 1234567890

複製するコンテンツのID

query Parameters
space
string
Default: "_parent"
Example: space=demo

複製対象コンテンツが存在しているスペースのLUIDを指定します。

Responses

Response samples

Content type
application/json
{
  • "id": 1234567890
}

Media 書き込みAPI(ベータ版)

ベータ版機能について

この機能はベータ版での提供となっており、動作が不安定な場合があります。
また、今後互換性を保たない変更が加わる可能性があります。

あらかじめご了承いただいた上でのご利用をお願いいたします。

メディアをアップロード

メディアファイルを1件アップロードします。

Authorizations:
X-NILTO-API-KEY
query Parameters
alt
string

alt属性の入力値を指定します。

Request Body schema: multipart/form-data
file
required
string <binary>

アップロードするメディアファイル。
最大サイズ: 32MB

Responses

Request samples

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'

Response samples

Content type
application/json

メディアの削除

指定IDのメディアを削除します。

Authorizations:
X-NILTO-API-KEY
path Parameters
media_id
required
integer
Example: 1234567890

削除するメディアのID

Responses

Response samples

Content type
application/json
{
  • "id": 1234567890
}