Comfortable | Docs
  • Comfortable Documentation
  • Concepts
    • Content Repositories
    • Content Types
    • Documents
    • Assets
    • Content Tree
    • Collections
    • Webhooks
    • Team
    • Locales
  • APIs
    • RESTful API
      • Endpoints
      • API Reference
        • Sorting
        • Filters
        • Localisation
        • Fields
        • Includes
        • Search
      • Query Examples
        • Collections
        • Single Documents
        • Single Assets
        • Sorting
        • Filters
        • Includes
    • Image Manipulation
  • SDKs
    • JavaScript
      • Query Options
      • Query All Documents
      • Query a Collection
      • Query a Single Document
      • Query an Alias
      • Query an Asset
      • Example: Filters
      • Example: Sorting
    • Nuxt.js
    • PHP
      • Query All Documents
      • Query Single Document
      • Query Collection
      • Query an Alias
      • Query an Asset
      • Fulltext Search
      • Query by Fields
      • Query by Type
      • Query by Id
      • Query by Tags
  • Guides
    • Vue Blog Example
  • Legal
    • Legal Notice
    • Privacy Policy
Powered by GitBook
On this page
  • Include relations by level
  • Sample Request
  • Include relations from specific fields
  • Sample Request
  • Including Assets in Documents
  • Sample Request (TODO)
  1. APIs
  2. RESTful API
  3. Query Examples

Includes

Include relations by level

This query returns all of the related documents for the first level of a collection for a football team, footballTeams. The content type footballTeam has a relations field to link the players.

https://api.cmft.io/v1/<repo>/footballTeams?key=<apiKey>&includes=1
curl 'https://api.cmft.io/v1/<repo>/footballTeams?includes=1' \
  -H 'Authorization: <apiKey>'
// Define query
let query = {
  "includes": 1
};

// Stringify and URI Encode the Object
query = encodeURIComponent(JSON.stringify(query));

// Submit the query
window.fetch(`https://api.cmft.io/v1/<repo>/footballTeams?query=${query}`, {
  method: 'get',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': '<apiKey>'
  }
})
  .then(function (response) { return response.json() })
  .then(function (data) {
    console.log(data)
  })

Sample Request

GET https://api.cmft.io/v1/demo/documents?includes=1&key=8MIO994Ley6bqyAlQAHqutiDh4g5Heck

Query Parameters

Name
Type
Description

key

string

API Key

{
  "status": 200,
  "meta": {
    "count": 5,
    "limit": 25,
    "offset": 0,
    "total": 5
  },
  "data": [
    {
      "fields": {
        "title": "Christian Schwerdt",
        "shorthand": "CS"
      },
      "meta": {
        "id": "968388973430968320",
        "contentType": "author",
        "repository": "968388392691830784",
        "revision": 1,
        "tags": [],
        "createdAt": "2018-07-06T12:58:43.000Z",
        "updatedAt": "2018-07-06T12:58:43.000Z"
      }
    },
    {
      "fields": {
        "title": "Hello World!",
        "date": "2018-07-06T13:00:00.000Z",
        "text": {
          "html": "<p>Lorem ipsum dolor sit amet, consetetur <strong>sadipscing elitr, sed diam</strong> nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>",
          "plain": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\ntempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At\nvero eos et accusam et justo duo dolores et ea rebum."
        },
        "images": [
          {
            "meta": {
              "id": "968393840635547648",
              "contentType": "_asset"
            }
          }
        ],
        "relatedNews": [],
        "author": [
          {
            "meta": {
              "id": "968388973430968320",
              "contentType": "author"
            }
          }
        ]
      },
      "meta": {
        "id": "968390655497867264",
        "contentType": "news",
        "repository": "968388392691830784",
        "revision": 5,
        "tags": [],
        "createdAt": "2018-07-06T13:05:24.000Z",
        "updatedAt": "2018-07-06T13:23:08.000Z"
      }
    },
    {
      "fields": {
        "title": "Simple Blog Post",
        "date": "2018-07-04T22:00:00.000Z",
        "text": {
          "html": "<h1>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</h1>",
          "plain": "LOREM IPSUM DOLOR SIT AMET, CONSETETUR SADIPSCING ELITR, SED DIAM NONUMY EIRMOD\nTEMPOR INVIDUNT UT LABORE ET DOLORE MAGNA ALIQUYAM ERAT, SED DIAM VOLUPTUA. AT\nVERO EOS ET ACCUSAM ET JUSTO DUO DOLORES ET EA REBUM."
        },
        "images": [
          {
            "meta": {
              "id": "968393848009134080",
              "contentType": "_asset"
            }
          }
        ],
        "relatedNews": [
          {
            "meta": {
              "id": "968390655497867264",
              "contentType": "news"
            }
          }
        ],
        "author": [
          {
            "meta": {
              "id": "968388973430968320",
              "contentType": "author"
            }
          }
        ]
      },
      "meta": {
        "id": "968395804664537088",
        "contentType": "news",
        "repository": "968388392691830784",
        "revision": 1,
        "tags": [],
        "createdAt": "2018-07-06T13:25:51.000Z",
        "updatedAt": "2018-07-06T13:25:51.000Z"
      }
    },
    {
      "fields": {
        "title": "Beautiful Bicycle",
        "description": {
          "html": "<p>Aluminium Frame; Disc Brakes; Shimano XTR;</p>",
          "plain": "Aluminium Frame; Disc Brakes; Shimano XTR;"
        },
        "price": 1399,
        "relatedProducts": [],
        "rating": "5",
        "inStock": true,
        "images": [
          {
            "meta": {
              "id": "969465200912769024",
              "contentType": "_asset"
            }
          }
        ]
      },
      "meta": {
        "id": "969464870959452160",
        "contentType": "products",
        "repository": "968388392691830784",
        "revision": 4,
        "tags": [],
        "createdAt": "2018-07-09T12:13:57.000Z",
        "updatedAt": "2018-07-09T12:30:01.000Z"
      }
    },
    {
      "fields": {
        "title": "Nice Bicycle",
        "description": {
          "html": "<p>Aluminium Frame; Disc Brakes; Shimano XT;</p>",
          "plain": "Aluminium Frame; Disc Brakes; Shimano XT;"
        },
        "price": 1399,
        "relatedProducts": [],
        "rating": "3",
        "inStock": false,
        "images": [
          {
            "meta": {
              "id": "969465200912769024",
              "contentType": "_asset"
            }
          }
        ]
      },
      "meta": {
        "id": "969468642649575424",
        "contentType": "products",
        "repository": "968388392691830784",
        "revision": 2,
        "tags": [],
        "createdAt": "2018-07-09T12:28:56.000Z",
        "updatedAt": "2018-07-09T12:29:23.000Z"
      }
    }
  ],
  "includes": {
    "author": [
      {
        "fields": {
          "title": "Christian Schwerdt",
          "shorthand": "CS"
        },
        "meta": {
          "id": "968388973430968320",
          "contentType": "author",
          "repository": "968388392691830784",
          "revision": 1,
          "tags": [],
          "createdAt": "2018-07-06T12:58:43.000Z",
          "updatedAt": "2018-07-06T12:58:43.000Z"
        }
      }
    ],
    "news": [
      {
        "fields": {
          "title": "Hello World!",
          "date": "2018-07-06T13:00:00.000Z",
          "text": {
            "html": "<p>Lorem ipsum dolor sit amet, consetetur <strong>sadipscing elitr, sed diam</strong> nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p>",
            "plain": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\ntempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At\nvero eos et accusam et justo duo dolores et ea rebum."
          },
          "images": [
            {
              "meta": {
                "id": "968393840635547648",
                "contentType": "_asset"
              }
            }
          ],
          "relatedNews": [],
          "author": [
            {
              "meta": {
                "id": "968388973430968320",
                "contentType": "author"
              }
            }
          ]
        },
        "meta": {
          "id": "968390655497867264",
          "contentType": "news",
          "repository": "968388392691830784",
          "revision": 5,
          "tags": [],
          "createdAt": "2018-07-06T13:05:24.000Z",
          "updatedAt": "2018-07-06T13:23:08.000Z"
        }
      }
    ],
    "_asset": [
      {
        "fields": {
          "title": "picture-01.jpg",
          "description": "",
          "file": {
            "ext": "jpg",
            "path": "968388392691830784/968393840635547648/968393840656523264/picture-01.jpg",
            "size": 87129,
            "filename": "picture-01.jpg",
            "mimetype": "image/jpeg",
            "createdAt": "2018-07-06T13:18:03.000Z",
            "dimensions": {
              "width": 1920,
              "height": 1080
            },
            "originalFile": {
              "name": "picture-01.jpg",
              "size": 87129,
              "type": "image/jpeg"
            },
            "url": "https://images.cmft.io/968388392691830784/968393840635547648/968393840656523264/picture-01.jpg"
          }
        },
        "meta": {
          "id": "968393840635547648",
          "contentType": "_asset",
          "repository": "968388392691830784",
          "revision": 1,
          "tags": [],
          "createdAt": "2018-07-06T13:18:03.000Z",
          "updatedAt": "2018-07-06T13:18:03.000Z"
        }
      },
      {
        "fields": {
          "title": "picture-04.jpg",
          "description": "",
          "file": {
            "ext": "jpg",
            "path": "968388392691830784/968393848009134080/968393848034304000/picture-04.jpg",
            "size": 96972,
            "filename": "picture-04.jpg",
            "mimetype": "image/jpeg",
            "createdAt": "2018-07-06T13:18:03.000Z",
            "dimensions": {
              "width": 1920,
              "height": 1080
            },
            "originalFile": {
              "name": "picture-04.jpg",
              "size": 96972,
              "type": "image/jpeg"
            },
            "url": "https://images.cmft.io/968388392691830784/968393848009134080/968393848034304000/picture-04.jpg"
          }
        },
        "meta": {
          "id": "968393848009134080",
          "contentType": "_asset",
          "repository": "968388392691830784",
          "revision": 1,
          "tags": [],
          "createdAt": "2018-07-06T13:18:05.000Z",
          "updatedAt": "2018-07-06T13:18:05.000Z"
        }
      },
      {
        "fields": {
          "title": "photo-1507035895480-2b3156c31fc8",
          "description": "",
          "file": {
            "ext": "jpg",
            "path": "968388392691830784/969465200912769024/969465200933740544/photo-1507035895480-2b3156c31fc8",
            "size": 1171067,
            "filename": "photo-1507035895480-2b3156c31fc8",
            "mimetype": "image/jpeg",
            "createdAt": "2018-07-09T12:15:14.000Z",
            "dimensions": {
              "width": 4758,
              "height": 3172
            },
            "originalFile": {
              "name": "photo-1507035895480-2b3156c31fc8",
              "size": 1171067,
              "type": "image/jpeg"
            },
            "url": "https://images.cmft.io/968388392691830784/969465200912769024/969465200933740544/photo-1507035895480-2b3156c31fc8"
          }
        },
        "meta": {
          "id": "969465200912769024",
          "contentType": "_asset",
          "repository": "968388392691830784",
          "revision": 1,
          "tags": [],
          "createdAt": "2018-07-09T12:15:15.000Z",
          "updatedAt": "2018-07-09T12:15:15.000Z"
        }
      }
    ]
  }
}

Include relations from specific fields

If the content type footballTeam had more than one relation field, e.g. for its trainers or a city, we would query the relations only for the field players.

// Define query
var query = {
  "includes": {
    "*.fields.players": 1
  }
};

// Stringify and URI Encode the Object
query = encodeURIComponent(JSON.stringify(query));

// Submit the query
window.fetch(`https://api.cmft.io/v1/<repo>/footballTeams?query=${query}`, {
  method: 'get',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': '<apiKey>'
  }
})
  .then(function (response) { return response.json() })
  .then(function (data) {
    console.log(data)
  })
curl -g 'https://api.cmft.io/v1/<repo>/footballTeams?includes[*.fields.players]=1' \
  -H 'Authorization: <apiKey>'
https://api.cmft.io/v1/<repo>/footballTeams?key=<apiKey>&includes[*.fields.players]=1

Sample Request

GET https://api.cmft.io/v1/demo/documents?includes[news.fields.author]=1&key=8MIO994Ley6bqyAlQAHqutiDh4g5Heck

Path Parameters

Name
Type
Description

key

string

API Key

Including Assets in Documents

There is a easy way to have assets shipped within a field of a document, if you don't want to collect it from includes.

You can do this for collections or single documents. In the following example we'll fetch a collection of football players and want to have their pictures included within the document. This makes iterating the list, e.g. for a list template, much more comfortable.

// Define query
var query = {
  "embedAssets": true
};

// Stringify and URI Encode the Object
query = encodeURIComponent(JSON.stringify(query));

// Submit the query
window.fetch(`https://api.cmft.io/v1/<repo>/footballPlayers?query=${query}`, {
  method: 'get',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': '<apiKey>'
  }
})
  .then(function (response) { return response.json() })
  .then(function (data) {
    console.log(data)
  })
curl -g 'https://api.cmft.io/v1/<repo>/footballPlayers?embedAssets=true \
  -H 'Authorization: <apiKey>'
https://api.cmft.io/v1/<repo>/footballPlayers?key=<apiKey>&embedAssets=true

Sample Request (TODO)

GET

Path Parameters

Name
Type
Description

key

string

API Key

PreviousFiltersNextImage Manipulation

Last updated 6 years ago