curl --request PUT \
--url https://pria.praxislxp.com/api/user/institutionJoin \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"institution": "60d5ec49f1b2c72b9c8e4d3a",
"referrer": "60d5ec49f1b2c72b9c8e4d3b",
"joinId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
'import requests
url = "https://pria.praxislxp.com/api/user/institutionJoin"
payload = {
"institution": "60d5ec49f1b2c72b9c8e4d3a",
"referrer": "60d5ec49f1b2c72b9c8e4d3b",
"joinId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
institution: '60d5ec49f1b2c72b9c8e4d3a',
referrer: '60d5ec49f1b2c72b9c8e4d3b',
joinId: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
})
};
fetch('https://pria.praxislxp.com/api/user/institutionJoin', 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://pria.praxislxp.com/api/user/institutionJoin",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'institution' => '60d5ec49f1b2c72b9c8e4d3a',
'referrer' => '60d5ec49f1b2c72b9c8e4d3b',
'joinId' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://pria.praxislxp.com/api/user/institutionJoin"
payload := strings.NewReader("{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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.put("https://pria.praxislxp.com/api/user/institutionJoin")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/institutionJoin")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"ui": {
"_id": "<string>",
"user": "<string>",
"institution": "<string>",
"accountType": "super",
"referrer": "<string>",
"status": "active",
"creditAwarded": 123,
"creditAwardedDate": "2023-11-07T05:31:56Z"
},
"message": "Joined successfully"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"code": "join_not_allowed",
"message": "This Digital Twin is not open for joining. Ask its administrator for an invitation."
}{
"success": false,
"message": "<string>"
}Join an institution
Joins the caller to a Digital Twin. Two ways in: the twin is open to the caller (it is offered by POST /api/user/availableInstitutions), or the request carries the twin’s invite code in joinId. When referrer is the caller the membership is active at once. When referrer is someone else (an invitation link) joinId is required, the referrer must be allowed to add members to that twin, the membership is created pending and an email asks the referrer to approve it. If the caller already has a membership for the twin, the existing record is returned and nothing changes. A twin’s join credit award, where one is configured, is paid once per person, when the membership becomes active.
curl --request PUT \
--url https://pria.praxislxp.com/api/user/institutionJoin \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"institution": "60d5ec49f1b2c72b9c8e4d3a",
"referrer": "60d5ec49f1b2c72b9c8e4d3b",
"joinId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
'import requests
url = "https://pria.praxislxp.com/api/user/institutionJoin"
payload = {
"institution": "60d5ec49f1b2c72b9c8e4d3a",
"referrer": "60d5ec49f1b2c72b9c8e4d3b",
"joinId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
institution: '60d5ec49f1b2c72b9c8e4d3a',
referrer: '60d5ec49f1b2c72b9c8e4d3b',
joinId: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
})
};
fetch('https://pria.praxislxp.com/api/user/institutionJoin', 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://pria.praxislxp.com/api/user/institutionJoin",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'institution' => '60d5ec49f1b2c72b9c8e4d3a',
'referrer' => '60d5ec49f1b2c72b9c8e4d3b',
'joinId' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://pria.praxislxp.com/api/user/institutionJoin"
payload := strings.NewReader("{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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.put("https://pria.praxislxp.com/api/user/institutionJoin")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/institutionJoin")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"institution\": \"60d5ec49f1b2c72b9c8e4d3a\",\n \"referrer\": \"60d5ec49f1b2c72b9c8e4d3b\",\n \"joinId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"ui": {
"_id": "<string>",
"user": "<string>",
"institution": "<string>",
"accountType": "super",
"referrer": "<string>",
"status": "active",
"creditAwarded": 123,
"creditAwardedDate": "2023-11-07T05:31:56Z"
},
"message": "Joined successfully"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"code": "join_not_allowed",
"message": "This Digital Twin is not open for joining. Ask its administrator for an invitation."
}{
"success": false,
"message": "<string>"
}Authorizations
JWT token passed in x-access-token header
Body
The institution ObjectId to join
"60d5ec49f1b2c72b9c8e4d3a"
The referrer user ObjectId. If different from the current user, the membership is set to pending and requires approval.
"60d5ec49f1b2c72b9c8e4d3b"
The twin's invite code, from an invitation link or typed by the person. Required when referrer is not the caller, and when the twin is not open to the caller.
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Was this page helpful?