Skip to content
Release: Australia · Updated: 2026-04-28 · Official documentation · View source

WSD User API

The WSD User API is a Scripted REST API which returns the authenticated user's workplace context, including their assigned workspace location, in-office presence schedule, collaborators, and past and future reservations.

This WSD User is featured with the Workplace Service Delivery (WSD) Reservation product and provides a single-call entry point for initializing the reservation booking experience with all relevant user data. This API sits within the Workplace Service Delivery Reservation (com.sn_wsd_rsv) plugin and serves as the entry point for surfacing a user's complete workplace identity and history.

An authenticated user is someone who is logged in or whose credentials are included in the API request.

Common use cases:

  • Reservation portal initialization: Load a user's home location, schedule, and booking history in a single call when opening a workplace app or portal.
  • Custom mobile or web apps: Fetch all the user context without stitching together multiple table API calls,for example when building front-end reservation experiences.
  • In-office presence tracking: Identify which employees are scheduled to be in-office on a given day.

Requirements

The WSD User API requires:

  • At least one user record must exist with the sn_wsd_core.workplace_user role.
  • The Workplace Service Delivery Concierge (com.sn_wsd_concierge), Workplace Service Delivery Core (com.sn_wsd_core), and Workplace Service Delivery Reservation (com.sn_wsd_rsv) plugins to be active.

The WSD User API belongs to a family of APIs all under the sn_wsd_rsv namespace that together support the full reservation lifecycle:

  • WSD Search API: Find available reservable spaces based on location, time, and capacity criteria.
  • WSD Reservation API: Create reservations and manage check-in/check-out.
  • WSD Reservable Module API: Retrieve the booking rule configurations that govern what users can reserve and how.

Parent Topic:REST API reference

WSD User - GET /api/sn_wsd_rsv/v1/user/context

Retrieves the authenticated user's workplace context, including their assigned workplace location, presence schedule, collaborators, and past and future reservations.

Use this endpoint to initialize a reservation experience by loading all relevant user context in a single call. Collaborator data is optionally included when the com.sn_wsd_concierge plugin is active.

URL format

Versioned URL: /api/sn_wsd_rsv/{api_version}/user/context

Default URL: /api/sn_wsd_rsv/user/context

Supported request parameters

NameDescription
api\_versionOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String
NameDescription
include

Value to include related data in the response. Uses strict equality matching (not comma-separated parsing).Note: include is only effective when the Workplace Service Delivery Concierge (com.sn_wsd_concierge) plugin is active. If the plugin is inactive, the parameter is ignored and collaborators is omitted from the response.

Only valid value: collaborators

Data type: String

Default: Excludes collaborators from the response.

past\_reservations\_monthsNumber of months of past reservations to return.Data type: Number Minimum value: `0`- A value of 0 returns an empty array for that direction. Maximum value: `12` Default value: `3`
future\_reservations\_monthsNumber of months of future reservations to return.Data type: Number Minimum value: `0` Maximum value: `12` Default value: `3`
NameDescription
None 

Headers

The following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see Supported REST API headers.

HeaderDescription
AcceptData format of the response body. Supported types: application/json, application/xml, text/xml.
AuthorizationAuthentication credentials. Supports Basic authentication or session-based authentication.
HeaderDescription
Content-TypeData format of the response body: application/json.

Status codes

The following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see REST API HTTP response codes.

Status codeDescription
200Successful. The request was successfully processed.
500Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.

Response body parameters (JSON or XML)

NameDescription
resultObject containing results of the request.Data type: Object
"result": {
  "collaborators": [Array],
  "reservations": {Object},
  "schedule": {Object},
  "workplace_location": {Object}
}
collaboratorsList of the user's collaborators with their presence data.Data type: Array of Objects
"collaborators": [
 {
  "exceptions": "Array",
  "name": "String",
  "routine": "Object",
  "sys_id": "String", 
 }
]
collaborators.exceptionsList of dates on which the collaborator's in-office schedule deviates from their routine.Data type: Array of Objects
"exceptions": [
 {
  "date": "String",
  "in_office": Boolean,
  "location": "String",
  "origin": "String",
  "sys_id": "String"
 }
]
collaborators.exceptions.sys\_idSys\_id of the exception record.Table: Employee presence exceptions \(sn\_wsd\_concierge\_employee\_presence\_exception\) Data type: String
collaborators.exceptions.dateDate this exception applies to. This is the date the user's routine is being overridden.Format: yyyy-MM-dd Data type: String
collaborators.exceptions.in\_officeFlag that indicates whether the user will be in the office on this date. This overrides whatever the weekly routine specifies for that day of the week.Valid values: - `true`: User will be in the office. - `false`: User won't be in the office Data type: Boolean
collaborators.exceptions.originSource that created the exception.Valid values: - `user`: Created manually by the employee. - `system`: Created automatically by the platform. - `manual`: Created by an admin or on behalf of the user. Data type: String
collaborators.exceptions.locationName or identifier of the office location the user will be at on this date. Only relevant when `in_office` is `true`. May be an empty string when the user is remote.Data type: String
collaborators.nameDisplay name of the collaborator. For example, `Jane Smith`.Data type: String
collaborators.routine

The collaborator's recurring weekly in-office schedule. Follows the same day-of-week Boolean structure as schedule.routine.A value of true indicates in-office attendance, and false indicates no attendance.

Data type: Object

"routine": {
  "monday": Boolean,
  "tuesday": Boolean,
  "wednesday": Boolean,
  "thursday": Boolean, 
  "friday": Boolean,
  "saturday": Boolean,
  "sunday": Boolean
}
collaborators.sys\_idSys\_id of the collaborator's user record. Table: User \[sys\_user\] Data type: String
reservationsObject containing the user's past and future reservations. Private and location-less reservations are excluded. Maximum 100 reservations per direction. Filtered by states: confirmed, completed. Data type: Object
"reservations": {
  "past": [Array],
  "future": [Array]
}
reservations.futureList of the user's future reservations within the requested month range. Ordered by start datetime, soonest first.Data type: Array of Object
"future": [
 {
  "sys_id": "String",
  "number": "String",
  "start": "String",
  "end": "String",
  "state": "String",
  "subject": "String,
  "location": {Object},
  "building": {Object}
 }
]
reservations.future.buildingBuilding in which the reserved location resides.Data type: Object
"building": {
 "name": "String",
 "sys_id": "String"
}
reservations.future.building.nameDisplay name of the building. For example, `HQ Building A`.Data type: String
reservations.future.building.sys\_idSys\_id of the building record.Table: Workplace Building \[sn\_wsd\_core\_building\] Data type: String
reservations.future.endEnd date time of the reservation in UTC. Format: yyyy-MM-dd HH:mm:ss Data type: String
reservations.future.locationThe reserved space.Data type: Object
"location": {
  "sys_id": "String",
  "name": "String"
}
reservations.future.location.nameDisplay name of the reserved location. For example, `Desk 42`. Data type: String
reservations.future.location.sys\_idSys\_id of the reserved location.Table: Workplace Location \[sn\_wsd\_core\_workplace\_location\] Data type: String
reservations.future.numberHuman-readable reservation number. For example, `RSV0001234`.Data type: String
reservations.future.startStart date time of the reservation in UTC.Format: yyyy-MM-dd HH:mm:ss Data type: String
reservations.future.stateCurrent state of the reservation. Valid values: - `confirmed` - `completed` Data type: String
reservations.future.subjectSubject or title of the reservation. For example, `Team standup desk`.Data type: String
reservations.future.sys\_idSys\_id of the reservation record. Table: Workplace Reservation \[sn\_wsd\_rsv\_reservation\] Data type: String
reservations.pastList of the user's past reservations within the requested month range. Ordered by start date/time, most recent first.Data type: Array of Objects
"past": [
 {
  "sys_id": "String",
  "number": "String",
  "start": "String",
  "end": "String",
  "state": "String",
  "subject": "String,
  "location": {Object},
  "building": {Object}
 }
]
reservations.past.building.nameDisplay name of the building. For example, `HQ Building A`.Data type: String
reservations.past.building.sys\_idSys\_id of the building record.Table: Workplace Building \[sn\_wsd\_core\_building\] Data type: String
reservations.past.endEnd date time of the reservation in UTC. Format: yyyy-MM-dd HH:mm:ss Data type: String
reservations.past.locationThe reserved space.Data type: Object
"location": {
  "sys_id": "String",
  "name": "String"
}
reservations.past.location.nameDisplay name of the reserved location. For example, `Desk 42`. Data type: String
reservations.past.location.sys\_idSys\_id of the reserved location.Table: Workplace Location \[sn\_wsd\_core\_workplace\_location\] Data type: String
reservations.past.numberHuman-readable reservation number. For example, `RSV0001234`.Data type: String
reservations.past.startStart date time of the reservation in UTC.Format: yyyy-MM-dd HH:mm:ss Data type: String
reservations.past.stateCurrent state of the reservation. Valid values: - `confirmed` - `completed` Data type: String
reservations.past.subjectSubject or title of the reservation. For example, `Team standup desk`.Data type: String
reservations.past.sys\_idSys\_id of the reservation record. Table: Workplace Reservation \[sn\_wsd\_rsv\_reservation\] Data type: String
schedule

User's in-office presence schedule, including their recurring weekly routine and any exceptions.Note: When the com.sn_wsd_concierge plugin is inactive, routine is null and exceptions is an empty array.

Data type: Object

"schedule": {
  "exceptions": [Array],
  "routine": {Object}
}
schedule.exceptionsList of dates on which the user's in-office schedule deviates from their routine.Data type: Array of Objects
"exceptions": [
{
  "sys_id": "sys_id", 
  "date": "String", 
  "in_office": Boolean, 
  "origin": "String", 
  "location": "String" 
 }
]
schedule.exceptions.dateDate this exception applies to, in yyyy-MM-dd format. This is the date the user's routine is being overridden.Data type: String
schedule.exceptions.in\_officeFlag that indicates whether the user will be in the office on this date. This overrides whatever the schedule specifies for that day of the week.Valid values: - `true`: User will be in the office. - `false`: User won't be in the office Data type: Boolean
schedule.exceptions.locationThe name or identifier of the office location the user will be at on this date. Only relevant when `in_office` is `true`. May be an empty string when the user is remote.Data type: String
schedule.exceptions.originSource that created the exception.Valid values: - `user`: Created manually by the employee. - `system`: Created automatically by the platform. - `manual`: Created by an admin or on behalf of the user. Data type: String
schedule.exceptions.sys\_idSys\_id of the exception record.Table: Employee presence exceptions \(sn\_wsd\_concierge\_employee\_presence\_exception\) Data type: String
schedule.routineUser's recurring weekly in-office schedule. Each field is a Boolean which represents a day of the week and indicates whether the user is scheduled to be in-office on that day.A value of `true` indicates in-office attendance, and `false` indicates no attendance. Data type: Object
"routine": {
  "monday": Boolean,
  "tuesday": Boolean,
  "wednesday": Boolean,
  "thursday": Boolean, 
  "friday": Boolean,
  "saturday": Boolean,
  "sunday": Boolean
}
workplace\_locationThe user's assigned workplace location, including floor, building, and campus details.Data type: Object
"workplace_location": {
  "building": {Object},
  "campus": {Object},
  "floor": {Object},
  "name": "String",
  "sys_id": "String"
}
workplace\_location.buildingBuilding in which the workplace location resides. Data type: Object
"building": {
  "name": "String",
  "sys_id": "String"
}
workplace\_location.building.nameDisplay name of the building. For example, `HQ Building A`. Data type: String
workplace\_location.building.sys\_idSys\_id of the building record. Table: Workplace Building \[sn\_wsd\_core\_building\] Data type: String
workplace\_location.campusCampus on which the building resides. Data type: Object
"campus": {
  "name": "String",
  "sys_id": "String"
}
workplace\_location.campus.nameDisplay name of the campus. For example, `Main Campus`.Data type: String
workplace\_location.campus.sys\_idSys\_id of the campus record.Table: Workplace Campus \[sn\_wsd\_core\_campus\] Data type: String
workplace\_location.floorFloor on which the workplace location resides. Data type: Object
"floor": {
  "name": "String",
  "sys_id": "String"
}
workplace\_location.floor.nameDisplay name of the floor. For example, `Floor 3`. Data type: String
workplace\_location.floor.sys\_idSys\_id of the floor record. Table: Workplace Floor \[sn\_wsd\_core\_floor\] Data type: String
workplace\_location.nameDisplay name of the user's assigned workplace location. For example, `Desk 42 - Floor 3`. Data type: String
workplace\_location.sys\_idSys\_id of the user's assigned workplace location. Table: Workplace Location \[sn\_wsd\_core\_workplace\_location\] Data type: String

cURL request

The following example retrieves the authenticated user's full workplace context, including collaborators, 1 month of past reservations, and 6 months of future reservations.

This example uses Basic authentication. If your instance uses SSO, use a bearer token or session cookie instead. See the 'Headers' table for details.

curl "https://<instance>.service-now.com/api/sn_wsd_rsv/v1/user/context?include=collaborators&past_reservations_months=1&future_reservations_months=6" \
  --request GET \
  --header "Accept: application/json" \
  --user "username:password"

Response body.

{
  "result": {
    "workplace_location": {
      "sys_id": "a1b2c3d4e5f6g7h8",
      "name": "Desk 42 - Floor 3",
      "floor": { "sys_id": "f1a2b3c4", "name": "Floor 3" },
      "building": { "sys_id": "b1c2d3e4", "name": "HQ Building A" },
      "campus": { "sys_id": "c1d2e3f4", "name": "Main Campus" }
    },
    "schedule": {
      "routine": {
        "monday": true, "tuesday": true, "wednesday": false,
        "thursday": true, "friday": false, "saturday": false, "sunday": false
      },
      "exceptions": []
    },
    "collaborators": [
      {
        "sys_id": "d4e5f6g7",
        "name": "Jane Smith",
        "routine": { "monday": true, "tuesday": false, "wednesday": true,
                     "thursday": true, "friday": false, "saturday": false, "sunday": false },
        "exceptions": []
      }
    ],
    "reservations": {
      "past": [
        {
          "sys_id": "r1e2s3v4",
          "number": "RSV0001234",
          "start": "2026-04-01 09:00:00",
          "end": "2026-04-01 17:00:00",
          "state": "completed",
          "subject": "Team standup desk",
          "location": { "sys_id": "l1o2c3", "name": "Desk 42" },
          "building": { "sys_id": "b1c2d3e4", "name": "HQ Building A" }
        }
      ],
      "future": []
    }
  }
}