====== R4 Client ======
The architecture of R4 client is provided in the picture below:
{{:developers:sdk-r4.png?nolink&800x465}}
From the integrator's point of view, the only key object is the **AducidClient**, which represents the client for the R4 interface. The client is a part of basic Java SDK implementation and defines specific methods which can be used to personalize the R4 operation so that it is easier to handle.
The client methods can be divided into the following semantic groups:
**Group 0** – Constructors
^**Method** ^**Description** |
|AducidClient(String aimUrl) |Aducid client with the default implementation of **AducidSimpleXMLMessageSender**. The aimUrl parameter represents the URL of the R4 service. |
|AducidClient(String aimUrl, AducidMessageSender messageSender) |Aducid client with a specific implementation of **AducidMessageSender**. The aimUrl parameter represents the URL of the R4 service. |
**Group 1** – Methods for working with identity (PEIG® ). These methods produce the identifier **authId** (or AIM sessionId), which must be delivered to PEIG® and which determines the type of operation performed with PEIG, and optionally **bindingId** and/or **bindingKey**, which are required in some cases for correct client binding.
^**Method** ^**Description** |
|startAuthenticationSession(String peigReturnName) |A standard authentication session opens for the operation of identity verification. The peigReturnName parameter represents the return URL address. |
|init(String peigReturnName) |The authentication session opens with the init identity operation (creation of identity). The peigReturnName parameter represents the return URL address. |
|reinit(String peigReturnName) |The authentication session opens with the reinit identity operation (reinitialization of identity). The peigReturnName parameter represents the return URL address. |
|change(String peigReturnName) |The authentication session opens with the change identity operation (change of identity). The peigReturnName parameter represents the return URL address. |
|rechange(String peigReturnName) |The authentication session opens with the rechange identity operation (repeated change of identity). The peigReturnName parameter represents the return URL address. |
|delete(String peigReturnName) |The authentication session opens with the delete identity operation (deletion of identity). The peigReturnName parameter represents the return URL address. |
|identityLink(String aim2Name, String peigReturnName) |The authentication session opens with the link identity operation (link identity with secondary AIM). The aim2Name parameter stands for the secondary AIM name, and the peigReturnName parameter represents the return URL address. |
**Group 2** – Methods designed for working with a directory personal object. A directory personal object consists of named data stored on the AIM server (as opposed to pocket personal objects, which are stored in PEIG). The directory personal object defines methods for working with data stored on the server (e.g. the Read method for a "set of user attributes" object type returns user attributes tied to the given identity). In order to work, these methods need authentication (i.e. upon calling, a pair of **authId** and **authKey** is required). Prior to their calling, authentication must be performed using PEIG.
^**Method** ^**Description** |
|callDPO |Carries out an operation with the directory personal object. See chapter 6 for detailed information. This variation requires an authentication pair (**authId**, **authKey**). |
**Group 3** – Methods designed for working with a pocket personal object. A pocket personal object consists of named data stored in PEIG (as opposed to directory personal objects, which are stored on the AIM server). The pocket personal object defines methods for working with the data stored in a PEIG (for example, create room or enter room). These methods do not require authentication (a pair of **authId** and **authKey**).
^**Method** ^**Description** |
|callPPO |Carries out an operation with the pocket personal object. See chapter 7 for detailed information. This variation does not require an authentication pair (**authId**, **authKey**). |
**Group 4** – Methods used for working with authentication sessions
^**Method** ^**Description** |
|getResult(byte[] authId, byte[] authKey, AttributeSetName attributeSetName) |It gains the status of the authentication session and identity attributes. It requires an authentication pair (**authId**, **authKey**) and attribute set name on input. |
|endAuthenticationSession(byte[] authId, byte[] authKey) |Closes the authentication session on AIM. It requires an authentication pair (**authId**, **authKey**) on input. |
===== Hot to use Java SDK R4 Client =====
To work with R4 client, include content of **api-simple-[version]-lib.zip** in your application classpath.