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
  • General Usage
  • Request using query parameters
  • Sample Request
  • Request using stringified JSON
  • Request using JSON POST Body
  • Using multiple filters in query
  • Filter documents by content type
  • Filter documents by tags
  1. APIs
  2. RESTful API
  3. Query Examples

Filters

PreviousSortingNextIncludes

Last updated 6 years ago

General Usage

Request using query parameters

Query a collection and apply a filter for a specific field.

https://api.cmft.io/v1/<repo>/collections/<collection>?key=<apiKey>&filters[0][*.fields.rating][equal]=5
curl -g 'https://api.cmft.io/v1/<repo>/collections/<collection>?filters[0][*.fields.category][equal]=spaceships' \
  -H 'Authorization: <apiKey>'
window.fetch('https://api.cmft.io/v1/<repo>/collections/<collection>?filters[0][*.fields.category][equal]=spaceships', {
  method: 'get',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': '<apiKey>'
  }
})
  .then(function (response) { return response.json() })
  .then(function (data) {
    console.log(data)
  })

Find all available (like equal or greaterThan, etc.) at the .

Sample Request

GET https://api.cmft.io/v1/demo/documents?filters[0][*.fields.rating][equal]=5&key=8MIO994Ley6bqyAlQAHqutiDh4g5Heck

Query Parameters

Name
Type
Description

key

string

filters

array

{
  "status": 200,
  "meta": {
    "count": 1,
    "limit": 25,
    "offset": 0,
    "total": 1
  },
  "data": [
    {
      "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"
      }
    }
  ]
}

Request using stringified JSON

// Define query
var query = {
  "filters": [
    {
      "*.fields.category": {
        "equal": "spaceships"
      }
    }
  ]
};

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

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

Request using JSON POST Body

For large queries that would exceed the length limit of GET request, use the POST method to perform a request.

// Define query
var query = {
  "filters": [
    {
      "*.fields.category": {
        "equal": "spaceships"
      }
    }
  ]
};

// Stringify Object
query = JSON.stringify(query);

// Make the request  
window.fetch('https://api.cmft.io/v1/<repo>/collections/<collection>', {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': '<apiKey>'
  },
  body: JSON.stringify(query)
})
  .then(function (response) { return response.json() })
  .then(function (data) {
    console.log(data)
  })
curl 'https://api.cmft.io/v1/<repo>/collections/<collection>' \
  -H 'Authorization: <apiKey>' \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
        "filters": {
          "*.fields.category": {
            "equal": "spaceships"
          }
        }
      }'

Using multiple filters in query

// Define query
var query = {
  "filters": [
    {
      "*.fields.category": {
          "equal": "spaceships"
        }
    },
    {
      "and": {
        "*.fields.color": {
          "equal": "red"
        }
      }
    },
    {
      "or": {
        "*.meta.id": {
          "equal": "314159265358979323"
        }
      }
    }
  ]
};

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

// Submit the query
window.fetch(`https://api.cmft.io/v1/<repo>/collections/<collection>?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>/aircrafts?filters[0][*.fields.category][equal]=spaceships&filters[1][and][*.fields.color][equal]=red' \
  -H 'Authorization: <apiKey>'
https://api.cmft.io/v1/<repo>/aircrafts?key=<apiKey>&filters[0][*.fields.category][equal]=spaceships&filters[1][and][*.fields.color][equal]=red

Filter documents by content type

// Define query
var query = {
	"filters": [
    {
      "*.meta.contentType": {
          "equal": "aircrafts"
        }
    }
  ]
};

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

// Submit the query
window.fetch(`https://api.cmft.io/v1/<repo>/documents?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>/documents?filters[0][*.meta.contentType][equal]=aircrafts' \
  -H 'Authorization: <apiKey>'
https://api.cmft.io/v1/<repo>/documents?key=<apiKey>&filters[0][*.meta.contentType][equal]=aircrafts

Filter documents by tags

// Define query
var query = {
  "includeTags": [
    "rocket-powered",
    "motorjet"
  ]
};

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

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

API Reference
relational operators