Should work, but we do not have a convenience class or builder for all of it.
[x] check attribute enforcement
[x] "Actions MAY have human-readable names, which MAY be machine generated for use at scale."
[x] "A curation Action MUST have at least one object which associates it with either the root data entity Dataset or one of its components."(The spec examples violate this, so we do not enforce it in a hard way)
[x] "An Action SHOULD have a name and MAY have a description."
[x] "An Action SHOULD have an endTime, which MUST be in ISO 8601 date format and SHOULD be specified to at least the precision of a day."
[x] "An Action MAY have a startTime meeting the same specifications."
[x] "An Action SHOULD have a human agent who was responsible for authorizing the action, and MAY have an instrument which associates the action with a particular piece of software (for example, the content management system or data catalogue through which an update was approved) which SHOULD be of @type SoftwareApplication."
[x] "An Action which has failed MAY record any error information in an error property."
[x] "To record curation actions which modify a File within a Dataset - for example, by correcting or enhancing metadata - the old version of the File SHOULD be retained, and a CreateAction added which has the original version as its object and the new version as its result." (Not sure if we can support this somehow in the API or give a warning triggered by indicators?)
As I am at this section anyway, let's do a small spec check:
"A curation Action MUST have at least one object which associates it with either the root data entity Dataset or one of its components."(The spec examples violate this, so we do not enforce it in a hard way)