====== RADIUSdesk API Permanent Users ====== ===== Introduction ===== * A Permanent User in RADIUSdesk has the following reference ids to other entities. * **user_id** This is the id of the owner (Access Provider) to which the Permanent User belong. * **realm_id** Each Permanent User has to belong to a Realm. A Realm is like a group but used by RADIUS. * **profile_id** Each Permanent User have to a Profile. A Profile can be used by RADIUS to dictate the service (bandwidth, amount of data available etc) a Permanent User will get when connecting to the Internet. * So to recap, **BEFORE** you can create a Permanent User **MAKE SURE** you have the following items since they are compulsory: * An Owner * A Realm * A Profile * This will be important when we want to use the API to create a Permanent User which is why we cover it first. ===== Adding A New Permanent User ===== ==== API URL ==== * We assume the FQDN of the RADIUSdesk server is hotspot.radiusdesk.com. Please adapt accordingly. * http://hotspot.radiusdesk.com/cake3/rd_cake/permanent-users/add.json ==== Items included in the POST ==== * The following is the **minimum** items than needs to be included in the POST request. { "user_id":0, "username":"demo2", "password":"demopassword", "realm_id":1, "profile_id":1, "token":"b4c6ac81-8c7c-4802-b50a-0a6380555b50" } * Lets discuss these items listed. ^ Item ^ Typical Value ^ Comment ^ | user_id | 0 | The special value of 0 (Zero) will make the owner of the token the owner of the Permanent User. | | username | demo2 | Unique username. Can even be an email address. See discussion about the suffix later in this document. | | password | demopassword | Password for user. No restrictions is placed on the length. | | realm_id | 1 | The ID of the Realm the user should belong to. | | profile_id | 1 | The ID of the Profile the user should belong to. | | token | b4c6ac81-8c7c-4802-b50a-0a6380555b50 | The API token of the user who initiate the API call | ==== Finding the detail of the items ==== === API Key === * Each Access Provider (including the **root** user) in RADIUSdesk has a unique security token associated with them referred to as the API Key. This token changes each time the Access Provider password is changed. * An Access Provider can see their own API Key. * Log into RADIUSdesk * At the top right, click the menu button and select **Settings**. {{:2021:api_key1.png?nolink|}} * An Access Provider can see any of the Access Providers under it by going to the Access Providers applet and edit a selected Access Provider. There will be a read-only field with the API Key for the selected Access Provider. {{:2021:api_key2.png?nolink|}} === Realm === * The list of Realms are shown by calling this URL (Be sure to replace the token with your API Key) * http://hotspot.radiusdesk.com/cake3/rd_cake/realms/index-ap-create.json?token=b4c6ac81-8c7c-4802-b50a-0a6380555b50 * If there are a large amount of Realms on the system you may have to add pager items to the URL but this beyond the scope of this document. * Here is a sample reply { "items": [ { "id": 1, "name": "demo1" } ], "success": true } * We can either use **realm_id = 1** or **realm = demo1** when calling the API. The back-end is smart enough to convert the Realm name to to the Realm ID when adding the user. === Profile === * The list of Profiles are shown by calling this URL (Be sure to replace the token with your API Key) * http://hotspot.radiusdesk.com/cake3/rd_cake/profiles/index-ap.json?token=b4c6ac81-8c7c-4802-b50a-0a6380555b50 * If there are a large amount of Profiles on the system you may have to add pager items to the URL but this beyond the scope of this document. * Here is a sample reply { "items": [ { "id": 1, "name": "demo1", "data_cap_in_profile": false, "time_cap_in_profile": false } ], "success": true } * We can either use **profile_id = 1** or **profile = demo1** when calling the API. The back-end is smart enough to convert the Profile name to to the Profile ID when adding the user. ==== Alternative items to include in the POST ==== * The following is the **minimum** items (as an alternative based on the info above) than needs to be included in the POST request. { "user_id":0, "username":"demo2", "password":"demopassword", "realm":"demo1", "profile":"demo1", "token":"b4c6ac81-8c7c-4802-b50a-0a6380555b50" } ==== Reply from the server to the POST ==== * If the request was successful the server will reply with the following { "success": true, "data": { "user_id": 44, "username": "demo2@demo1", "password": "demopassword", "realm": "demo1", "profile": "demo1", "token": "", "language_id": "_", "country_id": "4", "realm_id": 1, "profile_id": 1, "active": 1 } } ===== Adding a suffix to the username ===== * You might have noticed that we specified the username as **demo2** but the name that was created has a **@demo1** added. * This is because of a setting we specified in the Realm we used. * See the following screenshot {{:2021:realm_suffix.png?nolink|}} * Go ahead and remove the check for Permanent Users, save it and run the API call again. * The **@demo** should now be missing in the username. ===== Items allowed in the API ===== * This section will list all the additional items that can be contained in the API call when adding a Permanent User. * The only compulsory ones are those discussed earlier in the document. ==== Personal Info ==== ^ Item ^ Typical Value ^ Comment ^ | name |John |varchar(50) | | surname |Smith |varchar(50) | | phone |+27-724952041 |varchar(50) | | language | 4_4 | This is the only option available for now | | email | john@radiusdesk.com |varchar(100) | | address | 25Main Road Henley On Klip |varchar(255) | ==== Activate & Expire ==== ^ Item ^ Typical Value ^ Comment ^ | from_date |10/02/2021 |Month/Day/Year for 2 October 2021 use with **to_date** | | to_date |10/02/2022 |Month/Day/Year for 2 October 2021 use with **from_date** | * If these items are not specified, the account will be always active. ==== Optional Items ==== ^ Item ^ Typical Value ^ Comment ^ | static_ip |192.168.31.2 |This value will be send inside the RADIUS Access Accept in the form of **Framed-IP-Address = 192.168.31.2** and **Service-Type = Framed-User** | | extra_name |POPI-Act |varchar(100) available for your own use /convention | | extra_value |Yes |varchar(100) available for your own use /convention |