curl --request POST \
--url https://api.openworklabs.com/v1/remote-sessions/attach \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/remote-sessions/attach"
payload = {
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({computerId: '<string>', workspaceId: '<string>', sessionId: '<string>'})
};
fetch('https://api.openworklabs.com/v1/remote-sessions/attach', 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.openworklabs.com/v1/remote-sessions/attach",
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([
'computerId' => '<string>',
'workspaceId' => '<string>',
'sessionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.openworklabs.com/v1/remote-sessions/attach"
payload := strings.NewReader("{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.post("https://api.openworklabs.com/v1/remote-sessions/attach")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/remote-sessions/attach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"target": "desktop",
"state": "queued",
"commandId": "<string>",
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"retryable": true
}{
"error": "<string>",
"message": "<string>",
"retryable": true
}Attach to a session started on one of the member's computers
Makes a session that was started on one of the member’s own computers reachable from other devices, like one started remotely. The organization’s ceiling and that computer’s owner must both allow every session; otherwise 409 session_access_denied and nothing is queued. Returns state attached with the commandId that already reaches the session, or queued with a commandId to follow through status until the computer has attached. Repeating the call returns the same command. Other refusals: 404 unknown_computer (not one of the member’s computers), 409 desktop_update_required, 503 desktop_offline. Same result as the remote-session:attach capability. Requires the remoteSessionAccess feature.
curl --request POST \
--url https://api.openworklabs.com/v1/remote-sessions/attach \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/remote-sessions/attach"
payload = {
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({computerId: '<string>', workspaceId: '<string>', sessionId: '<string>'})
};
fetch('https://api.openworklabs.com/v1/remote-sessions/attach', 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.openworklabs.com/v1/remote-sessions/attach",
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([
'computerId' => '<string>',
'workspaceId' => '<string>',
'sessionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.openworklabs.com/v1/remote-sessions/attach"
payload := strings.NewReader("{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.post("https://api.openworklabs.com/v1/remote-sessions/attach")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/remote-sessions/attach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"computerId\": \"<string>\",\n \"workspaceId\": \"<string>\",\n \"sessionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"target": "desktop",
"state": "queued",
"commandId": "<string>",
"computerId": "<string>",
"workspaceId": "<string>",
"sessionId": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"retryable": true
}{
"error": "<string>",
"message": "<string>",
"retryable": true
}Authorizations
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Body
Response
The session is attached, or the attach is queued.
"desktop"queued, attached 1601601 - 2401 - 240^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$Was this page helpful?