Workplace API

get

Retrieve a list of team settings or a specific team setting by ID, with optional filter for external ID.

Authorizations
Query parameters
location_idstringOptional

Optional ID of the location to retrieve relative settings.

team_idstringOptional

Optional ID of the team to retrieve settings for.

external_idstringOptional

Optional external ID to filter team settings (matches team's external_id).

skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by.

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
put

Update multiple existing team settings.

Authorizations
Body
Responses
200

OK

application/json
put
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"
}
post

Create one or more occupancy records. Idempotent on (people_id, location_id, seen_at).

Authorizations
Body
location_idstringRequired

ID of the associated location.

Responses
200

Created

application/json
post
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"
}
get

Retrieve occupancy records with optional filters by ID, location, person, and time range.

Authorizations
Query parameters
occupancy_idstringOptional

Filter by a specific occupancy document ID.

location_idstringOptional

Filter by Location ID.

people_idstringOptional

Filter by People ID.

starts_atstring · date-timeOptional

Start (inclusive) of UTC range filter. ISO 8601 with Z.

ends_atstring · date-timeOptional

End (inclusive) of UTC range filter. ISO 8601 with Z.

skipintegerOptional

Number of items to skip.

Default: 0
limitintegerOptional

Max items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., created_at, seen_at, people_id).

Default: created_at
orderstring · enumOptional

Sort order.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
delete

Soft-delete occupancy records that match the filters. Only location_id is required.

Authorizations
Body
location_idstringRequired

Location to scope the deletion.

people_idstringOptional

Optional person filter.

starts_atstring · date-timeOptional

Start (inclusive) of UTC range filter. ISO 8601 with Z.

ends_atstring · date-timeOptional

End (inclusive) of UTC range filter. ISO 8601 with Z.

Responses
200

OK

application/json
delete
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"
}
post

Trigger forecasting for a location over an optional date range.

Authorizations
Body
location_idstringRequired

Unique identifier of the location to forecast.

Example: 68824ca5369c856b7c670510
starts_atstring · dateOptional

(Optional) Inclusive start date (YYYY-MM-DD).

Example: 2025-06-20
ends_atstring · dateOptional

(Optional) Inclusive end date (YYYY-MM-DD).

Example: 2025-07-31
force_rebuildbooleanOptional

Force a rebuild even if recent results exist.

Default: false
Responses
200

Forecast job created/queued

application/json
post
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
}
200

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

Get forecasting job status (supports filtering and pagination).

Authorizations
Query parameters
job_idstringOptional

Filter by a specific forecast job ID returned by /forecast/start.

Example: 689a01bde5c540bb57b0730b
location_idstringOptional

Filter by location ID.

Example: 68824ca5369c856b7c670510
date_fromstring · dateOptional

Filter jobs created on/after this date (YYYY-MM-DD).

date_tostring · dateOptional

Filter jobs created on/before this date (YYYY-MM-DD).

skipintegerOptional

Number of items to skip (pagination).

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstring · enumOptional

Sort field.

Default: created_atPossible values:
orderstring · enumOptional

Sort order.

Default: ascPossible values:
Responses
200

Forecast job status list

application/json
get
GET /workplace/v1/forecast/status HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
200

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"
}
get

Retrieve a list of location forecasts with optional location_id filter and pagination.

Authorizations
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
get

Retrieve a list of team forecasts with optional location_id and team_id filters and pagination.

Authorizations
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

team_idstring[]Optional

Filter by Team ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
get

Retrieve a list of people forecasts with optional location_id, people_id, and team_id filters and pagination.

Authorizations
Query parameters
location_idstring[]Optional

Filter by Location ID (can be multiple).

people_idstring[]Optional

Filter by People ID (can be multiple).

team_idstring[]Optional

Filter by Team ID (can be multiple).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering forecasts.

ends_atstring · date-timeOptional

End date-time in UTC for filtering forecasts.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
post

Trigger location AI evolution

Authorizations
Body
location_idstringRequired

Unique identifier of the location.

Example: 68824ca5369c856b7c670510
datestring · dateRequired

Date for the evolution in YYYY-MM-DD format.

Example: 2025-08-08
Responses
200

Successful response

application/json
post
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
  }
}
200

Successful response

{
  "success": true,
  "data": {
    "evolution_id": "94289524-04ac-44d3-8f05-45b8a937f663",
    "status": "created"
  },
  "identifier": "trigger_evolve_successful"
}
get

Get AI evolution status

Authorizations
Query parameters
evolution_idstringRequired

Unique identifier of a triggered evolution.

Example: 94289524-04ac-44d3-8f05-45b8a937f663
Responses
200

Successful response

application/json
get
GET /workplace/v1/evolve/status HTTP/1.1
Host: api.gospace.app
x-api-key: YOUR_API_KEY
Accept: */*
200

Successful response

{
  "success": true,
  "data": {
    "evolution_id": "94289524-04ac-44d3-8f05-45b8a937f663",
    "status": "successful"
  },
  "identifier": "get_evolve_status_successful"
}
get

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.

Authorizations
Query parameters
allocation_idstringOptional

Optional ID of the allocation to retrieve.

location_idstringOptional

Filter by Location ID.

layer_idstringOptional

Filter by Layer ID.

room_idstringOptional

Filter by Room ID.

zone_idstringOptional

Filter by Zone ID.

people_idstringOptional

Filter by People ID.

team_idstringOptional

Filter by Team ID.

external_idstringOptional

Optional external ID to filter allocations (matches external_id of PERSON or TEAM).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering allocations.

ends_atstring · date-timeOptional

End date-time in UTC for filtering allocations.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at, people_id).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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"
}
post

Create multiple new allocations.

Authorizations
Body
Responses
200

Created

application/json
post
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"
}
put

Update multiple existing allocations.

Authorizations
Body
Responses
200

OK

application/json
put
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

Delete multiple allocations by their IDs.

Authorizations
Body
Responses
200

OK

application/json
delete
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"
}
get

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.

Authorizations
Query parameters
intention_idstringOptional

Optional ID of the intention to retrieve.

area_idstringOptional

Optional ID of the area to filter intentions.

location_idstringOptional

Filter by Location ID.

layer_idstringOptional

Filter by Layer ID.

room_idstringOptional

Filter by Room ID.

zone_idstringOptional

Filter by Zone ID.

people_idstringOptional

Filter by People ID.

team_idstringOptional

Filter by Team ID.

external_idstringOptional

Optional external ID to filter intentions (matches external_id of PERSON or TEAM).

starts_atstring · date-timeOptional

Start date-time in UTC for filtering intentions.

ends_atstring · date-timeOptional

End date-time in UTC for filtering intentions.

timezonestringOptional

Timezone of the location. When provided, starts_at and ends_at are interpreted in this timezone. Must be a valid IANA Time Zone identifier.

Example: Europe/London
skipintegerOptional

Number of items to skip for pagination.

Default: 0
limitintegerOptional

Maximum number of items to return.

Default: 25
sortstringOptional

Field to sort by (e.g., starts_at, people_id).

orderstring · enumOptional

Sort order, 'asc' or 'desc'.

Default: ascPossible values:
Responses
200

OK

application/json
get
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?