Mesh network in API mode

Hi. I am trying to understand Arduino + Xbee shield communication and the protocols that are used to accomplish it. I am a newbie regarding Arduino and embedded programing. I have only a little Arduino experience/knowledge and almost no Xbee experience/knowledge. I am interested in the way a point to multipointt (mesh) network works in API mode. I have got a few questions about the way Arduino + Xbee units work in API mode. I have read a bit about the possible request type in API mode, but did not understand everything well. My questions are:

  1. What is the difference between API Received Message and Transmit request frames. I am not asking about the frame structure. What do they represent? I have read a bit about them and googled a bit, but I was not able to comprehend the difference very well.

  2. Arduino + Xbee (arduino units connected to xbee via a shield) units use API frames to communicate in API mode. If I want to create a network that supports a few functionalities and that has a coordinator and a few routers and end devices, do I have to use the standard API frame format. Can i make my own custom proctocol/frame that is based on the API frame format but differs a bit from the standard API frame structure (has a few fields more or does not contain every single field the APi frame has)?

  3. If I want to make a network that supports a few functionalities, for example (these are trivial examples, I am not trying to implement them, I am just bringing them up as some different types of functionalities):
    a. coordinator requests from the router/end device to turn off on/of a LED.
    b. coordinator asks the router/end device if it's LED is on/off.
    c. coordinator asks the router/end device to generate some data, process it, ..., etc. and asks the unit to send the result back to the coordinator.
    d. coordinator asks the router/end device what kind of MAC address or ID it has.

If I want a network like that, how can I do that via the standard API frame requests? For me it seems the only way to implement something like that is to define a custom protocol where every request will have a different Id or type (represented via a byte) based on which I can deduce what kind of request an Arduino + Xbee unit received and then generate a matching response (and write my code according to that).

  1. I might be wrong, if an API request is received by an unit, is a response generated automatically or is it necessary to code it (write my own code to generate a response)? Can a response be generated automatically by the unit without writing code to handle a request (I am asking about the default API requests like the API transmit request)?

  2. If I wan to make an API mesh, do all nodes have to be in API mode or is it enough if the coordinator is in API mode? Is it better if the routers and end devices are in API or AT mode?

I hope that this is the correct forum for a question like this and that my questions are clear and that I have expressed myself fine (english is not my first language). A simple example code for API mode communication in a point to multipoint (mesh) network would be welcomed (I tried to google it, but I was not able to find something useful that would clarify my uncertainties).

Thanks in forward.