Some issues I've noticed using this as an end-user:
Grain boundary docs are missing a primary key, so you can't request a specific grain boundary. Perhaps it would be good practice to ensure all end-points have a primary key?
Inconsistency with surface_properties since surfaces returns all surface information as a single doc for a given mpid, whereas grain_boundaries returns many docs for a given mpid -- for this, I think the grain boundary way makes more sense, since it makes it possible to request just a single grain boundary Structure, whereas for the surfaces you have to request all the surface Structures for a given mpid even if you only want one
Sample document: