Fixes bug when launching dato dump --watch
together with the environment
option.
Add option to pass a project's environment:
require "dato"
client = Dato::Site::Client.new("YOUR-API-KEY", environment: 'sandbox-foobar')
Introduces Dato::Utils::BuildModularBlock
class to help creating modular blocks.
An example usage can be:
description = [
Dato::Utils::BuildModularBlock.build(
item_type: "1235",
name: "Best dog in the world",
year: "2020",
picture: picture
)
]
record = client.items.create(
item_type: "1234", # model ID
name: "Gigio",
description: description
)
Find more info on the documentation.
- Updated specs cassettes after
appeareance -> appearance
typo fix - Some style changes
- Fixed SEO title retrieval. Now it fallbacks to default SEO title is item title is blank
- Added new attributes to uploads
- Real-time events are now much more granular and the gem avoids downloading all the content every time a change occurs
- Fixed regression where you could no longer access items' item type
- Handle
429 Too Many Requests
responses from API
- Allow empty responses from server
- Introduced
.meta
onDato::Local::Item
to fetch all meta information about the records
- The
.seo_meta_tags
method now generates fallback titles based on the model field title
Moved json_schema
as runtime dependency
The big change is that the methods the client makes available are generated at runtime based on the JSON Schema of our CMA. This means any new API endpoint — or changes to existing ones — will instantly be reflected to the client, without the need to upgrade to the latest client version.
We also added a new deserialize_response
option to every call, that you can use if you want to retrieve the exact payload the DatoCMS returns:
require "dato"
client = Dato::Site::Client.new("YOUR-API-KEY")
# `deserialize_response` is true by default:
access_token = client.access_tokens.create(name: "New token", role: "34")
# {
# "id" => "312",
# "hardcoded_type" => nil,
# "name" => "New token",
# "token" => "XXXX",
# "role" => "34"
# }
# if `deserialize_response` is false, this will be the result
access_token = client.access_tokens.create({ name: "New token", role: "34" }, deserialize_response: false)
# {
# "data": {
# "type": "access_token",
# "id": "312",
# "attributes": {
# "name": "New token",
# "token": "XXXX",
# "hardcoded_type": nil
# },
# "relationships": {
# "role": {
# "data": {
# "type": "role",
# "id": "34"
# }
# }
# }
# }
# }
In our doc pages we also added some examples for the super-handy all_pages
option which was already present since v0.3.29:
# if you want to fetch all the pages with just one call:
client.items.all({ "filter[type]" => "44" }, all_pages: true)