Updating a nested map

Consider a nested map e.g.

{
k1:{k11:v11,k12:v12},
k2:{k21:v21,k22:v22,k23:v23},
k3:{k31:v31},
...
}

Are there C client APIs for directly updating/deleting/fetching the value of the inner keys(k11,k22,etc.)?

Yes, that is what the new as_cdt_ctx argument to list/map operations is used for. See map_nested test in map_basics.c.

While fetching, does the server return the whole map and then the client API returns the value of the requested key or does the server return only the value of the key being requested?

The server returns only the value of the subkey being requested.