Workplace API
Retrieve a list of team settings or a specific team setting by ID, with optional filter for external ID.
Optional ID of the location to retrieve relative settings.
Optional ID of the team to retrieve settings for.
Optional external ID to filter team settings (matches team's external_id).
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by.
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/team/settings HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"team_settings": [
{
"_id": "team-setting-1",
"team_id": "team-1",
"external_id": "ext-456",
"settings": {
"team_name": "Accounting",
"details": {
"priority": "high"
}
}
},
{
"_id": "team-setting-2",
"team_id": "team-2",
"external_id": "ext-789",
"settings": {
"team_name": "Planning",
"details": {
"priority": "medium"
}
}
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 25
},
"total_results": 20
}
},
"identifier": "get_team_settings_successful"
}
Update multiple existing team settings.
OK
Bad Request
Not Found
PUT /workplace/v1/team/settings HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 304
{
"team_settings": [
{
"_id": "team-setting-1",
"team_id": "team-1",
"external_id": "ext-456",
"settings": {
"team_name": "Accounting Updated",
"details": {
"priority": "high"
}
}
},
{
"_id": "team-setting-2",
"team_id": "team-2",
"external_id": "ext-789",
"settings": {
"team_name": "Planning Updated",
"details": {
"priority": "low"
}
}
}
]
}
{
"success": true,
"data": {
"team_settings": [
{
"_id": "team-setting-1",
"team_id": "team-1",
"external_id": "ext-456",
"settings": {
"team_name": "Accounting Updated",
"details": {
"priority": "high"
}
}
},
{
"_id": "team-setting-2",
"team_id": "team-2",
"external_id": "ext-789",
"settings": {
"team_name": "Planning Updated",
"details": {
"priority": "low"
}
}
}
]
},
"identifier": "update_team_settings_successful"
}
Create one or more occupancy records. Idempotent on (people_id, location_id, seen_at).
ID of the associated location.
Created
Bad Request
POST /workplace/v1/occupancy HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 134
{
"location_id": "68824ca5369c856b7c670510",
"occupancy": [
{
"people_id": "68820a4b5d11a0df2ce7a5ec",
"seen_at": "2025-07-24T10:26:19.403Z"
}
]
}
{
"success": true,
"data": {
"info": "Forecasting will be processed at midnight tonight. Trigger manually to force results before.",
"occupancy": [
{
"_id": "689a1e70aa952e3ae432af9f",
"seen_at": "2025-07-24T10:26:19.403Z",
"location_id": "68824ca5369c856b7c670510",
"people_id": "68820a4b5d11a0df2ce7a5ec",
"occupancy_id": "689a1e70aa952e3ae432af9f"
}
]
},
"identifier": "post_occupancy_successful"
}
Retrieve occupancy records with optional filters by ID, location, person, and time range.
Filter by a specific occupancy document ID.
Filter by Location ID.
Filter by People ID.
Start (inclusive) of UTC range filter. ISO 8601 with Z
.
End (inclusive) of UTC range filter. ISO 8601 with Z
.
Number of items to skip.
0
Max items to return.
25
Field to sort by (e.g., created_at
, seen_at
, people_id
).
created_at
Sort order.
asc
Possible values: OK
Bad Request
GET /workplace/v1/occupancy HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"occupancy": [
{
"_id": "689a24dd895c4e7f86584013",
"seen_at": "2025-07-24T10:26:19.403Z",
"location_id": "68824ca5369c856b7c670510",
"people_id": "68820a4b5d11a0df2ce7a5ec",
"created_at": "2025-08-11T17:14:05.257Z",
"updated_at": "2025-08-11T17:14:05.257Z",
"occupancy_id": "689a24dd895c4e7f86584013"
}
]
},
"pagination": {
"current_results": {
"from": 0,
"to": 10
},
"total_results": 1
},
"identifier": "get_occupancy_successful"
}
Soft-delete occupancy records that match the filters. Only location_id
is required.
Location to scope the deletion.
Optional person filter.
Start (inclusive) of UTC range filter. ISO 8601 with Z
.
End (inclusive) of UTC range filter. ISO 8601 with Z
.
OK
Bad Request
DELETE /workplace/v1/occupancy HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 215
{
"location_id": "68824ca5369c856b7c670510",
"people_id": "68820a4b5d11a0df2ce7a5ec",
"starts_at": "2025-07-24T10:26:19.000Z",
"ends_at": "2025-07-24T10:26:20.000Z",
"occupancy": [
{
"occupancy_id": "689a1de649861b4b2f23868e"
}
]
}
{
"success": true,
"data": {
"info": "Forecasting will be processed at midnight tonight. Trigger manually to force results before.",
"deleted": 1
},
"identifier": "delete_occupancy_successful"
}
Trigger forecasting for a location over an optional date range.
Unique identifier of the location to forecast.
68824ca5369c856b7c670510
(Optional) Inclusive start date (YYYY-MM-DD).
2025-06-20
(Optional) Inclusive end date (YYYY-MM-DD).
2025-07-31
Force a rebuild even if recent results exist.
false
Forecast job created/queued
POST /workplace/v1/forecast/start HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 112
{
"location_id": "68824ca5369c856b7c670510",
"starts_at": "2025-06-20",
"ends_at": "2025-07-31",
"force_rebuild": false
}
Forecast job created/queued
{
"success": true,
"data": {
"location_id": "68824ca5369c856b7c670510",
"status": "queued",
"note": "Queued for processing",
"created_at": "2025-08-11T14:44:14.312Z",
"updated_at": "2025-08-11T14:44:14.312Z",
"job_id": "689a01bde5c540bb57b0730b"
},
"identifier": "start_forecast_successful"
}
Get forecasting job status (supports filtering and pagination).
Filter by a specific forecast job ID returned by /forecast/start.
689a01bde5c540bb57b0730b
Filter by location ID.
68824ca5369c856b7c670510
Filter jobs created on/after this date (YYYY-MM-DD).
Filter jobs created on/before this date (YYYY-MM-DD).
Number of items to skip (pagination).
0
Maximum number of items to return.
25
Sort field.
created_at
Possible values: Sort order.
asc
Possible values: Forecast job status list
GET /workplace/v1/forecast/status HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
Forecast job status list
{
"success": true,
"data": {
"forecast_jobs": [
{
"_id": "689a01bde5c540bb57b0730b",
"location_id": "68824ca5369c856b7c670510",
"status": "queued",
"note": "Queued for processing",
"job_id": "689a01bde5c540bb57b0730b",
"created_at": "2025-08-11T14:44:14.312Z",
"updated_at": "2025-08-11T14:44:14.312Z"
}
]
},
"pagination": {
"current_results": {
"from": 0,
"to": 1
},
"total_results": 1
},
"identifier": "get_forecast_job_successful"
}
Retrieve a list of location forecasts with optional location_id filter and pagination.
Filter by Location ID (can be multiple).
Start date-time in UTC for filtering forecasts.
End date-time in UTC for filtering forecasts.
Timezone of the location. When provided, starts_at
and ends_at
are interpreted in this timezone. Must be a valid IANA Time Zone identifier.
Europe/London
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by (e.g., starts_at).
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/forecast/locations HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"forecast": [
{
"location_id": "text",
"starts_at": "2025-08-27T02:20:55.167Z",
"ends_at": "2025-08-27T02:20:55.167Z",
"forecasted_desks": 1,
"forecasted_rooms": 1,
"forecasted_total": 1,
"forecasted_desks_inc": 1,
"forecasted_rooms_inc": 1,
"forecasted_total_inc": 1
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 1
},
"total_results": 1
}
},
"identifier": "text"
}
Retrieve a list of team forecasts with optional location_id and team_id filters and pagination.
Filter by Location ID (can be multiple).
Filter by Team ID (can be multiple).
Start date-time in UTC for filtering forecasts.
End date-time in UTC for filtering forecasts.
Timezone of the location. When provided, starts_at
and ends_at
are interpreted in this timezone. Must be a valid IANA Time Zone identifier.
Europe/London
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by (e.g., starts_at).
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/forecast/teams HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"forecast": [
{
"team_id": "text",
"starts_at": "2025-08-27T02:20:55.167Z",
"ends_at": "2025-08-27T02:20:55.167Z",
"location_id": "text",
"forecasted_desks": 1,
"forecasted_rooms": 1,
"forecasted_total": 1,
"forecasted_desks_inc": 1,
"forecasted_rooms_inc": 1,
"forecasted_total_inc": 1
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 1
},
"total_results": 1
}
},
"identifier": "text"
}
Retrieve a list of people forecasts with optional location_id, people_id, and team_id filters and pagination.
Filter by Location ID (can be multiple).
Filter by People ID (can be multiple).
Filter by Team ID (can be multiple).
Start date-time in UTC for filtering forecasts.
End date-time in UTC for filtering forecasts.
Timezone of the location. When provided, starts_at
and ends_at
are interpreted in this timezone. Must be a valid IANA Time Zone identifier.
Europe/London
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by (e.g., starts_at).
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/forecast/people HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"forecast": [
{
"people_id": "text",
"starts_at": "2025-08-27T02:20:55.167Z",
"ends_at": "2025-08-27T02:20:55.167Z",
"location_id": "text",
"team_id": "text",
"forecasted_desk": 1,
"forecasted_room": 1,
"forecasted_total": 1
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 1
},
"total_results": 1
}
},
"identifier": "text"
}
Trigger location AI evolution
Unique identifier of the location.
68824ca5369c856b7c670510
Date for the evolution in YYYY-MM-DD format.
2025-08-08
Successful response
POST /workplace/v1/evolve/start HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 114
{
"location_id": "68824ca5369c856b7c670510",
"date": "2025-08-08",
"settings": {
"disruption": "MIN",
"run_by_zone": false
}
}
Successful response
{
"success": true,
"data": {
"evolution_id": "94289524-04ac-44d3-8f05-45b8a937f663",
"status": "created"
},
"identifier": "trigger_evolve_successful"
}
Get AI evolution status
Unique identifier of a triggered evolution.
94289524-04ac-44d3-8f05-45b8a937f663
Successful response
GET /workplace/v1/evolve/status HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
Successful response
{
"success": true,
"data": {
"evolution_id": "94289524-04ac-44d3-8f05-45b8a937f663",
"status": "successful"
},
"identifier": "get_evolve_status_successful"
}
Retrieve a list of allocations or a specific allocation by ID, with optional filters for location, layer, room, zone, people, team, external ID, or date range.
Optional ID of the allocation to retrieve.
Filter by Location ID.
Filter by Layer ID.
Filter by Room ID.
Filter by Zone ID.
Filter by People ID.
Filter by Team ID.
Optional external ID to filter allocations (matches external_id of PERSON or TEAM).
Start date-time in UTC for filtering allocations.
End date-time in UTC for filtering allocations.
Timezone of the location. When provided, starts_at
and ends_at
are interpreted in this timezone. Must be a valid IANA Time Zone identifier.
Europe/London
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by (e.g., starts_at, people_id).
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/allocations HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"allocations": [
{
"_id": "alloc-1",
"location_id": "loc-1",
"room_id": "room-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T09:00:00Z",
"ends_at": "2025-07-18T17:00:00Z",
"details": {
"type": "desk"
}
},
{
"_id": "alloc-2",
"location_id": "loc-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T09:00:00Z",
"ends_at": "2025-07-19T17:00:00Z",
"details": {
"type": "meeting"
}
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 25
},
"total_results": 20
}
},
"identifier": "get_allocations_successful"
}
Create multiple new allocations.
Created
Bad Request
POST /workplace/v1/allocations HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 365
{
"allocations": [
{
"location_id": "loc-1",
"room_id": "room-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T09:00:00Z",
"ends_at": "2025-07-18T17:00:00Z",
"details": {
"type": "desk"
}
},
{
"location_id": "loc-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T09:00:00Z",
"ends_at": "2025-07-19T17:00:00Z",
"details": {
"type": "meeting"
}
}
]
}
{
"success": true,
"data": {
"allocations": [
{
"_id": "alloc-1",
"location_id": "loc-1",
"room_id": "room-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T09:00:00Z",
"ends_at": "2025-07-18T17:00:00Z",
"details": {
"type": "desk"
}
},
{
"_id": "alloc-2",
"location_id": "loc-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T09:00:00Z",
"ends_at": "2025-07-19T17:00:00Z",
"details": {
"type": "meeting"
}
}
]
},
"identifier": "create_allocations_successful"
}
Update multiple existing allocations.
OK
Bad Request
Not Found
PUT /workplace/v1/allocations HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 397
{
"allocations": [
{
"_id": "alloc-1",
"location_id": "loc-1",
"room_id": "room-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T10:00:00Z",
"ends_at": "2025-07-18T18:00:00Z",
"details": {
"type": "desk"
}
},
{
"_id": "alloc-2",
"location_id": "loc-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T10:00:00Z",
"ends_at": "2025-07-19T18:00:00Z",
"details": {
"type": "meeting"
}
}
]
}
{
"success": true,
"data": {
"allocations": [
{
"_id": "alloc-1",
"location_id": "loc-1",
"room_id": "room-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T10:00:00Z",
"ends_at": "2025-07-18T18:00:00Z",
"details": {
"type": "desk"
}
},
{
"_id": "alloc-2",
"location_id": "loc-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T10:00:00Z",
"ends_at": "2025-07-19T18:00:00Z",
"details": {
"type": "meeting"
}
}
]
},
"identifier": "update_allocations_successful"
}
Delete multiple allocations by their IDs.
OK
Bad Request
Not Found
DELETE /workplace/v1/allocations HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 73
{
"allocations": [
{
"allocation_id": "alloc-1"
},
{
"allocation_id": "alloc-2"
}
]
}
{
"success": true,
"data": {
"allocations": [
{
"allocation_id": "alloc-1"
},
{
"allocation_id": "alloc-2"
}
]
},
"identifier": "delete_allocations_successful"
}
Retrieve a list of intentions or a specific intention by ID, with optional filters for area, location, layer, room, zone, people, team, external ID, or date range.
Optional ID of the intention to retrieve.
Optional ID of the area to filter intentions.
Filter by Location ID.
Filter by Layer ID.
Filter by Room ID.
Filter by Zone ID.
Filter by People ID.
Filter by Team ID.
Optional external ID to filter intentions (matches external_id of PERSON or TEAM).
Start date-time in UTC for filtering intentions.
End date-time in UTC for filtering intentions.
Timezone of the location. When provided, starts_at
and ends_at
are interpreted in this timezone. Must be a valid IANA Time Zone identifier.
Europe/London
Number of items to skip for pagination.
0
Maximum number of items to return.
25
Field to sort by (e.g., starts_at, people_id).
Sort order, 'asc' or 'desc'.
asc
Possible values: OK
Bad Request
GET /workplace/v1/intentions HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
{
"success": true,
"data": {
"intentions": [
{
"_id": "intent-1",
"area_id": "area-1",
"people_id": "person-1",
"external_id": "ext-123",
"starts_at": "2025-07-18T09:00:00Z",
"ends_at": "2025-07-18T17:00:00Z",
"details": {
"purpose": "work"
}
},
{
"_id": "intent-2",
"area_id": "area-2",
"team_id": "team-1",
"external_id": "ext-456",
"starts_at": "2025-07-19T09:00:00Z",
"ends_at": "2025-07-19T17:00:00Z",
"details": {
"purpose": "meeting"
}
}
],
"pagination": {
"current_results": {
"from": 1,
"to": 25
},
"total_results": 20
}
},
"identifier": "get_intentions_successful"
}
Last updated
Was this helpful?