curl --request POST \
--url https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"permissions": [
{
"id": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}
'import requests
url = "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions"
payload = { "permissions": [
{
"id": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({permissions: [{id: '<string>', expires_at: '2023-11-07T05:31:56Z'}]})
};
fetch('https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'permissions' => [
[
'id' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions"
payload := strings.NewReader("{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"user_id": "<string>",
"pseudo": "<string>",
"phone_number": "<string>",
"email": "<string>",
"is_active": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"errors": {}
}Set member extra permissions
Replaces the extra permissions granted directly to a client member, each optionally with an expiry.
curl --request POST \
--url https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"permissions": [
{
"id": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}
'import requests
url = "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions"
payload = { "permissions": [
{
"id": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({permissions: [{id: '<string>', expires_at: '2023-11-07T05:31:56Z'}]})
};
fetch('https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'permissions' => [
[
'id' => '<string>',
'expires_at' => '2023-11-07T05:31:56Z'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions"
payload := strings.NewReader("{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/team/member-clients/{memberId}/add-permissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"permissions\": [\n {\n \"id\": \"<string>\",\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"user_id": "<string>",
"pseudo": "<string>",
"phone_number": "<string>",
"email": "<string>",
"is_active": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"errors": {}
}user_clients.update
Conditions
- permissions must be present (an empty list is allowed) with at most 5 entries.
- Each id must be the group identifier of a permission that exists for the client space, without duplicates; otherwise the call is refused.
- expires_at, when sent, must be a date later than now.
- The call replaces the whole set of direct permissions the user holds in the client space: permissions not listed are removed, and an empty list removes them all.
- The member’s profile assignments and active state are not changed.
- Each permission applies until its expires_at when given.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Identifier of the member, meaning the membership record of the person in the company or client space, not the user identifier (27-character KSUID string).
Query Parameters
Response mode. Default none; none answers 204 No Content.
none, resource Comma-separated JSON keys of the root resource (id is always rendered). Available: id, user_id, pseudo, phone_number, email, is_active, created_at, updated_at.
Comma-separated include paths, each optionally followed by its fields in parentheses: units(id,sku),units.uomUnit(id,name). Max depth 6, max 40 paths. Available: .
Body
Complete list of extra permissions to set. Required but may be empty, with at most 5 entries. It replaces the extra permissions held until now.
5Show child attributes
Show child attributes
Response
Resource (only with response=resource).
Identifier of the membership record (27-character KSUID string); this is what the {member} path parameters expect.
Identifier of the user account behind the member (27-character KSUID string).
Display name of the member in this space; unique within it, ignoring case. May be null when none was set.
Phone number of the underlying account; null when the account has none.
Email address of the underlying account; null when the account has none.
Whether the member can act in this space. Deactivated members keep their record.
Date and time the record was created (ISO 8601, UTC).
Date and time the record was last changed (ISO 8601, UTC).