Compare commits
33 Commits
84a895d82b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| e3dfc3431d | |||
| ae1f3cca1b | |||
| 8746058c79 | |||
| 4a1c6bde48 | |||
| e39e1a2c47 | |||
| f7814d1935 | |||
| f40f3b6c0b | |||
| f4e4688543 | |||
| 7b0e80a952 | |||
| 9d2892ad1d | |||
| a89d467930 | |||
| 697f0cc1f9 | |||
| 3e7f38c497 | |||
| e6e80590cc | |||
| c88a23af79 | |||
| 7ba55267d1 | |||
| d5c5502a3e | |||
|
|
bed510364e | ||
|
|
db2b6e62b8 | ||
|
|
8e4ea9d4a0 | ||
|
|
6cb842fa6d | ||
|
|
1ccbf651e7 | ||
|
|
b5e5ea5365 | ||
| 64f783efd1 | |||
| 909cbf5aed | |||
| 36a58cded8 | |||
| f4eccc7648 | |||
|
|
9afeea906b | ||
|
|
50b325393f | ||
|
|
4d31d6173a | ||
|
|
fa16147847 | ||
|
|
1dd1521919 | ||
|
|
e82c38f7e0 |
@@ -1,10 +1,12 @@
|
|||||||
|
# API Getting Started
|
||||||
This document will explain how to get started with the Sentri API.
|
This document will explain how to get started with the Sentri API.
|
||||||
## Requirements
|
## Requirements
|
||||||
To connect to the Sentri API, you will need the following:
|
To connect to the Sentri API, you will need the following:
|
||||||
|
|
||||||
- A basic understanding of how APIs work, along with some programming or scripting experience.
|
- A basic understanding of how APIs work, along with some programming or scripting experience.
|
||||||
- The Sentri base URL.
|
- The Sentri base URL.
|
||||||
- An API bearer token.
|
- An API bearer token.
|
||||||
- Network access from the devices making API requests to the Sentri service on port 443.
|
- HTTPS access from the devices making API requests to the Sentri.
|
||||||
## Creating a authentication bearer token
|
## Creating a authentication bearer token
|
||||||
Make sure you have the `user-apitoken-self` read/write permission, as this allows you to create an authentication bearer token.
|
Make sure you have the `user-apitoken-self` read/write permission, as this allows you to create an authentication bearer token.
|
||||||
|
|
||||||
@@ -17,3 +19,8 @@ c8aaf11d-e10e-11f0-9b16-00155d00153f.83f0383262a4875f6c6d4bb5aa8577818ca7f71cb2b
|
|||||||
When you encounter a problem with the API, you will most likely receive an HTTP status code in the response. This code can help indicate the nature of the issue.
|
When you encounter a problem with the API, you will most likely receive an HTTP status code in the response. This code can help indicate the nature of the issue.
|
||||||
### Response codes
|
### Response codes
|
||||||
These are some of the response codes you may receive when making a call to the API:
|
These are some of the response codes you may receive when making a call to the API:
|
||||||
|
|
||||||
|
## Method override
|
||||||
|
Some web servers (such as Nginx) may restrict direct use of PUT and DELETE requests, which can result in a 405 Method Not Allowed response.
|
||||||
|
|
||||||
|
To work around this limitation, you can send a POST request and include the `X-HTTP-Method-Override` header to indicate the intended HTTP method (e.g., PUT or DELETE). This will be reflected in the API request examples.
|
||||||
63
API/v1/customers/companies/PUT Activate.md
Normal file
63
API/v1/customers/companies/PUT Activate.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# PUT Activate company
|
||||||
|
Companies are imported into Sentri from external systems. Before a company can be used within Sentri, it must be activated.
|
||||||
|
|
||||||
|
This API call activates a company by changing its status from inactive to active.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/customers/companies/activate/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`customers-companies` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ------------- | ------ | -------- | ---------------------------------------------- |
|
||||||
|
| company_uuid | string | yes | Unique id of the company |
|
||||||
|
| company_state | enum | yes | The state of the company (active or imported). |
|
||||||
|
|
||||||
|
**imported** is the state of the company when its imported from the source.
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"company_uuid": "e0a60eba-52f6-11f1-8bcc-bc2411125ba4",
|
||||||
|
"copmany_state": "active",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/customers/companies/activate/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"company state successfully updated"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
57
API/v1/office/stompjes/DELETE Stomp.md
Normal file
57
API/v1/office/stompjes/DELETE Stomp.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# DELETE Stomp
|
||||||
|
This API call deletes a stomp from a user.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/office/stompjes/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`office-stompjes` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ---------- | ---- | -------- | ---------------------- |
|
||||||
|
| stomp_uuid | uuid | yes | Unique id of the stomp |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"stomp_uuid": "e0a60eba-52f6-11f1-8bcc-bc2411125ba4",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/office/stompjes/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Stomp removed."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
63
API/v1/office/stompjes/GET Stomp.md
Normal file
63
API/v1/office/stompjes/GET Stomp.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# GET Stomp
|
||||||
|
This will get stompjes from the database.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/office/stompjes/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`office-stompjes` RO
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/office/stompjes/' . '?builder[0][where][0]=user_uuid&builder[0][where][1]=5219edbb-512d-11f1-8bac-bc2411125ba4',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"stomp_uuid":"16b148da-5c76-11f1-8eb6-bc2411125ba4",
|
||||||
|
"user_uuid":"5219edbb-512d-11f1-8bac-bc2411125ba4",
|
||||||
|
"stomp_timestamp":1780179768,
|
||||||
|
"stomp_reason":null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stomp_uuid":"ea5b47d6-5c75-11f1-8eb6-bc2411125ba4",
|
||||||
|
"user_uuid":"5219edbb-512d-11f1-8bac-bc2411125ba4",
|
||||||
|
"stomp_timestamp":1780179693,
|
||||||
|
"stomp_reason":null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
56
API/v1/office/stompjes/POST Stomp user.md
Normal file
56
API/v1/office/stompjes/POST Stomp user.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# POST Stomp user
|
||||||
|
This API call adds a stomp to a user.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/office/stompjes/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`office-stompjes-canstomp` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| --------- | ---- | -------- | ----------------------------------- |
|
||||||
|
| user_uuid | uuid | yes | Unique id of the user to be stomped |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_uuid": "5219edbb-512d-11f1-8bac-bc2411125ba4",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/office/stompjes/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Stomp added."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
68
API/v1/portal-management/configure/GET Portal settings.md
Normal file
68
API/v1/portal-management/configure/GET Portal settings.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# GET Portal settings
|
||||||
|
This will get all the portal settings from the database except the `mail_smtp_pass`.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/configure/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-portalsettings` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/configure/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"portal_uuid":"effda0c0-0830-11f0-9300-7e99ed98b725",
|
||||||
|
"portal_name":"Sentri",
|
||||||
|
"portal_slugify":"sentri",
|
||||||
|
"portal_provider_name":"Mooij.me",
|
||||||
|
"portal_provider_slugify":"sentri",
|
||||||
|
"admin_auth_methods":"database_auth",
|
||||||
|
"cacert_url":"N\/A",
|
||||||
|
"autop_url":"N\/A",
|
||||||
|
"mail_from_name":"Sentri",
|
||||||
|
"mail_from_address":"sentri@mooij.me",
|
||||||
|
"mail_smtp_host":"smtp.mooij.me",
|
||||||
|
"mail_smtp_secure":"tls",
|
||||||
|
"mail_smtp_port":587,
|
||||||
|
"mail_smtp_auth":1,
|
||||||
|
"mail_smtp_user":"noreply"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
63
API/v1/portal-management/configure/PUT Portal settings.md
Normal file
63
API/v1/portal-management/configure/PUT Portal settings.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# PUT Portal settings
|
||||||
|
This PUT call configures the global Sentri settings.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/configure/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-portalsettings` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ------------------------------------------------------------------ |
|
||||||
|
| portal_uuid | uuid | yes | Unique id of Sentri instance. |
|
||||||
|
| portal_name | string | yes | The name of the portal. |
|
||||||
|
| portal_provider_name | string | yes | The name of the Sentri provider |
|
||||||
|
| admin_auth_methods | string | yes | The authentication method. Currently supports only `database_auth` |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"portal_uuid": "5219edbb-512d-11f1-8bac-bc2411125ba4",
|
||||||
|
"portal_name": "Sentri",
|
||||||
|
"portal_provider_name": "Your company name",
|
||||||
|
"admin_auth_methods": "database_auth"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/configure/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"portal settings updated successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# GET Group permissions
|
||||||
|
This will get all the permissions assigned to user-groups.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/group-permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-permissions` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/group-permissions/' . '?builder[0][where][0]=user_group_uuid&builder[0][where][1]=0e1c6269-0da5-11f0-9300-7e99ed98b725',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"permission_uuid":"11abc93d-c265-11f0-95da-7e99ed98b725",
|
||||||
|
"user_group_uuid":"0e1c6269-0da5-11f0-9300-7e99ed98b725",
|
||||||
|
"permission_value":"RW",
|
||||||
|
"permission_restrict_to_tenant":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"permission_uuid":"1425fa24-2b6b-11f0-9300-7e99ed98b725",
|
||||||
|
"user_group_uuid":"0e1c6269-0da5-11f0-9300-7e99ed98b725",
|
||||||
|
"permission_value":"RW",
|
||||||
|
"permission_restrict_to_tenant":0
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# PUT Group permissions
|
||||||
|
This PUT request updates the permissions of a user group.
|
||||||
|
|
||||||
|
You can only modify a group's permissions if your group's weight is equal to or higher than the weight of the group being modified.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/group-permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-permissions` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ---------------- | ---- | -------- | ----------------------------------------- |
|
||||||
|
| permission_uuid | uuid | yes | Unique id of the permission. |
|
||||||
|
| user_group_uuid | uuid | yes | Unique id of the user group. |
|
||||||
|
| permission_value | enum | yes | The permission value (`NA`, `RO` or `RW`) |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permission_uuid": "11abc93d-c265-11f0-95da-7e99ed98b725",
|
||||||
|
"user_group_uuid": "5c1f0102-51ea-11f1-8bac-bc2411125ba4",
|
||||||
|
"permission_value": "RO"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/group-permissions/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Access rights changed successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
73
API/v1/portal-management/mail/configure/PUT Mail settings.md
Normal file
73
API/v1/portal-management/mail/configure/PUT Mail settings.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# PUT Mail settings
|
||||||
|
This PUT request updates the mail settings.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/mail/configure/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-mailsettings` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ----------------- | ------- | -------- | ---------------------------------------------------- |
|
||||||
|
| portal_uuid | uuid | yes | Unique id of the portal. |
|
||||||
|
| mail_from_name | string | yes | Mail from name. |
|
||||||
|
| mail_from_address | email | yes | Mail from address. |
|
||||||
|
| mail_smtp_host | string | yes | SMTP FQDN hostname. |
|
||||||
|
| mail_smtp_secure | enum | yes | Secure connection type. Either `tls`, `ssl` or `no`. |
|
||||||
|
| mail_smtp_port | integer | yes | Mail server port number. Default `587` or `25`. |
|
||||||
|
| mail_smtp_auth | boolean | yes | Use SMTP authentication. |
|
||||||
|
| mail_smtp_user | string | yes | SMTP authentication user. |
|
||||||
|
| mail_smtp_pass | string | yes | SMTP authentication password. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"portal_uuid": "11abc93d-c265-11f0-95da-7e99ed98b725",
|
||||||
|
"mail_from_name": "Sentri Company",
|
||||||
|
"mail_from_address": "sentri@company.com",
|
||||||
|
"mail_smtp_host": "smtp.company.com",
|
||||||
|
"mail_smtp_secure": "tls",
|
||||||
|
"mail_smtp_port": 587,
|
||||||
|
"mail_smtp_auth": true,
|
||||||
|
"mail_smtp_user": "smtpuser",
|
||||||
|
"mail_smtp_pass": "securepassword"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/mail/configure/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"mail settings updated successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
56
API/v1/portal-management/mail/test/POST Send test mail.md
Normal file
56
API/v1/portal-management/mail/test/POST Send test mail.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# POST Send test mail
|
||||||
|
This API call will send an test email to the given mail address.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/mail/test/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`ofice-stompjes-canstomp` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| --------- | ----- | -------- | -------------------------------------------- |
|
||||||
|
| mailt_to | email | yes | The mail address to send the test email to. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mail_to": "test@company.com",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/mail/test/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"The test email was sent."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
58
API/v1/portal-management/modules/GET Modules.md
Normal file
58
API/v1/portal-management/modules/GET Modules.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# GET Modules
|
||||||
|
This call gets all the Sentri modules information.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/modules/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-modules` RO
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/modules/' . '?builder[0][where][0]=module_uuid&builder[0][where][1]=0f044275-1744-444c-9627-736310d7997e',
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json'
|
||||||
|
]
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"module_uuid":"0f044275-1744-444c-9627-736310d7997e",
|
||||||
|
"module_name":"Portal Management",
|
||||||
|
"module_slugify":"portal-management",
|
||||||
|
"module_enabled":1,
|
||||||
|
"module_description":null,
|
||||||
|
"module_create_timestamp":1762695975,
|
||||||
|
"module_modified_timestamp":null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
61
API/v1/portal-management/modules/PUT Toggle module.md
Normal file
61
API/v1/portal-management/modules/PUT Toggle module.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# PUT Toggle module
|
||||||
|
This PUT request enables or disables an module.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/modules/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-modules` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------- | ------- | -------- | ----------------------------- |
|
||||||
|
| module_uuid | uuid | yes | Unique id of the module. |
|
||||||
|
| module_enabled | boolean | yes | Enable or disable the module. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"module_uuid": "247aa89e-2ffa-4cba-8672-3fef451255b7",
|
||||||
|
"module_enabled": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/modules/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Module enabled successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
|
|
||||||
|
|
||||||
57
API/v1/portal-management/permissions/DELETE Permission.md
Normal file
57
API/v1/portal-management/permissions/DELETE Permission.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# DELETE Permission
|
||||||
|
This API call deletes a permission. This is only allowed by the superuser.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
being `superuser`.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| --------------- | ---- | -------- | ---------------------------- |
|
||||||
|
| permission_uuid | uuid | yes | Unique id of the permission, |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permission_uuid": "e0a60eba-52f6-11f1-8bcc-bc2411125ba4",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/permissions/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Permission deleted successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
58
API/v1/portal-management/permissions/GET Permissions.md
Normal file
58
API/v1/portal-management/permissions/GET Permissions.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# GET Permissions
|
||||||
|
This call gets all the permissions data.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-permissions` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/permissions/' . '?builder[0][where][0]=permission_name&builder[0][where][1]=admin-portalsettings',
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json'
|
||||||
|
]
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"permission_uuid":"1d018159-3109-11f0-9300-7e99ed98b725",
|
||||||
|
"permission_name":"admin-portalsettings",
|
||||||
|
"permission_slugify":"admin-portalsettings",
|
||||||
|
"permission_description":"Grants access to modify the global settings. It is advisable to restrict this permission to only the highest-level administrators.",
|
||||||
|
"permission_create_timestamp":1749933229,
|
||||||
|
"permission_modified_timestamp":null,
|
||||||
|
"module_uuid":"0f044275-1744-444c-9627-736310d7997e"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
62
API/v1/portal-management/permissions/POST Permission.md
Normal file
62
API/v1/portal-management/permissions/POST Permission.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# POST Permission
|
||||||
|
This API call creates a new permission. This is only allowed by the superuser.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
Being `superuser`.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ---------------------- | ------ | -------- | ------------------------------------------- |
|
||||||
|
| permission_name | string | yes | The name of the permission. |
|
||||||
|
| permission_slugify | string | yes | The slugify version of the permission name. |
|
||||||
|
| permission_description | string | yes | The description of the permission. |
|
||||||
|
| module_uuid | uuid | yes | The `module_uuid` linked to the permission. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permission_name": "admin-test",
|
||||||
|
"permission_slugify": "admin-test",
|
||||||
|
"permission_description": "test permission.",
|
||||||
|
"module_uuid": "0f044275-1744-444c-9627-736310d7997e"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/permissions/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"<permission data>"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
65
API/v1/portal-management/permissions/PUT Permission.md
Normal file
65
API/v1/portal-management/permissions/PUT Permission.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# PUT Permission
|
||||||
|
This PUT request updates permission data. This can only be done by the superuser
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/permissions/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
Being `superuser`.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ---------------------- | ------ | -------- | ------------------------------------------- |
|
||||||
|
| permission_name | string | yes | The name of the permission. |
|
||||||
|
| permission_slugify | string | yes | The slugify version of the permission name. |
|
||||||
|
| permission_description | string | yes | The description of the permission. |
|
||||||
|
| module_uuid | uuid | yes | The `module_uuid` linked to the permission. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permission_name": "admin-test",
|
||||||
|
"permission_slugify": "admin-test",
|
||||||
|
"permission_description": "test permission.",
|
||||||
|
"module_uuid": "0f044275-1744-444c-9627-736310d7997e"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/modules/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Permission updated successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# POST Configure Inserve
|
||||||
|
This API call updates the Inserve configuration.
|
||||||
|
More information about the Inserve source can be found [here](Portal%20Management/Settings/Sources/Inserve.md).
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/sources/inserve/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-sources` RW
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| source_url | string | yes | The url of the inserve instance. |
|
||||||
|
| source_auth_token | string | yes | The API token from inserve |
|
||||||
|
| source_custom_data | json | yes | The custom JSON source data. See the [Inserve](Portal%20Management/Settings/Sources/Inserve.md) documentation. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"source_url": "https://company.inserve.nl",
|
||||||
|
"source_auth_token": "8TtCFdogSJmDhJC0Ii4ZVKkHplMQikNqVnY7uRuBi84IRYONfuYv7UKOxDV0PYXV",
|
||||||
|
"source_custom_data": "[]"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/sources/inserve/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Information modified"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
61
API/v1/portal-management/user-groups/Delete user group.md
Normal file
61
API/v1/portal-management/user-groups/Delete user group.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# DELETE user group
|
||||||
|
This API call deletes a user-group.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/user-groups/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-user-groups` RW.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| --------------- | ---- | -------- | ---------------------------- |
|
||||||
|
| user_group_uuid | uuid | yes | Unique id of the user-group. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_group_uuid": "d4cbf41b-6445-11f1-a54b-bc2411125ba4"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/user-groups/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"Permission deleted successfully."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error":"Cannot delete record: dependent data exists."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
This means there is still a user linked to the user-group, first make there are no users linked to this group before deleting.
|
||||||
58
API/v1/portal-management/user-groups/GET user group.md
Normal file
58
API/v1/portal-management/user-groups/GET user group.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# GET user group
|
||||||
|
This call gets all the user-groups data.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/user-groups/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-user-groups` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/user-groups/' . '?builder[0][where][0]=user_group_uuid&builder[0][where][1]=0e1c6269-0da5-11f0-9300-7e99ed98b725',
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json'
|
||||||
|
]
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"user_group_uuid":"0e1c6269-0da5-11f0-9300-7e99ed98b725",
|
||||||
|
"user_group_name":"superuser",
|
||||||
|
"user_group_slugify":"superuser",
|
||||||
|
"user_group_type":"admin",
|
||||||
|
"user_group_weight":1,
|
||||||
|
"user_group_create_timestamp":1742680669,
|
||||||
|
"user_group_modified_timestamp":1749939827
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
65
API/v1/portal-management/user-groups/POST user group.md
Normal file
65
API/v1/portal-management/user-groups/POST user group.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# POST user group
|
||||||
|
This API call creates a user group.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/user-groups/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-user-groups` RW.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ------------------ | ------- | -------- | --------------------------------------------- |
|
||||||
|
| user_group_name | string | yes | the name of the group being created. |
|
||||||
|
| user_group_slugify | slugify | yes | The slugify version of the name of the group. |
|
||||||
|
| user_group_weight | integer | yes | The group weight of the group being created. |
|
||||||
|
| user_group_type | enum | yes | Either `admin` or `user`. |
|
||||||
|
>[!INFO]
|
||||||
|
>The `user_group_name` cannot be `superuser` since this name is reserved.
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_group_name": "test group",
|
||||||
|
"user_group_slugify": "test-group",
|
||||||
|
"user_group_weight": 51,
|
||||||
|
"user_group_type": "admin"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/user-groups/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"User group created successfully"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
63
API/v1/portal-management/user-groups/PUT user group.md
Normal file
63
API/v1/portal-management/user-groups/PUT user group.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# PUT user group
|
||||||
|
This PUT request updates user group data.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/user-groups/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-control-user-groups` RW.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ----------------- | ------- | -------- | ------------------------------ |
|
||||||
|
| user_group_uuid | uuid | yes | Unique id of the user-group |
|
||||||
|
| user_group_name | string | yes | The name of the user-group. |
|
||||||
|
| user_group_weight | integer | yes | The group weight of the group. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_group_uuid": "d4cbf41b-6445-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_group_name": "test group",
|
||||||
|
"user_group_weight": 52
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/user-groups/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"User group created updated"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
|
|
||||||
|
|
||||||
57
API/v1/portal-management/users/DELETE User.md
Normal file
57
API/v1/portal-management/users/DELETE User.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# DELETE User
|
||||||
|
This API call deletes a user.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/users/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-admins` RW.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| --------- | ---- | -------- | ---------------------- |
|
||||||
|
| user_uuid | uuid | yes | Unique id of the user. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_uuid": "3b58843c-644b-11f1-a54b-bc2411125ba4"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/users/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"User successfully deleted"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
70
API/v1/portal-management/users/GET User.md
Normal file
70
API/v1/portal-management/users/GET User.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# GET user
|
||||||
|
This call gets nearly all the users data.
|
||||||
|
It will not send back the hashed password, MFA secret and other sensitive data.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/users/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-admins` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/users/' . '?builder[0][where][0]=user_uuid&builder[0][where][1]=0eda6269-0da5-11f0-9300-7e99ed98b725',
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json'
|
||||||
|
]
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"user_uuid":"481fc5c9-6834-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_group_uuid":"d4cbf41b-6445-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_email":"test@domain.name",
|
||||||
|
"user_first_name":"Pietje",
|
||||||
|
"user_last_name":"Bel",
|
||||||
|
"user_full_name":"Pietje Bel",
|
||||||
|
"user_phone_number":"",
|
||||||
|
"user_password_reset_expires":1781557318,
|
||||||
|
"user_two_factor_enabled":0,
|
||||||
|
"user_status":"pending",
|
||||||
|
"user_verified_email":0,
|
||||||
|
"user_verified_phone":0,
|
||||||
|
"user_create_timestamp":1781470918,
|
||||||
|
"user_modified_timestamp":null,
|
||||||
|
"user_last_login_timestamp":null,
|
||||||
|
"user_login_attempts":0,
|
||||||
|
"user_pref_language":"en",
|
||||||
|
"user_stompable":0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
69
API/v1/portal-management/users/POST User.md
Normal file
69
API/v1/portal-management/users/POST User.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# POST user group
|
||||||
|
This API call creates a user.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/users/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-admins` RW.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ------------------ | ------ | -------- | ---------------------------------------------------------------------- |
|
||||||
|
| user_group_uuid | uuid | yes | The user-group uuid for the user. |
|
||||||
|
| user_email | email | yes | The email address of the user. |
|
||||||
|
| user_first_name | string | yes | The first name of the user. |
|
||||||
|
| user_last_name | string | yes | The last name of the user. |
|
||||||
|
| user_phone_number | string | yes | The phone number of the user. |
|
||||||
|
| user_status | enum | yes | The user status of the user. Either `inactive`, `banned` or `pending` |
|
||||||
|
| user_pref_language | enum | yes | Either `en` or `nl` |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_group_uuid": "d4cbf41b-6445-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_email": "test@domain.name",
|
||||||
|
"user_first_name": "Pietje",
|
||||||
|
"user_last_name": "Bel",
|
||||||
|
"user_phone_number": "",
|
||||||
|
"user_status": "pending",
|
||||||
|
"user_pref_language": "en"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/users/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: DELETE'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"User created successfully. mail has been sent"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
76
API/v1/portal-management/users/PUT User.md
Normal file
76
API/v1/portal-management/users/PUT User.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# PUT User
|
||||||
|
This PUT request updates a user.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/portal-management/users/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`admin-access-admins` RW. If you are changing your own user you don't need any permissions.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| ------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| user_uuid | uuid | yes | The users unique id. |
|
||||||
|
| user_group_uuid | uuid | yes | The user-group unique id for the user. <br>*Not allowed when changing own user.* |
|
||||||
|
| user_email | email | yes | The email address of the user. |
|
||||||
|
| user_first_name | string | yes | The first name of the user. |
|
||||||
|
| user_last_name | string | yes | The last name of the user. |
|
||||||
|
| user_phone_number | string | no | The phone number of the user. |
|
||||||
|
| user_status | enum | yes | The user status of the user. Either `inactive`, `banned` or `pending`.<br>*Not allowed when changing own user.* |
|
||||||
|
| user_pref_language | enum | yes | Either `en` or `nl` |
|
||||||
|
| user_stompable | boolean | no | Makes the user stompable, related to the [stompjes](API/v1/office/stompjes/POST%20Stomp%20user.md) in the office module.<br>*Not allowed when changing own user.* |
|
||||||
|
| user_profile_change | boolean | no | Add this value to change your own profile. |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user_uuid": "3b58843c-644b-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_group_uuid": "d4cbf41b-6445-11f1-a54b-bc2411125ba4",
|
||||||
|
"user_email": "test@domain.name",
|
||||||
|
"user_first_name": "Pietje",
|
||||||
|
"user_last_name": "Bel",
|
||||||
|
"user_phone_number": "",
|
||||||
|
"user_status": "pending",
|
||||||
|
"user_pref_language": "en",
|
||||||
|
"user_stompable": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, [
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/portal-management/user-groups/',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_POST => true,
|
||||||
|
CURLOPT_POSTFIELDS => $json_payload,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'X-HTTP-Method-Override: PUT'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if ($response === false) {
|
||||||
|
echo curl_error($curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
"User successfully updated."
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
|
|
||||||
|
|
||||||
73
API/v1/servers/GET Servers.md
Normal file
73
API/v1/servers/GET Servers.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# GET Servers
|
||||||
|
This call gets all the servers data.
|
||||||
|
|
||||||
|
#### Location
|
||||||
|
```
|
||||||
|
/api/v1/servers/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Permissions required
|
||||||
|
`servers` RO.
|
||||||
|
|
||||||
|
#### Body parameters
|
||||||
|
| Parameter | Type | Required | Description |
|
||||||
|
| -------------------- | ------ | -------- | ----------- |
|
||||||
|
| builder[0][where][0] | string | no | |
|
||||||
|
| builder[0][where][1] | string | no | |
|
||||||
|
|
||||||
|
### Example Body (json)
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Example Request
|
||||||
|
```php
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $baseUrl . '/api/v1/servers/' . '?builder[0][where][0]=server_uuid&builder[0][where][1]=17779d2d-5223-11f1-8bcc-bc2411125ba4',
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HTTPHEADER => [
|
||||||
|
'Authorization: Bearer ' . $token,
|
||||||
|
'Content-Type: application/json'
|
||||||
|
]
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example Response
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"server_uuid":"17779d2d-5223-11f1-8bcc-bc2411125ba4",
|
||||||
|
"company_uuid":null,
|
||||||
|
"server_vm_id":"bc2411845cd4",
|
||||||
|
"server_vm_host_id":null,
|
||||||
|
"server_vm_host_name":"man01",
|
||||||
|
"server_vm_snapshot":0,
|
||||||
|
"server_vm_generation":null,
|
||||||
|
"server_power_state":"Running",
|
||||||
|
"server_state":"new",
|
||||||
|
"server_hostname":"man01.meteo.local",
|
||||||
|
"server_os":"AlmaLinux 10.1",
|
||||||
|
"server_cpu":2,
|
||||||
|
"server_memory":2048,
|
||||||
|
"server_memory_demand":2048,
|
||||||
|
"server_disks":"[{\"disk_name\":\"scsi0\",\"disk_space\":\"15\",\"disk_used\":\"15\",\"disk_location\":\"local-lvm:vm-100-disk-0\"}]",
|
||||||
|
"server_ipv4":"[\"10.0.0.30\"]",
|
||||||
|
"server_ipv6":"[\"\"]",
|
||||||
|
"server_licenses":"[]",
|
||||||
|
"server_backup":"[{\"proxmox\":\"yes\"}]",
|
||||||
|
"server_description":"",
|
||||||
|
"server_create_timestamp":1779044609,
|
||||||
|
"server_modified_timestamp":1781467630
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Known errors or issues.
|
||||||
|
None are known at the time
|
||||||
|
If you do encounter issues and get an http code in return, check the response codes on this page.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
# POST Create or update server
|
||||||
This API call creates a server or updates it with the given information.
|
This API call creates a server or updates it with the given information.
|
||||||
|
|
||||||
#### Location
|
#### Location
|
||||||
```
|
```
|
||||||
/api/v1/servers/
|
/api/v1/servers/
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# GET Sync cloud distributor
|
||||||
This API call synchronizes active companies in Sentri with the corresponding cloud distributor companies in Inserve. These cloud distributor companies are required to associate Sentri server licenses with companies in Inserve.
|
This API call synchronizes active companies in Sentri with the corresponding cloud distributor companies in Inserve. These cloud distributor companies are required to associate Sentri server licenses with companies in Inserve.
|
||||||
#### Location
|
#### Location
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# GET Sync companies
|
||||||
This API call retrieves all companies from Inserve and creates or updates them in Sentri.
|
This API call retrieves all companies from Inserve and creates or updates them in Sentri.
|
||||||
#### Location
|
#### Location
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# GET Sync server licenses
|
||||||
This API call first executes the [[GET Sync cloud distributor|GET Sync cloud distributor]] action and then synchronizes all servers in an active, deleted, or trial state with Inserve licenses. It creates or updates server licenses in Inserve if they do not exist or if the license quantities differ from those in Sentri.
|
This API call first executes the [[GET Sync cloud distributor|GET Sync cloud distributor]] action and then synchronizes all servers in an active, deleted, or trial state with Inserve licenses. It creates or updates server licenses in Inserve if they do not exist or if the license quantities differ from those in Sentri.
|
||||||
#### Location
|
#### Location
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# GET Sync server subscriptions
|
||||||
This API call first executes the [[GET Sync cloud distributor|GET Sync cloud distributor]] action and then synchronizes all servers in an active or trial state to Inserve subscriptions. It creates or updates server subscriptions in Inserve if they do not exist or if the subscription name differ from those in Sentri. For this action the correct inserve `product_codes` should be defined at Portal Management > Sources > Inserve > Custom source data.
|
This API call first executes the [[GET Sync cloud distributor|GET Sync cloud distributor]] action and then synchronizes all servers in an active or trial state to Inserve subscriptions. It creates or updates server subscriptions in Inserve if they do not exist or if the subscription name differ from those in Sentri. For this action the correct inserve `product_codes` should be defined at Portal Management > Sources > Inserve > Custom source data.
|
||||||
#### Location
|
#### Location
|
||||||
```
|
```
|
||||||
|
|||||||
2
Getting Started.md
Normal file
2
Getting Started.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Getting Started
|
||||||
|
After [[Installation|installing]] Sentri, it is recommended to review the initial configuration settings.
|
||||||
81
Installation.md
Normal file
81
Installation.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# Installation
|
||||||
|
This guide explains how to install Sentri on a Linux server.
|
||||||
|
## Requirements
|
||||||
|
Before continuing, make sure your server meets the following requirements:
|
||||||
|
|
||||||
|
- A Linux server (Linux is officially tested and supported)
|
||||||
|
- Basic Linux and web hosting experience
|
||||||
|
- A web server of your choice (Apache, Nginx, etc.)
|
||||||
|
- MariaDB or MySQL
|
||||||
|
- PHP 8.3 or newer
|
||||||
|
- Git installed on the server
|
||||||
|
|
||||||
|
>[!info]
|
||||||
|
>This guide uses `/var/www/sentri/` as the installation directory. You can change this to any location you prefer.
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Configure the document root
|
||||||
|
Sentri stores all publicly accessible files inside the `pub/` directory.
|
||||||
|
If your current virtual host document root is:
|
||||||
|
```
|
||||||
|
/var/www/sentri/
|
||||||
|
```
|
||||||
|
Change it to:
|
||||||
|
```
|
||||||
|
/var/www/sentri/pub/
|
||||||
|
```
|
||||||
|
After updating the document root, reload or restart your web server.
|
||||||
|
### Download the Sentri files
|
||||||
|
Run the following commands to download the latest version of Sentri:
|
||||||
|
```bash
|
||||||
|
cd /var/www/sentri/
|
||||||
|
|
||||||
|
git clone https://gitea.mooij.me/meteo/Sentri.git Sentri
|
||||||
|
|
||||||
|
mv Sentri/* .
|
||||||
|
mv Sentri/.[!.]* . 2>/dev/null
|
||||||
|
|
||||||
|
rmdir Sentri
|
||||||
|
```
|
||||||
|
### Database setup
|
||||||
|
Log in to MariaDB/MySQL and create the database and user:
|
||||||
|
```sql
|
||||||
|
CREATE DATABASE sentri;
|
||||||
|
CREATE USER 'sentri'@'localhost' IDENTIFIED BY 'your_secure_password_here';
|
||||||
|
GRANT ALL PRIVILEGES ON sentri.* TO 'sentri'@'localhost';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, import the database schema:
|
||||||
|
```bash
|
||||||
|
mariadb -u sentri -p sentri < /var/www/sentri/install.sql
|
||||||
|
```
|
||||||
|
When prompted, enter the password for the `sentri` database user.
|
||||||
|
### Configuring
|
||||||
|
Copy the example configuration file:
|
||||||
|
```bash
|
||||||
|
cp /var/www/sentri/pub/config-sample.php /var/www/sentri/pub/config.php
|
||||||
|
```
|
||||||
|
Then edit the configuration file and update the database credentials:
|
||||||
|
```
|
||||||
|
/var/www/sentri/pub/config.php
|
||||||
|
```
|
||||||
|
#### First Login
|
||||||
|
Open your website in a browser and log in with the default credentials:
|
||||||
|
```
|
||||||
|
Username: superuser
|
||||||
|
Password: changethispassword
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> After logging in change the superuser password!
|
||||||
|
#### Global settings
|
||||||
|
Go to [[Global|Global]] under Portal Management and rename the portal to your preference.
|
||||||
|
|
||||||
|
Next, configure the SMTP connection in [[Mail|Mail]] under Portal Management so Sentri can send emails.
|
||||||
|
|
||||||
|
Finally, enable the [[index#Modules|modules]] you want to use in [[Portal Management/Settings/Modules|Modules]] under Portal Management.
|
||||||
|
#### Create users and check permissions
|
||||||
|
Go to the access control and create new users. If you want you could take a look at altering the permissions.
|
||||||
|
#### Getting started
|
||||||
|
After completing the installation, continue with the [[Getting Started]] guide to configure and begin using Sentri.
|
||||||
31
Portal Management/Access Control/Admins.md
Normal file
31
Portal Management/Access Control/Admins.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Admins
|
||||||
|
Admins are users who are not tied to specific companies and are responsible for administering Sentri.
|
||||||
|
## View admin
|
||||||
|
To view admins, you need the `admin-access-admins` RO permission.
|
||||||
|
|
||||||
|
In the admins list, click the **view** icon to open an admin and see additional details.
|
||||||
|
## Add admin
|
||||||
|
To create a new admin, you need the `admin-access-admins` RW permission.
|
||||||
|
|
||||||
|
Complete the form and click **Add admin**. The admin will be created in a **Pending** state.
|
||||||
|
|
||||||
|
After creation, an invitation email is sent. The recipient must verify their account and set a password. Once completed, the admin becomes **Active**.
|
||||||
|
## Modify admin
|
||||||
|
To manage admins, you need the `admin-access-admins` RW permission.
|
||||||
|
|
||||||
|
You can edit an admin by clicking the **edit** icon in the admin list or by selecting **Edit** while viewing the admin details.
|
||||||
|
### Send password reset email
|
||||||
|
To send a password reset email, you need the `admin-access-admins-resetpassword` RW permission.
|
||||||
|
|
||||||
|
Open the admin details and click **Send password reset email** in the user management section.
|
||||||
|
### Disable two factor authentication
|
||||||
|
To disable two-factor authentication for another admin, you need the `admin-access-admins-mfa` RW permission.
|
||||||
|
|
||||||
|
Open the admin details and click **Disable two-factor authentication** in the user management section.
|
||||||
|
# Admin status
|
||||||
|
An admin can have one of the following statuses:
|
||||||
|
|
||||||
|
- **Active** – The admin is active and can log in.
|
||||||
|
- **Pending** – The admin has been created but has not yet verified their account or set a password via the invitation email.
|
||||||
|
- **Banned** – The admin is blocked due to suspicious or policy-violating behavior and cannot log in.
|
||||||
|
- **Inactive** – The admin account is disabled and cannot log in.
|
||||||
19
Portal Management/Access Control/Permissions.md
Normal file
19
Portal Management/Access Control/Permissions.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Permissions
|
||||||
|
Many actions in Sentri require specific permissions. These permissions are configured per user group and can be set to one of the following levels:
|
||||||
|
|
||||||
|
- NA (Not Available)
|
||||||
|
- RO (Read Only)
|
||||||
|
- RW (Read Write)
|
||||||
|
|
||||||
|
> [!INFO]
|
||||||
|
> The **superuser** account has RW access to all permissions by default. This behavior is intentional and cannot be changed.
|
||||||
|
## Viewing or modifying permissions
|
||||||
|
To view permissions, you need the `admin-access-control-permissions` RO permission.
|
||||||
|
|
||||||
|
To modify permissions, you need the `admin-access-control-permissions` RW permission.
|
||||||
|
> [!warning] Group weight system
|
||||||
|
> Each [User Group](Portal%20Management/Access%20Control/User%20groups.md) has its own group weight. A lower weight value indicates a higher position in the hierarchy. Meaning that even if you have `admin-access-control-permissions` RW permissions you wont be able to modify the permissions of the higher group. For more information, see [User Group Weight](Portal%20Management/Access%20Control/User%20groups.md#User%20group%20weight).
|
||||||
|
|
||||||
|
Navigate to **Access control** > **Permissions** and click the **view** icon. You will see the permission set assigned to each user group.
|
||||||
|
|
||||||
|
If you want to view or modify all permissions for a specific user group, go to **Access control** > **User groups**, then click the **view icon** next to the user group you want to view or modify. This will display the full list of permissions configured on that group.
|
||||||
20
Portal Management/Access Control/User groups.md
Normal file
20
Portal Management/Access Control/User groups.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# User groups
|
||||||
|
All users in Sentri are assigned to a user group. There are currently two types of user groups:
|
||||||
|
|
||||||
|
- **Administrator** – Users not tied to specific companies. They are responsible for administering Sentri and are created [[Admins|here]].
|
||||||
|
- **User** – Intended for future use for users linked to specific companies. This group type is not yet active in Sentri.
|
||||||
|
|
||||||
|
## User group weight
|
||||||
|
Each user group has an associated **weight**, which is used to enforce hierarchy and prevent privilege escalation.
|
||||||
|
|
||||||
|
For example, if your current user group has a weight of **10**, you cannot create or assign a user to a group with a lower weight (e.g. **1**) if that would result in higher permissions than your own. This ensures users cannot create accounts with greater access than their own.
|
||||||
|
## Adding a user group
|
||||||
|
To add a user group, you need the `admin-access-control-user-groups` RW permission.
|
||||||
|
|
||||||
|
Navigate to **Access Control** > **User groups** and click **Add user group**. Enter a name and select the group type.
|
||||||
|
|
||||||
|
After creation, you will be able to configure the group’s [[Permissions|permissions]]. To modify permissions, you also need the `admin-access-control-permissions` **RW** permission.
|
||||||
|
## Viewing user groups
|
||||||
|
To view user groups, you need the `admin-access-control-user-groups` RO permission.
|
||||||
|
|
||||||
|
Go to **Access Control** > **User groups** and click the **view icon** next to a user group. This will show detailed information about the group, including all configured [[Permissions|permissions]].
|
||||||
14
Portal Management/Settings/Global.md
Normal file
14
Portal Management/Settings/Global.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Global
|
||||||
|
## Portal name
|
||||||
|
This setting allows you to change the name of the portal.
|
||||||
|
Currently, this setting has limited functionality, but it will be used in future versions to support white-labeling.
|
||||||
|
## Portal provider name
|
||||||
|
This setting allows you to change the provider name displayed by the portal.
|
||||||
|
Currently, this setting has limited functionality, but it will also be used in future versions to support white-labeling.
|
||||||
|
## Admin authentication methods
|
||||||
|
This setting will later support multiple administrator authentication methods.
|
||||||
|
Currently, the only available option is `database_auth`.
|
||||||
|
## CA certificate URL
|
||||||
|
This URL points to the Certificate Authority (CA) certificate used by the auto-provisioning module, which is currently under development.
|
||||||
|
## Autoprovisioning URL
|
||||||
|
This URL is used by the auto-provisioning system to retrieve configuration data by the auto-provisioning module, which is currently under development..
|
||||||
25
Portal Management/Settings/Mail.md
Normal file
25
Portal Management/Settings/Mail.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Mail
|
||||||
|
To allow Sentri to send emails, you must configure the mail settings.
|
||||||
|
|
||||||
|
Sentri sends emails in the following situations:
|
||||||
|
|
||||||
|
- When a new user is created, an invitation email is sent to the user.
|
||||||
|
- When a user requests a password reset.
|
||||||
|
- When an administrator sends a password reset email.
|
||||||
|
## From Name
|
||||||
|
This is the sender name displayed in emails sent by Sentri.
|
||||||
|
## From Address
|
||||||
|
This is the email address used by Sentri to send emails.
|
||||||
|
## SMTP Server Configuration
|
||||||
|
### Host
|
||||||
|
The hostname or IP address of your SMTP server.
|
||||||
|
### Secure
|
||||||
|
Configure the security protocol used by the SMTP server.
|
||||||
|
### SMTP Port
|
||||||
|
The port used by the SMTP server.
|
||||||
|
### SMTP Authentication
|
||||||
|
Enable or disable SMTP authentication, depending on whether your SMTP server requires authentication.
|
||||||
|
### SMTP Username
|
||||||
|
The username used for SMTP authentication.
|
||||||
|
### SMTP Password
|
||||||
|
The password used for SMTP authentication.
|
||||||
7
Portal Management/Settings/Modules.md
Normal file
7
Portal Management/Settings/Modules.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Modules
|
||||||
|
Sentri allows modules to be enabled or disabled. Each module provides its own functionality, which can be viewed [[../../index|here]].
|
||||||
|
## Enabling and Disabling Modules
|
||||||
|
To enable or disable modules, navigate to **Settings** > **Modules** and toggle the modules you want to enable or disable.
|
||||||
|
|
||||||
|
> [!Note]
|
||||||
|
> The **Portal Management** module is always enabled and cannot be disabled.
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# Inserve
|
||||||
Inserve is Dutch software that helps MSPs support their customers in a personal and structured way. The connection to Inserve gives the option to sync information between Sentri and Inserve.
|
Inserve is Dutch software that helps MSPs support their customers in a personal and structured way. The connection to Inserve gives the option to sync information between Sentri and Inserve.
|
||||||
|
|
||||||
To configure the Inserve connection you need the `admin-sources` RW permissions.
|
To configure the Inserve connection you need the `admin-sources` RW permissions.
|
||||||
@@ -79,7 +80,7 @@ These are the different actions available. These actions maybe not available wit
|
|||||||
|
|
||||||
This API call retrieves all companies from Inserve and creates or updates them in Sentri.
|
This API call retrieves all companies from Inserve and creates or updates them in Sentri.
|
||||||
|
|
||||||
API Call: [[../../API/v1/sources/inserve/GET Sync companies|GET Sync companies]]
|
API Call: [[GET Sync companies|GET Sync companies]]
|
||||||
## Sync cloud distributor companies
|
## Sync cloud distributor companies
|
||||||
> [!Important]
|
> [!Important]
|
||||||
> Requires the **Servers** module to be enabled.
|
> Requires the **Servers** module to be enabled.
|
||||||
@@ -103,7 +104,7 @@ For example:
|
|||||||
```
|
```
|
||||||
The `cloud_distribution_id` is used to link licenses to the correct company during the **Sync Server Licenses** action.
|
The `cloud_distribution_id` is used to link licenses to the correct company during the **Sync Server Licenses** action.
|
||||||
|
|
||||||
API Call: [[../../API/v1/sources/inserve/GET Sync cloud distributor|GET Sync cloud distributor]]
|
API Call: [[GET Sync cloud distributor|GET Sync cloud distributor]]
|
||||||
## Sync servers licenses
|
## Sync servers licenses
|
||||||
> [!Important]
|
> [!Important]
|
||||||
> Requires the **Servers** module to be enabled.
|
> Requires the **Servers** module to be enabled.
|
||||||
@@ -112,7 +113,7 @@ API Call: [[../../API/v1/sources/inserve/GET Sync cloud distributor|GET Sync clo
|
|||||||
This API call first executes the **Sync cloud distributor companies** action and then synchronizes all servers in an active, deleted, or trial state with Inserve licenses. It creates or updates server licenses in Inserve if they do not exist or if the license quantities differ from those in Sentri.
|
This API call first executes the **Sync cloud distributor companies** action and then synchronizes all servers in an active, deleted, or trial state with Inserve licenses. It creates or updates server licenses in Inserve if they do not exist or if the license quantities differ from those in Sentri.
|
||||||
It will also only do this to server linked to an active company.
|
It will also only do this to server linked to an active company.
|
||||||
|
|
||||||
API Call: [[../../API/v1/sources/inserve/GET Sync server licenses|GET Sync server licenses]]
|
API Call: [[GET Sync server licenses|GET Sync server licenses]]
|
||||||
## Sync server subscriptions
|
## Sync server subscriptions
|
||||||
> [!Important]
|
> [!Important]
|
||||||
> Requires the **Servers** module to be enabled.
|
> Requires the **Servers** module to be enabled.
|
||||||
@@ -120,4 +121,4 @@ API Call: [[../../API/v1/sources/inserve/GET Sync server licenses|GET Sync serve
|
|||||||
|
|
||||||
This API call first executes the **Sync cloud distributor** companies action and then creates a subscription if it does not exist, or updates the subscription description if it does. It also creates subscription lines with the correct product_code entered in the **custom source data** JSON field.
|
This API call first executes the **Sync cloud distributor** companies action and then creates a subscription if it does not exist, or updates the subscription description if it does. It also creates subscription lines with the correct product_code entered in the **custom source data** JSON field.
|
||||||
|
|
||||||
API Call: [[../../API/v1/sources/inserve/GET Sync server subscriptions|GET Sync server subscriptions]]
|
API Call: [[GET Sync server subscriptions|GET Sync server subscriptions]]
|
||||||
117
Release notes.md
117
Release notes.md
@@ -1,3 +1,99 @@
|
|||||||
|
# Release notes
|
||||||
|
|
||||||
|
## v.1.3
|
||||||
|
`to be announced`
|
||||||
|
### Changes
|
||||||
|
- Rename the servers module to Inventory so it supports other things as well.
|
||||||
|
- Added CSP headers to PHP code
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Hypervisor overview.
|
||||||
|
- Network devices overview.
|
||||||
|
|
||||||
|
## v.1.2.4
|
||||||
|
`21-06-2026`
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- [e96d6b9a70](https://gitea.mooij.me/meteo/Sentri/commit/e96d6b9a70986688bfd6f71cc30fb145598eb0bf) **‼ BREAKING !!** Changed the config.php file, look at the config-sample.php to update.
|
||||||
|
- [d781078c0d](https://gitea.mooij.me/meteo/Sentri/commit/d781078c0d4d037307caaf83bb9f5409b050d70e) A lot of code cleanup and code sanitation done.
|
||||||
|
- [0b76255cfa](https://gitea.mooij.me/meteo/Sentri/commit/0b76255cfaac109e86c071dcbd98de065705c16f) security.txt added and + PGP key.
|
||||||
|
- [8b742d997c](https://gitea.mooij.me/meteo/Sentri/commit/8b742d997c14bdd136877e5645a379e22980bbcc) [229d2b4a15](https://gitea.mooij.me/meteo/Sentri/commit/229d2b4a15476d7be5e2010efc87ac22f4d39fc5) Content Security Policy (CSP) compatibility
|
||||||
|
- [6682b974a3](https://gitea.mooij.me/meteo/Sentri/commit/6682b974a33410c220c836cd0b5c3315fcbcc5f9) Server overview now shows last modified date.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- [be392b8149](https://gitea.mooij.me/meteo/Sentri/commit/be392b81499de7c9a1161fe31c981b6f4f63f763) Validation added of the `portal_uuid` when configuring mail settings and portal settings.
|
||||||
|
- [89ea170798](https://gitea.mooij.me/meteo/Sentri/commit/89ea1707988e2da3c6b1d3ade8a3d85239928104) Fixed an issue where existing subscriptions wont be updated with new licenses.
|
||||||
|
|
||||||
|
## v.1.2.3
|
||||||
|
`14-06-2026`
|
||||||
|
### Changes
|
||||||
|
- [a60ebadd60](https://gitea.mooij.me/meteo/Sentri/commit/a60ebadd601f92d062f21d39d4447ab54b7944df) Added support for the HTTP_X_HTTP_METHOD_OVERRIDE header in the API.
|
||||||
|
- [3b200d30cb](https://gitea.mooij.me/meteo/Sentri/commit/3b200d30cb3d6fb76e80e0911edd27f60db29bbf) Changed all the frontend calls from `_method` to `X-HTTP-Method-Override`.
|
||||||
|
- [b088314c38](https://gitea.mooij.me/meteo/Sentri/commit/b088314c38f8ab3c4664b1d0b0c24e598096036d) Added GET API call for group-permissions.
|
||||||
|
- [b93f4d2e9c](https://gitea.mooij.me/meteo/Sentri/commit/b93f4d2e9c68a5e0742daa509e4a89ed54fbd46d) Added GET API call for portal-settings.
|
||||||
|
- [b7dcbaf290](https://gitea.mooij.me/meteo/Sentri/commit/b7dcbaf2908b8fa4035543e72addb150bd86b049) Added GET API call for user-groups.
|
||||||
|
- [db377bcc08](https://gitea.mooij.me/meteo/Sentri/commit/db377bcc08e18dcb0f6606e9578e1198cc323e38) Added GET API call for users.
|
||||||
|
- [b227cfb2c5](https://gitea.mooij.me/meteo/Sentri/commit/b227cfb2c59c63e96dc26f3cb178b132c68f4961) Added GET API call for servers.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- [d6079878c4](https://gitea.mooij.me/meteo/Sentri/commit/d6079878c4015358426f9612e80a1e2c7a977eab) When creating an user the `user_pref_language` value is not an enum but any string. And the the user creation `user_phone_number` is now optional.
|
||||||
|
- [bc8976c18e](https://gitea.mooij.me/meteo/Sentri/commit/bc8976c18e98ad6be637f24bd5e0ef3f52d64002) API user creation does not set the `user_full_name`.
|
||||||
|
- [1374ba2f13](https://gitea.mooij.me/meteo/Sentri/commit/1374ba2f1387c3b50dafcd3578c3bf4faa8f96f9) Module enablement toggle feedback is fixed.
|
||||||
|
- [aece25439b](https://gitea.mooij.me/meteo/Sentri/commit/aece25439be70cb801cda43ad288b67a9ea2bc97) Inserve configuration API call does not longer require the obsolete `source_name` field.
|
||||||
|
- [9de2fc0ad1](https://gitea.mooij.me/meteo/Sentri/commit/9de2fc0ad14aa32ed9e36940f1137b382d04bc4e) Users are not able to change their own name.
|
||||||
|
- [c408e43283](https://gitea.mooij.me/meteo/Sentri/commit/c408e4328366ffe5b699715dfd1e0b0fd47ce5d9) SQL-Injection vulnerability in GET function resolved.
|
||||||
|
- [98d5d1cb18](https://gitea.mooij.me/meteo/Sentri/commit/98d5d1cb18d043a735fefb66de053e399c27ef0b) GET stomp API call added.
|
||||||
|
- [a7e3c54a89](https://gitea.mooij.me/meteo/Sentri/commit/a7e3c54a89672b96391c3c5894a84f4b5de6b7d0) Fixed the `ofice` typo in the permission names to `office`
|
||||||
|
|
||||||
|
## v.1.2.2
|
||||||
|
`29-05-2026`
|
||||||
|
### Changes
|
||||||
|
- Modified the API folder structure so it is structured under each module
|
||||||
|
- Changed Servers module to inventory.
|
||||||
|
- moved /api/v1/access-rights/ to /api/v1/portal-management/group-permissions/
|
||||||
|
- moved /api/v1/mailsettings/ to /api/v1/portal-management/mail/configure/
|
||||||
|
- moved /api/v1/permissions/ to /api/v1/portal-management/permissions/
|
||||||
|
- moved /api/v1/portalsettings/ to /api/v1/portal-management/configure/
|
||||||
|
- moved /api/v1/user-groups to /api/v1/portal-management/user-groups/
|
||||||
|
- moved /api/v1/devices/ to /api/v1/autop/devices/
|
||||||
|
- moved /api/v1/platforms/ to /api/v1/autop/platforms/
|
||||||
|
- moved /api/v1/vendors/ to /api/v1/autop/vendors/
|
||||||
|
- moved /api/v1/users/ to /api/v1/portal-management/users/
|
||||||
|
- moved /api/v1/users/* to /api/v1/user/*
|
||||||
|
- The /login page is now the same style as the rest of Sentri.
|
||||||
|
- Add names to API tokens.
|
||||||
|
- Apply group weight system to API token modifications.
|
||||||
|
- Created an light theme and fixed a lot of CSS issues.
|
||||||
|
### Fixes
|
||||||
|
- Issue with the companies not showing in the server overview.
|
||||||
|
- Issue with new server licenses having "0" as name.
|
||||||
|
- Fixed all the CSS errors.
|
||||||
|
## v.1.2.1
|
||||||
|
`17-05-2026`
|
||||||
|
### Features
|
||||||
|
- Send test email feature added to email settings.
|
||||||
|
### Changes
|
||||||
|
- Changed portal management page to Settings and changed System in the sidebar to Portal management.
|
||||||
|
- Renamed different database tables.
|
||||||
|
- vc_api_tokens to system_api_tokens
|
||||||
|
- vc_devices to autop_devices
|
||||||
|
- vc_permissions to system_permissions
|
||||||
|
- vc_platforms to autop_platforms
|
||||||
|
- vc_portal_settings to system_settings
|
||||||
|
- vc_user_group_permissions_portal to system_user_group_permissions
|
||||||
|
- vc_user_groups to system_user_groups
|
||||||
|
- vc_users to system_users
|
||||||
|
- vc_vendors to autop_vendors
|
||||||
|
- Display user group weight in user groups view.
|
||||||
|
- Avatar upload button is not dark anymore.
|
||||||
|
- vc_feedback table dropped.
|
||||||
|
### Fixes
|
||||||
|
- Problem with creating a user-group, it does not create the permissions for the new user group and generates a 500 error.
|
||||||
|
- Users with `admin-access-control-permissions` RW permission were able to change superuser permissions.
|
||||||
|
- non-superuser admins cannot update the permission name and description anymore.
|
||||||
|
- email settings are now saving correctly.
|
||||||
|
- Severs page wont show an json error message but will show an empty table when no servers exist.
|
||||||
|
- Sidebar text is not anymore showing when sidebar is wrapped.
|
||||||
## v.1.2
|
## v.1.2
|
||||||
`06-05-2026`
|
`06-05-2026`
|
||||||
### Features
|
### Features
|
||||||
@@ -19,26 +115,19 @@
|
|||||||
- Group view page added with the ability to view and change all the groups permissions.
|
- Group view page added with the ability to view and change all the groups permissions.
|
||||||
- View companies with connected servers.
|
- View companies with connected servers.
|
||||||
- Modified the Inserve source page so it shows all the Sync actions.
|
- Modified the Inserve source page so it shows all the Sync actions.
|
||||||
- Created this KB website and moved the release notes and roadmap to this page.
|
- Created this docs website and moved the release notes and roadmap to this page.
|
||||||
### Fixes
|
### Fixes
|
||||||
- Fixed an issue that allowed some disabled module content to be visible or accessible.
|
- Fixed an issue that allowed some disabled module content to be visible or accessible.
|
||||||
## v1.0
|
## v1.0
|
||||||
`21-12-2025`
|
`21-12-2025`
|
||||||
### Known issues
|
Initial release.
|
||||||
- Sidebar text is showing when sidebar is wrapped.
|
|
||||||
- Problem with sorting backups types in the server overview
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
- Be able to configure sources for certain tasks
|
- Docker container.
|
||||||
- More configuration options for sources.
|
- Use of CDN's for CSS and other static content.
|
||||||
- Make the /login page the same style as the rest of Sentri.
|
## Roadmap features
|
||||||
- Light mode theme.
|
|
||||||
- Travel cost page.
|
|
||||||
- VM hosts overview.
|
|
||||||
- Add name to API tokens.
|
|
||||||
- Loggin of actions to local storage or to things such as graylog.
|
|
||||||
- SSO/SAML/User provisioning.
|
- SSO/SAML/User provisioning.
|
||||||
|
- Logging of actions with syslog.
|
||||||
|
- Travel cost page.
|
||||||
## v0.1
|
## v0.1
|
||||||
`23-12-2024`
|
`23-12-2024`
|
||||||
|
|
||||||
- Start of this project
|
- Start of this project
|
||||||
BIN
assets/images/favicon.ico
Normal file
BIN
assets/images/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -11,7 +11,7 @@
|
|||||||
--md-default-fg-color--light: #EBDBB2;
|
--md-default-fg-color--light: #EBDBB2;
|
||||||
|
|
||||||
--md-typeset-color: #D5C4A1;
|
--md-typeset-color: #D5C4A1;
|
||||||
--md-typeset-a-color: #fe8019;
|
--md-typeset-a-color: #83a598;
|
||||||
|
|
||||||
|
|
||||||
--md-code-fg-color: hsla(40, 38%, 73%, 1);
|
--md-code-fg-color: hsla(40, 38%, 73%, 1);
|
||||||
@@ -50,6 +50,41 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.md-typeset h1 {
|
||||||
|
color: #fb4934;
|
||||||
|
margin: 0.9em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h2 {
|
||||||
|
color: #fe8019;
|
||||||
|
margin: 0.7em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h3 {
|
||||||
|
color: #b8bb26;
|
||||||
|
margin: 0.5em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h4 {
|
||||||
|
color: #689d6a;
|
||||||
|
margin: 0.3em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h5{
|
||||||
|
color: #458588;
|
||||||
|
margin: 0.3em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset h6 {
|
||||||
|
color: #d3869b;
|
||||||
|
margin: 0.3em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset p {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-top: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
.md-typeset .admonition.info,
|
.md-typeset .admonition.info,
|
||||||
.md-typeset details.info {
|
.md-typeset details.info {
|
||||||
border-color: #458588;
|
border-color: #458588;
|
||||||
|
|||||||
42
index.md
42
index.md
@@ -1,8 +1,42 @@
|
|||||||
# Welcome to the Sentri wiki!
|
# Welcome to the Sentri docs!
|
||||||
|
>[!note]
|
||||||
|
>The making of the this documentation is still in progress.
|
||||||
|
# What is Sentri
|
||||||
|
Sentri is a self-hosted web application built as a modular system. Each module provides a specific feature or solves a particular use case, and was created from practical needs encountered throughout my career as a system and network administrator. Instead of relying on multiple separate services or portals for smaller operational tasks, Sentri centralizes them into a single platform.
|
||||||
|
|
||||||
The making of the this documentation is still in progress.
|
Its modular structure keeps the platform lightweight and flexible by allowing you to enable only the components you actually use. Sentri is open-source, performance-focused, and designed to remain minimal and simple. Because Sentri is fully self-hosted, all data remains under your control without depending on third-party providers.
|
||||||
|
|
||||||
This wiki explains how Sentri works. If anything is missing or unclear in this documentation, please let me know.
|
*Sentri is released under the Apache License, Version 2.0.*
|
||||||
|
# Modules
|
||||||
|
Sentri includes these modules that can be enabled or disabled at any time, so you only see and use the functionality you need.
|
||||||
|
## Module: Portal Management
|
||||||
|
Always enabled. This module is used to manage Sentri’s core settings and configuration. Its also used to configure different sources.
|
||||||
|
## Module: Customers
|
||||||
|
This module is used to store companies from your CRM inside Sentri, allowing you to link them to items across different modules.
|
||||||
|
|
||||||
Documentation written by Marco Mooij
|
The following CRM customer sources are currently available:
|
||||||
|
|
||||||
|
- [[Inserve|Inserve]]
|
||||||
|
## Module: Office
|
||||||
|
This module currently provides a feature that lets you “stomp” a colleague. It can be used to keep track of things such as counting your mom jokes or other actions between team members. These events are counted and visualized through a simple graph.
|
||||||
|
## Module: Servers
|
||||||
|
The Servers module is designed to help you keep track of all servers you manage. It centralizes key information such as assigned resources, configured backups, used licenses, and more.
|
||||||
|
|
||||||
|
This data can be pushed to Sentri via [[API/v1/servers/POST Create or update server|this API endpoint]] using your own scripts or automation.
|
||||||
|
|
||||||
|
Once centralized, server information can be shared with external sources, such as:
|
||||||
|
|
||||||
|
- [[Inserve|Inserve]]
|
||||||
|
- Automatically creates and updates cloud distributor licenses for invoicing
|
||||||
|
- Automatically creates and updates subscriptions for invoicing
|
||||||
|
## Module: Autoprovisioning
|
||||||
|
> [!Note]
|
||||||
|
> This module is under contruction and far from complete
|
||||||
|
|
||||||
|
The Autoprovisioning module is used to manage configuration settings for devices such as Yealink phones. Full device configurations are generated dynamically when requested through Yealink autoprovisioning. This makes the configuring of Yealink phones extremly flexible.
|
||||||
|
# Getting Started
|
||||||
|
You can find the installation guide [[Installation|here]].
|
||||||
|
|
||||||
|
To get started, follow [[Getting Started|this guide]].
|
||||||
|
# Sources
|
||||||
|
Sentri allows external data sources to integrate and synchronize information into and out of the the system. Currently, [[Portal Management/Settings/Sources/Inserve|Inserve]] is the only supported source. When the time and need comes additional sources will be added.
|
||||||
Reference in New Issue
Block a user