curl --request PATCH \
--url https://api.dock.us/{version}/workspaces/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"startDate": "2025-06-15",
"actualEndDate": "2025-09-30",
"targetEndDate": "2025-08-31",
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"value": "Enterprise"
},
{
"id": "PkT2mVq81xLc",
"value": [
"Option A",
"Option B"
]
}
]
}
'import requests
url = "https://api.dock.us/{version}/workspaces/{id}"
payload = {
"startDate": "2025-06-15",
"actualEndDate": "2025-09-30",
"targetEndDate": "2025-08-31",
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"value": "Enterprise"
},
{
"id": "PkT2mVq81xLc",
"value": ["Option A", "Option B"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
startDate: '2025-06-15',
actualEndDate: '2025-09-30',
targetEndDate: '2025-08-31',
customFields: [
{id: 'RiHO4e0Ju3DS', value: 'Enterprise'},
{id: 'PkT2mVq81xLc', value: ['Option A', 'Option B']}
]
})
};
fetch('https://api.dock.us/{version}/workspaces/{id}', 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.dock.us/{version}/workspaces/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'startDate' => '2025-06-15',
'actualEndDate' => '2025-09-30',
'targetEndDate' => '2025-08-31',
'customFields' => [
[
'id' => 'RiHO4e0Ju3DS',
'value' => 'Enterprise'
],
[
'id' => 'PkT2mVq81xLc',
'value' => [
'Option A',
'Option B'
]
]
]
]),
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.dock.us/{version}/workspaces/{id}"
payload := strings.NewReader("{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.dock.us/{version}/workspaces/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dock.us/{version}/workspaces/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"workspace": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"workspaceUsers": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "workspace-user",
"url": "https://api.dock.us/v1/workspace-users/RiHO4e0Ju3DS",
"role": "owner",
"user": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "user",
"url": "https://api.dock.us/v1/users/RiHO4e0Ju3DS",
"firstName": "John",
"lastName": "Doe",
"avatar": "https://dock.us/avatar.png",
"email": "john.doe@example.com",
"name": "John Doe"
}
}
],
"workspaceDomains": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "workspace-domain",
"url": "https://api.dock.us/v1/workspace-domains/RiHO4e0Ju3DS",
"role": "owner",
"domain": "dock.us"
}
],
"account": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "account",
"url": "https://api.dock.us/v1/accounts/RiHO4e0Ju3DS",
"name": "Dock",
"website": "https://dock.us",
"ownerId": "RiHO4e0Ju3DS",
"logo": "https://dock.us/logo.png",
"salesforceAccountId": "0015f00000Bg59dAAB",
"hubspotCompanyId": "8662045446"
},
"object": "workspace",
"url": "https://api.dock.us/v1/workspaces/RiHO4e0Ju3DS",
"name": "Customer Onboarding",
"workspaceUrl": "https://acme.dock.us/customer-onboarding-vRQgIvscHAiO",
"templateId": "RiHO4e0Ju3DS",
"startDate": "2024-01-01",
"targetEndDate": "2024-01-01",
"actualEndDate": "2024-01-01",
"projectAge": 100,
"taskProgress": "50",
"lastContactView": "2024-01-01T00:00:00Z",
"totalViews": 100,
"totalActions": 100,
"totalTimeSpent": 100,
"contactsCount": 100,
"deal": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"hubspotDealId": "1234567890",
"object": "deal",
"url": "https://api.dock.us/v1/deals/RiHO4e0Ju3DS",
"createdDate": "2024-01-01T00:00:00Z",
"closeDate": "2024-01-01T00:00:00Z",
"name": "Deal 1",
"amount": "100000",
"type": "New Business",
"stage": "Proposal Sent"
},
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "custom-field",
"url": "https://api.dock.us/v1/custom-fields/RiHO4e0Ju3DS",
"variableName": "account.name",
"type": "singleCheckbox",
"options": [
{
"index": 1,
"label": "Yes",
"value": "true"
}
],
"value": "Yes"
}
]
}
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "The request could not be understood or was missing required parameters"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Access denied. You are not authorized to access this resource"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Access to this resource is restricted"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "The requested resource could not be found"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please try again later"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "The server has encountered a situation it does not know how to handle"
}
}Update a workspace
Update a workspace by ID
curl --request PATCH \
--url https://api.dock.us/{version}/workspaces/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"startDate": "2025-06-15",
"actualEndDate": "2025-09-30",
"targetEndDate": "2025-08-31",
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"value": "Enterprise"
},
{
"id": "PkT2mVq81xLc",
"value": [
"Option A",
"Option B"
]
}
]
}
'import requests
url = "https://api.dock.us/{version}/workspaces/{id}"
payload = {
"startDate": "2025-06-15",
"actualEndDate": "2025-09-30",
"targetEndDate": "2025-08-31",
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"value": "Enterprise"
},
{
"id": "PkT2mVq81xLc",
"value": ["Option A", "Option B"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
startDate: '2025-06-15',
actualEndDate: '2025-09-30',
targetEndDate: '2025-08-31',
customFields: [
{id: 'RiHO4e0Ju3DS', value: 'Enterprise'},
{id: 'PkT2mVq81xLc', value: ['Option A', 'Option B']}
]
})
};
fetch('https://api.dock.us/{version}/workspaces/{id}', 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.dock.us/{version}/workspaces/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'startDate' => '2025-06-15',
'actualEndDate' => '2025-09-30',
'targetEndDate' => '2025-08-31',
'customFields' => [
[
'id' => 'RiHO4e0Ju3DS',
'value' => 'Enterprise'
],
[
'id' => 'PkT2mVq81xLc',
'value' => [
'Option A',
'Option B'
]
]
]
]),
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.dock.us/{version}/workspaces/{id}"
payload := strings.NewReader("{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.dock.us/{version}/workspaces/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dock.us/{version}/workspaces/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"startDate\": \"2025-06-15\",\n \"actualEndDate\": \"2025-09-30\",\n \"targetEndDate\": \"2025-08-31\",\n \"customFields\": [\n {\n \"id\": \"RiHO4e0Ju3DS\",\n \"value\": \"Enterprise\"\n },\n {\n \"id\": \"PkT2mVq81xLc\",\n \"value\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"workspace": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"workspaceUsers": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "workspace-user",
"url": "https://api.dock.us/v1/workspace-users/RiHO4e0Ju3DS",
"role": "owner",
"user": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "user",
"url": "https://api.dock.us/v1/users/RiHO4e0Ju3DS",
"firstName": "John",
"lastName": "Doe",
"avatar": "https://dock.us/avatar.png",
"email": "john.doe@example.com",
"name": "John Doe"
}
}
],
"workspaceDomains": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "workspace-domain",
"url": "https://api.dock.us/v1/workspace-domains/RiHO4e0Ju3DS",
"role": "owner",
"domain": "dock.us"
}
],
"account": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "account",
"url": "https://api.dock.us/v1/accounts/RiHO4e0Ju3DS",
"name": "Dock",
"website": "https://dock.us",
"ownerId": "RiHO4e0Ju3DS",
"logo": "https://dock.us/logo.png",
"salesforceAccountId": "0015f00000Bg59dAAB",
"hubspotCompanyId": "8662045446"
},
"object": "workspace",
"url": "https://api.dock.us/v1/workspaces/RiHO4e0Ju3DS",
"name": "Customer Onboarding",
"workspaceUrl": "https://acme.dock.us/customer-onboarding-vRQgIvscHAiO",
"templateId": "RiHO4e0Ju3DS",
"startDate": "2024-01-01",
"targetEndDate": "2024-01-01",
"actualEndDate": "2024-01-01",
"projectAge": 100,
"taskProgress": "50",
"lastContactView": "2024-01-01T00:00:00Z",
"totalViews": 100,
"totalActions": 100,
"totalTimeSpent": 100,
"contactsCount": 100,
"deal": {
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"hubspotDealId": "1234567890",
"object": "deal",
"url": "https://api.dock.us/v1/deals/RiHO4e0Ju3DS",
"createdDate": "2024-01-01T00:00:00Z",
"closeDate": "2024-01-01T00:00:00Z",
"name": "Deal 1",
"amount": "100000",
"type": "New Business",
"stage": "Proposal Sent"
},
"customFields": [
{
"id": "RiHO4e0Ju3DS",
"updatedAt": "2021-01-01T00:00:00.000Z",
"createdAt": "2021-01-01T00:00:00.000Z",
"object": "custom-field",
"url": "https://api.dock.us/v1/custom-fields/RiHO4e0Ju3DS",
"variableName": "account.name",
"type": "singleCheckbox",
"options": [
{
"index": 1,
"label": "Yes",
"value": "true"
}
],
"value": "Yes"
}
]
}
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "The request could not be understood or was missing required parameters"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Access denied. You are not authorized to access this resource"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Access to this resource is restricted"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "The requested resource could not be found"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please try again later"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "The server has encountered a situation it does not know how to handle"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Unique identifier
"RiHO4e0Ju3DS"
Query Parameters
Select the workspace properties that should be returned
accountId, name, workspaceUrl, templateId, startDate, targetEndDate, actualEndDate, projectAge, taskProgress, lastContactView, totalViews, totalActions, totalTimeSpent, contactsCount, account.name, account.website, account.ownerId, account.logo, account.salesforceAccountId, account.hubspotCompanyId, account.createdAt, account.updatedAt, customFields.name, customFields.type, customFields.variableName, customFields.value, workspaceDomains.domain, workspaceDomains.role, workspaceDomains.createdAt, workspaceDomains.updatedAt, workspaceUsers.role, workspaceUsers.createdAt, workspaceUsers.updatedAt, workspaceUsers.user.firstName, workspaceUsers.user.lastName, workspaceUsers.user.avatar, workspaceUsers.user.email, workspaceUsers.user.name, workspaceUsers.user.createdAt, workspaceUsers.user.updatedAt, deal.name, deal.amount, deal.closeDate, deal.createdDate, deal.type, deal.stage, deal.hubspotDealId, deal.salesforceOpportunityId Body
The start date of the workspace in YYYY-MM-DD format, or null to remove the date
"2025-06-15"
The actual end date of the workspace in YYYY-MM-DD format, or null to remove the date
"2025-09-30"
The target end date of the workspace in YYYY-MM-DD format, or null to remove the date
"2025-08-31"
Custom fields to update. Only the fields included in this array are modified; omitted fields remain unchanged. For multiple-checkbox fields, the supplied value replaces the field's currently selected options.
- Single-line text
- Multi-line text
- Rich text
- Date
- Number
- Single checkbox
- Multiple checkboxes
- Dropdown select
- Radio select
Show child attributes
Show child attributes
[
{
"id": "RiHO4e0Ju3DS",
"value": "Enterprise"
},
{
"id": "PkT2mVq81xLc",
"value": ["Option A", "Option B"]
}
]
Response
Workspace updated
Show child attributes
Show child attributes