You can decide to activate the draft/published system on a per-model basis:
If you do so:
When you create a new record, it will be put into a Draft status. This means that the record is still not published: you can continue making changes and saving the record without having to worry about showing unfinished content to your end users.
Once you're satisfied with the changes, you can click on the Publish button: the latest revision of your record will be marked as the Published version, and it will be instantly available in the DatoCMS APIs:
With the Content Delivery API and the Realtime Updates API, the default is to return only the published record, but you can request to consider the draft with the header X-Include-Drafts: true
.
With the Content Management API, you can request to consider the published or draft versions of records with the parameter ?version=current
or ?version=published
.
If you make a change to a published record, its status will be become Updated. Again, those changes won't be visible to end users and published until you explicitly click on the Publish button again.
For more information on how the system manages the draft/published status, you can refer to this in-depth guide: Data consistency: key concepts and implications.
In case of linked records you can decide which behaviour to have when a record gets published. For example, you can determine if all the linked records should be published as well or if you want to emit a validation error. The same goes for unpublishing and deleting.
In the field validation you can pick the option that you prefer:
To know more about how DatoCMS saves versions, check out this video tutorial: