Adventure mode blocks not breakable?

I’m interesting in building a set of plugins that work in Adventure mode.

I’ve been looking over the Data API. Perhaps it is just me, but that API is very difficult to understand and navigate (from a newbie plugin developer). I would have expected a less fluid and more constrained API since it appears that many things the API “lets me do” will not be persisted if the server can’t understand it. I get generic APIs, but this one feels overly open.

However, I’m getting a feel for it, and could possibly just be missing the “bigger picture”.

That being said, I can find no reference to a DataManipulator or method for modifying the “CanDestroy” NBT tag on an Item Stack (or the CanPlaceOn NBT tag on a Block). I also see no way to manipulate a NBT tag directly on an item stack or block (which would allow me to work around a missing portion of the API until such an API exists).

Can you show an example of how this might be done with version 5 of the API?