According to this link http://discuss.tail-f.com/t/rest-transactional/246 the REST API interface does not support copying from candidate to running. Is this still the case?
If so, I think then any writes to the candidate datastore should be flagged as not-support or to that affect. It was not a quick search to find the above link.

Howerver it's not quite as simple as saying that candidate isn't supported - explicit write to candidate is indeed not supported but as is stated in chapter 21 The REST API in the UG:

The server hides all NETCONF datastore details for edit operations, such as the :candidate and :startup capabilities. When a client writes to this resource, the server performs the edits in the datastores used; if the candidate is enabled, the changes are written to the candidate, and then the candidate is committed; if the startup is enabled, the changes are written to running and running is copied to startup.

Similar words can also be found in section 1.4 Coexistence with NETCONF in RFC 8040 (RESTCONF Protocol).

This is true of the config resource as part of the REST (not RESTCONF) interface. However the ConfD REST interface does expose the individual datastores as resources, unlike RESTCONF. The way to copy the changes in candidate is to use the commit resource, so by POSTing to the commit resource, this works like the NETCONF RPC. There isn't however a way to confirmed commits though.