How the complex fields(Objects & arrays from actual api response i.e. get records for a module) are defined in Metadata API (/rest/v11_8/metadata?type_filter=modules&module_filter=Accounts)


I am doing an Api call (using /rest/v11_8) to get metadata from this endpoint "/rest/v11_8/metadata?type_filter=modules&module_filter=Activities" this is for "Activities" module, here I am getting a response like this  (image= metadata API response) .  Here for simple fields like id,name,date_modified etc we have types as id,varchar and datetime etc. But for some other complex fields like modified_user_link , created_by_link which are objects in the actual API response  (image= actual api response) has a type as "link" in the metadata api response  (image= metadata api response ) .

1). I am trying to understand what does this type link actually means and how in the actual API response we are getting the fields inside modified_user_link . There is also a "relationship" field in the "metadata api response" which tells there is a linking between two modules over this field. But there is not much clarity from where the data is coming inside modified_user_link .

2). Also there are arrays that are there in the actual API response   .  (image= actual api response for Accounts module)  whose type in the metadata API response is "relate","email" or even the field name itself  (for some fields) (image : metadata api response for accounts module).How do we know what fields should come for the arrays .

3). I am trying to build  metadata using the metadata API(/rest/v11_8/metadata?type_filter=modules&module_filter=Accounts) , So needs some clarity related to these complex fields (by complex fields I mean Objects and Arrays)  modified_user_link ,created_by_link  etc.

Please respond with suggestions