> This page is for version v1.
> For other versions, use one of these documentation indexes:
> - v2 (default): https://autodesk-poc.ferndocs.com/v2/llms.txt
> - v1: https://autodesk-poc.ferndocs.com/v1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://autodesk-poc.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://autodesk-poc.ferndocs.com/_mcp/server.

# Get project users

GET https://developer.api.autodesk.com/construction/admin/v1/projects/{projectId}/users

Retrieves information about a filtered subset of users in the specified project.

There are two primary reasons to do this:

- To verify that all users assigned to the project have been activated as members of the project.
- To check other information about users, such as their project user ID, roles, and products.

Note that if you want to retrieve information about users associated with a particular Autodesk hub, call the [GET users](https://aps.autodesk.com/en/docs/acc/v1/reference/http/users-GET/) endpoint.

**Note:** This operation is forward compatible. Autodesk may add attributes to the response without prior notice, so your app should ignore any attribute it does not recognize.

Reference: https://autodesk-poc.ferndocs.com/v1/acc-admin/project-users/get-project-users

## Authentication

- OAuth2 — send the obtained token as `Authorization: Bearer <token>`
- OAuth2 — send the obtained token as `Authorization: Bearer <token>`
- `Authorization` header (bearer token, required) — **OAuth 2.0 (3-legged)** — user context required. Also accepts a Secure Service Account (SSA) token, which is headless like a two-legged flow but classified as three-legged because it preserves user context. **Authorization Code Flow** Authorization URL: [https://developer.api.autodesk.com/authentication/v2/authorize](https://developer.api.autodesk.com/authentication/v2/authorize) Token URL: [https://developer.api.autodesk.com/authentication/v2/token](https://developer.api.autodesk.com/authentication/v2/token) Refresh URL: [https://developer.api.autodesk.com/authentication/v2/token](https://developer.api.autodesk.com/authentication/v2/token) Scopes: - `data:read` — read your data - `account:read` — read account and project data - `account:write` — modify account and project data

## Request

### Path parameters

- `projectId` (string, required) — The ID of the project. This corresponds to project ID in the [Data Management API](https://aps.autodesk.com/en/docs/data/v2/). To convert a project ID in the Data Management API into a project ID in the Forma API you need to remove the "**b.**\" prefix. For example, a project ID of `b.a4be0c34a-4ab7` translates to a project ID of `a4be0c34a-4ab7`.

### Query parameters

- `filter[products]` (list of string, optional) — A comma-separated list of the products that the returned users must have access to in the specified project. Only users that have access to one or more of the specified products are returned. Note that every product in the same hub as the project is activated for the project, and a separate subset of these products is active for each user. This endpoint can retrieve users from Forma or BIM 360 projects. Some products are exclusive to Forma or to BIM 360, others are available on both platforms. Specify only the products on the appropriate platform for the users you want to retrieve. Possible Forma values: `accountAdministration`, `autoSpecs`, `build`, `buildingConnected`, `capitalPlanning`, `cloudWorksharing`, `cost`, `designCollaboration`, `docs`, `financials`, `insight`, `modelCoordination`, `projectAdministration`, `takeoff`, and `workshopxr`. Possible BIM 360 values: `accountAdministration`, `assets`, `cloudWorksharing`, `costManagement`, `designCollaboration`, `documentManagement`, `field`, `fieldManagement`, `glue`, `insight`, `modelCoordination`, `plan`, `projectAdministration`, `projectHome`, `projectManagement`, and `quantification`.
- `filter[name]` (string, optional) — A user name or name pattern that the returned users must have. Can be a partial match based on the value of `filterTextMatch` that you provide. For example: `filter[name]=Sample filterTextMatch=startsWith`
- `filter[email]` (string, optional) — A user email address or address pattern that the returned users must have. This can be a partial match based on the value of `filterTextMatch` that you provide. For example: `filter[email]=sample filterTextMatch=startsWith`
- `filter[accessLevels]` (list of enum, optional) — A list of user access levels that the returned users must have. Possible values: `accountAdmin`, `projectAdmin`, `executive`.
  - Allowed values: `accountAdmin`, `accountStandardsAdministrator`, `projectAdmin`, `executive`
- `filter[addedOn]` (date, optional) — Filters users by the date they were added to the project (YYYY-MM-DD). Only users that were added on this date are returned.
- `filter[companyId]` (string, optional) — The ID of a company that the returned users must represent.
- `filter[companyName]` (string, optional) — The name of a company that returned users must be associated with. Can be a partial match based on the value of `filterTextMatch` that you provide. For example: `filter[companyName]=Sample filterTextMatch=startsWith`
- `filter[autodeskId]` (list of string, optional) — A list of the Autodesk IDs of users to retrieve.
- `filter[id]` (list of string, optional) — A list of the Forma IDs of users to retrieve.
- `filter[roleId]` (string, optional) — The ID of a user role that the returned users must have. To obtain a role ID for this filter, you can inspect the `roleId` field in previous responses to this endpoint or to the [GET projects/:projectId/users/:userId](https://aps.autodesk.com/en/docs/acc/v1/reference/http/admin-projects-projectId-users-userId-GET/) endpoint.
- `filter[roleIds]` (list of string, optional) — A list of the IDs of user roles that the returned users must have. To obtain a role ID for this filter, you can inspect the `roleId` field in previous responses to this endpoint or to the [GET projects/:projectId/users/:userId](https://aps.autodesk.com/en/docs/acc/v1/reference/http/admin-projects-projectId-users-userId-GET/) endpoint.
- `filter[status]` (list of enum, optional, default: ["active","pending"]) — A list of statuses that the returned project users must be in. The default values are `active` and `pending`. Possible values: `active`, `pending`, and `deleted`.
  - Allowed values: `active`, `deleted`, `pending`
- `filter[memberGroupId]` (list of string, optional) — A list of the IDs of groups that the returned users must be members of.
- `sort` (list of enum, optional, default: name) — A list of fields to sort the returned users by. Multiple sort fields are applied in sequence order - each sort field produces groupings of projects with the same values of that field; the next sort field applies within the groupings produced by the previous sort field. Each property can be followed by a direction modifier of either `asc` (ascending) or `desc` (descending). The default is `asc`. Possible values: `name`, `email`, `firstName`, `lastName`, `addressLine1`, `addressLine2`, `city`, `companyName`, `stateOrProvince`, `status`, `phone`, `postalCode`, `country` and `addedOn`. Default value: `name`.
  - Allowed values: `name`, `name asc`, `name desc`, `email`, `email asc`, `email desc`, `firstName`, `firstName asc`, `firstName desc`, `lastName`, `lastName asc`, `lastName desc`, `addedOn`, `addedOn asc`, `addedOn desc`, `addressLine1`, `addressLine1 asc`, `addressLine1 desc`, `addressLine2`, `addressLine2 asc`, `addressLine2 desc`, `city`, `city asc`, `city desc`, `companyName`, `companyName asc`, `companyName desc`, `stateOrProvince`, `stateOrProvince asc`, `stateOrProvince desc`, `status`, `status asc`, `status desc`, `phone`, `phone asc`, `phone desc`, `postalCode`, `postalCode asc`, `postalCode desc`, `country`, `country asc`, `country desc`
- `fields` (list of enum, optional) — A list of the project fields to include in the response. Default value: all fields. Possible values: `name`, `email`, `firstName`, `lastName`, `autodeskId`, `analyticsId`, `addressLine1`, `addressLine2`, `city`, `stateOrProvince`, `postalCode`, `country`, `imageUrl`, `phone`, `jobTitle`, `industry`, `aboutMe`, `companyId`, `accessLevels`, `roleIds`, `roles`, `status`, `addedOn` and `products`.
  - Allowed values: `name`, `email`, `firstName`, `lastName`, `autodeskId`, `analyticsId`, `addressLine1`, `addressLine2`, `city`, `stateOrProvince`, `postalCode`, `country`, `imageUrl`, `phone`, `jobTitle`, `industry`, `aboutMe`, `companyId`, `companyName`, `companyGroupId`, `accessLevels`, `roleIds`, `roles`, `status`, `addedOn`, `products`
- `orFilters` (list of enum, optional) — A list of user fields to combine with the SQL *OR* operator for filtering the returned project users. The *OR* is automatically incorporated between the fields; any one of them can produce a valid match. Possible values: `id`, `name`, `email`, `autodeskId`, `status` and `accessLevels`.
  - Allowed values: `id`, `name`, `email`, `autodeskId`, `status`, `accessLevels`
- `filterTextMatch` (enum, optional, default: contains) — Specifies how text-based filters should match values in supported fields. This parameter can be used in any endpoint that supports text-based filtering (e.g., `filter[name]`, `filter[jobNumber]`, `filter[companyName]`, etc.). Possible values: `contains` (default) – Matches if the field contains the specified text anywhere `startsWith` – Matches if the field starts with the specified text `endsWith` – Matches if the field ends with the specified text `equals` – Matches only if the field exactly matches the specified text Matching is case-insensitive. Wildcards and regular expressions are not supported.
  - Allowed values: `contains`, `startsWith`, `endsWith`, `equals`
- `limit` (integer, optional, default: 20) — The maximum number of records to return in the response. Default: `20` Minimum: `1` Maximum: `200` (If a larger value is provided, only 200 records are returned)
- `offset` (integer, optional, default: 0) — The index of the first record to return. Used for pagination in combination with the `limit` parameter. Example: `limit=20` and `offset=40` returns records 41–60.

### Headers

- `Accept-Language` (string, optional, default: en) — This header is not currently supported in the hub Admin API.
- `Region` (string, optional) — Specifies the region where your request should be routed. If not set, the request is routed automatically, which may result in a slight increase in latency. Possible values: `US`, `EMEA`. For a complete list of supported regions, see the [Regions](https://aps.autodesk.com/en/docs/acc/v1/overview/acc-regions/) page.
- `User-Id` (string, optional) — The ID of a user on whose behalf your request is acting. Your app has access to all users specified by the administrator in the SaaS integrations UI. Provide this header value to identify the user to be affected by the request. You can use either the user's Forma ID (`id`), or their Autodesk ID (`autodeskId`). Note that this header is required for hub Admin POST, PATCH, and DELETE endpoints if you want to use a 2-legged authentication context. This header is optional for hub Admin GET endpoints.

## Response

### 200

A list of requested project users.

- `pagination` (pagination, optional) — Contains pagination details for the records returned by the endpoint.
- `results` (list of projectUserResponse, optional) — The requested page of project users.

## Errors

### 400 Bad Request Error

The request could not be understood by the server due to malformed syntax.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.
- `errors` (list of fieldError, optional) — List of field validation errors.

### 401 Unauthorized Error

Request has not been applied because it lacks valid authentication credentials for the target resource.

- `authenticationUrl` (string, optional) — The url used for authenticating the user.
- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 403 Forbidden Error

The server understood the request but refuses to authorize it.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 404 Not Found Error

The resource could not be found.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 406 Not Acceptable Error

The server cannot produce a response matching the list of acceptable values defined in the request.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 409 Conflict Error

The request could not be completed due to a conflict with the current state of the resource.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.
- `errors` (list of fieldError, optional) — List of field validation errors.

### 410 Gone Error

Access to the target resource is no longer available.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 429 Too Many Requests Error

User has sent too many requests in a given amount of time.

- `any`

### 500 Internal Server Error

An unexpected error occurred on the server.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

### 503 Service Unavailable Error

Server is not ready to handle the request.

- `status` (integer, optional) — The status code for the error.
- `type` (string, optional) — HQ defined error code for the type of error.
- `title` (string, optional) — The title of the error. ex: Bad Request.
- `detail` (string, optional) — A detailed description of the error with possible suggestions for fixing them.
- `id` (string, optional) — A unique id for the request.

## Types

### pagination

Contains pagination details for the records returned by the endpoint.

- `limit` (integer, optional, default: 20) — The maximum number of records returned per page. The last page may contain fewer records than the specified limit.
- `offset` (integer, optional, default: 0) — The index of the first record in the returned page. Used for pagination.
- `totalResults` (integer, optional) — The total number of records matching the request.
- `nextUrl` (string, optional) — The URL for the next page of records, if more results are available. Max length: 2000 characters.
- `previousUrl` (string, optional) — The URL for the previous page of records, if applicable. Max length: 2000 characters.

### projectUserResponse

Project user information.

- `email` (string, optional) — The email of the user.
- `id` (string, optional) — The Forma ID of the user.
- `name` (string, optional) — The full name of the user.
- `firstName` (string, optional) — The user's first name. This data syncs from the user's Autodesk profile.
- `lastName` (string, optional) — The user's last name. This data syncs from the user's Autodesk profile.
- `autodeskId` (string, optional) — The ID of the user's Autodesk profile.
- `analyticsId` (string, optional) — An ID of the user to be used for analytics.
- `addressLine1` (string, optional) — The user's address line 1. This data syncs from the user's Autodesk profile.
- `addressLine2` (string, optional) — The user's address line 2. This data syncs from the user's Autodesk profile.
- `city` (string, optional) — The User's city. This data syncs from the user's Autodesk profile.
- `stateOrProvince` (string, optional, nullable) — The state or province of the user. The accepted values here change depending on which country is provided. This data syncs from the user's Autodesk profile.
- `postalCode` (string, optional) — The zip or postal code of the user. This data syncs from the user's Autodesk profile.
- `country` (string, optional, nullable) — The user's country. This data syncs from the user's Autodesk profile.
- `imageUrl` (string, optional) — The URL of the user's avatar. This data syncs from the user's Autodesk profile.
- `phone` (ProjectUserResponsePhone, optional) — The user's phone number. This data syncs from the user's Autodesk profile.
- `jobTitle` (string, optional) — The user's job title. This data syncs from the user's Autodesk profile.
- `industry` (string, optional) — The industry the user works in. This data syncs from the user's Autodesk profile.
- `aboutMe` (string, optional) — A short bio about the user. This data syncs from the user's Autodesk profile.
- `accessLevels` (ProjectUserResponseAccessLevels, optional) — Flags that identify a returned user's access levels in the hub or project.
- `addedOn` (datetime, optional) — The timestamp when the user was first given access to any product on the project.
- `updatedAt` (datetime, optional) — The timestamp when the project user was last updated, in ISO 8601 format.
- `companyId` (string, optional, nullable) — The ID of the company that the user is representing in the project. To obtain a list of all company IDs associated with a project, call [GET projects/:projectId/companies](https://aps.autodesk.com/en/docs/acc/v1/reference/http/projects-:project_id-companies-GET/).
- `companyName` (string, optional, nullable) — The name of the company to which the user belongs.
- `companyGroupId` (string, optional, nullable) — This is the Autodesk identifier of the permissions group to which the company associated to the project user belongs.
- `roleIds` (list of string, optional) — A list of IDs of the roles that the user belongs to in the project.
- `roles` (list of ProjectUserResponseRolesItems, optional) — A list of the role IDs and names that are associated with the user in the project.
- `status` (string, optional) — The status of the user in the project. A pending user could be waiting for their products to activate, or the user hasn't accepted an email to create a hub with Autodesk. Possible values: - `active`: The user has been added to the project. - `pending`: The user is in the process of being added to the project. - `disabled`: The user has been temporarily suspended from the project. - `deleted`: The user has been removed from the project.
- `products` (list of ProjectUserProductsResponseItems, optional) — Information about the products activated in the specified project for this user. Do not include this field if the requester has Member Manager access level.

### fieldError

Error description for a field validation error.

- `type` (string, optional) — HQ defined error code for the type of error.
- `field` (string, optional) — Name of the field associated to the error.
- `title` (string, optional) — Title for the error.
- `detail` (string, optional) — A detailed description of the error so the user knows how to fix it.

### ProjectUserResponsePhone

The user's phone number. This data syncs from the user's Autodesk profile.

- `number` (string, optional) — User's phone number
- `phoneType` (enum, optional, default: mobile) — The user's phone type. Possible values: `home`, `mobile`, or `office`. Default value: `mobile`.
  - Allowed values: `mobile`, `home`, `office`
- `extension` (string, optional) — User's phone extension.

### ProjectUserResponseAccessLevels

Flags that identify a returned user's access levels in the hub or project.

- `accountAdmin` (boolean, optional) — Indicates whether the user is a hub administrator for the hub. Possible values: - `true`: The user is a hub administrator. - `false`: The user is not a hub administrator.
- `accountStandardsAdministrator` (boolean, optional) — Indicates whether the user is a hub standards administrator for the hub. Possible values: - `true`: The user is a hub standards administrator. - `false`: The user is not a hub standards administrator.
- `projectAdmin` (boolean, optional) — Indicates whether the user is a project administrator for the project. Possible values: - `true`: The user is a project administrator. - `false`: The user is not a project administrator.
- `executive` (boolean, optional) — Indicates whether the user is an executive in the hub. Possible values: - `true`: The user is an executive. - `false`: The user is not an executive.

### ProjectUserResponseRolesItems

- `id` (string, optional) — The ID of a role that the user belongs to in the project.
- `name` (string, optional) — The name of a role that the user belongs to in the project.
- `roleGroupId` (string, optional, nullable) — This is the Autodesk identifier of the permissions group to which the role associated to the project user belongs.

### ProjectUserProductsResponseItems

- `key` (enum, required) — A machine-readable identifier for the product (e.g., docs, build). Each product has a unique key used throughout the API for identification, filtering, and integration logic (e.g., in query parameters like `filter[key]`). Possible values: Forma - `autoSpecs`, `build`, `cost`, `designCollaboration`, `docs`, `insight`, `modelCoordination`, `projectAdministration`, `formaBidBoard` and `takeoff`. BIM 360 - `assets`, `costManagement`, `designCollaboration`, `documentManagement`, `field`, `fieldManagement`, `glue`, `insight`, `modelCoordination`, `plan`, `projectAdministration`, `projectHome`, `projectManagement` and `quantification`. Note that this endpoint returns only Forma products. Other endpoints, such as [GET projects](https://aps.autodesk.com/en/docs/acc/v1/reference/http/admin-accountsaccountidprojects-GET/) and [GET projects/:projectId](https://aps.autodesk.com/en/docs/acc/v1/reference/http/admin-projects-projectId-GET/), may return both Forma and BIM 360 projects. In those responses, product keys may include BIM 360 values.
  - Allowed values: `assets`, `autoSpecs`, `build`, `buildingConnected`, `capitalPlanning`, `cost`, `costManagement`, `designCollaboration`, `docs`, `documentManagement`, `field`, `fieldManagement`, `financials`, `glue`, `workshopxr`, `insight`, `modelCoordination`, `plan`, `projectAdministration`, `projectHome`, `projectManagement`, `quantification`, `takeoff`, `info360Insight`, `info360Plant`, `info360Asset`, `info360Model`, `forma`, `datum`, `datcls`, `formaBidBoard`
- `access` (enum, required) — The user's type of access to the product identified by `key`. Possible values: - `administrator` - `member` - `none` Note that when you're using a POST or PATCH endpoint to set this value, you must adhere to the following guidelines: - If you set a product's `key` to `projectAdministration` and you set `access` to `none`, all other products should be set to `member` access for the user. - If you set a product's `key` to `projectAdministration` and you set `access` to `administrator`, all other products should be set to `administrator` access for the user. - You cannot set a product's `key` to `projectAdministration` and set `access` to `member`.
  - Allowed values: `administrator`, `member`, `none`

## Examples

**Response**

```json
{
  "pagination": {
    "limit": 20,
    "offset": 10,
    "totalResults": 121,
    "nextUrl": "https://resource?limit=20&offset=30",
    "previousUrl": "https://resource?limit=20&offset=0"
  },
  "results": [
    {
      "email": "sampleUser1@autodesk.com",
      "id": "39712a51-bd64-446a-9c72-48c4e43d0a0d",
      "name": "Bob Smith",
      "firstName": "Bob",
      "lastName": "Smith",
      "autodeskId": "USER123A",
      "analyticsId": "SOMEID123",
      "addressLine1": "123 Main Street",
      "addressLine2": "Suite 2",
      "city": "San Francisco",
      "stateOrProvince": "California",
      "postalCode": "94001",
      "country": "United States",
      "imageUrl": "https://s3.amazonaws.com:443/com.autodesk.storage.public.dev/oxygen/USER123A/profilepictures/x20.jpg",
      "phone": {
        "number": "123-345-1234",
        "phoneType": "mobile",
        "extension": "10"
      },
      "jobTitle": "Owner",
      "industry": "Architecture & Construction Service Providers",
      "aboutMe": "Bob has been in construction for 25 years.",
      "accessLevels": {
        "accountAdmin": true,
        "accountStandardsAdministrator": true,
        "projectAdmin": true,
        "executive": true
      },
      "addedOn": "2018-01-01T12:45:00.000Z",
      "updatedAt": "2018-01-01T12:45:00.000Z",
      "companyId": "c32ffb13-83f8-43fb-bddf-3e5c0c2dda24",
      "companyName": "Sample Company",
      "companyGroupId": "11224488",
      "roleIds": [
        "cda845af-05f0-4c46-9108-71b993946c35",
        "b8e84a73-7506-4d3f-b221-93691df2a359"
      ],
      "roles": [
        {
          "id": "cda845af-05f0-4c46-9108-71b993946c35",
          "name": "Architect"
        },
        {
          "id": "b8e84a73-7506-4d3f-b221-93691df2a359",
          "name": "Engineer"
        }
      ],
      "status": "active",
      "products": [
        {
          "key": "projectAdministration",
          "access": "administrator"
        },
        {
          "key": "designCollaboration",
          "access": "administrator"
        },
        {
          "key": "build",
          "access": "administrator"
        },
        {
          "key": "cost",
          "access": "administrator"
        },
        {
          "key": "modelCoordination",
          "access": "administrator"
        },
        {
          "key": "docs",
          "access": "administrator"
        },
        {
          "key": "insight",
          "access": "administrator"
        },
        {
          "key": "takeoff",
          "access": "administrator"
        }
      ]
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users"

querystring = {"fields":"name,email","filterTextMatch":"contains","filter[accessLevels]":"accountAdmin,executive","filter[addedOn]":"2024-01-01","filter[autodeskId]":"User123,User124","filter[companyId]":"d1163421-e7eb-4862-ac15-b33777ba42de","filter[companyName]":"Sample Company","filter[email]":"sampleUser1@autodesk.com","filter[id]":"39712a51-bd64-446a-9c72-48c4e43d0a0d,d1163421-e7eb-4862-ac15-b33777ba42de","filter[memberGroupId]":"11335577,3456542","filter[name]":"Sample User","filter[products]":"build,cost","filter[roleId]":"filter[roleId]","filter[roleIds]":"cda845af-05f0-4c46-9108-71b993946c35,b8e84a73-7506-4d3f-b221-93691df2a359","filter[status]":"active,pending","limit":"20","offset":"0","orFilters":"id,name","sort":"name"}

headers = {
    "Accept-Language": "en",
    "Region": "US",
    "User-Id": "6cc15635-2fbd-4f73-afbe-abd833408a1d",
    "Authorization": "<token>."
}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name';
const options = {
  method: 'GET',
  headers: {
    'Accept-Language': 'en',
    Region: 'US',
    'User-Id': '6cc15635-2fbd-4f73-afbe-abd833408a1d',
    Authorization: '<token>.'
  }
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Accept-Language", "en")
	req.Header.Add("Region", "US")
	req.Header.Add("User-Id", "6cc15635-2fbd-4f73-afbe-abd833408a1d")
	req.Header.Add("Authorization", "<token>.")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Accept-Language"] = 'en'
request["Region"] = 'US'
request["User-Id"] = '6cc15635-2fbd-4f73-afbe-abd833408a1d'
request["Authorization"] = '<token>.'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name")
  .header("Accept-Language", "en")
  .header("Region", "US")
  .header("User-Id", "6cc15635-2fbd-4f73-afbe-abd833408a1d")
  .header("Authorization", "<token>.")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name', [
  'headers' => [
    'Accept-Language' => 'en',
    'Authorization' => '<token>.',
    'Region' => 'US',
    'User-Id' => '6cc15635-2fbd-4f73-afbe-abd833408a1d',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name");
var request = new RestRequest(Method.GET);
request.AddHeader("Accept-Language", "en");
request.AddHeader("Region", "US");
request.AddHeader("User-Id", "6cc15635-2fbd-4f73-afbe-abd833408a1d");
request.AddHeader("Authorization", "<token>.");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept-Language": "en",
  "Region": "US",
  "User-Id": "6cc15635-2fbd-4f73-afbe-abd833408a1d",
  "Authorization": "<token>."
]

let request = NSMutableURLRequest(url: NSURL(string: "https://developer.api.autodesk.com/construction/admin/v1/projects/367d5cc2-9008-462c-96e5-c9491db85d93/users?fields=name%2Cemail&filterTextMatch=contains&filter%5BaccessLevels%5D=accountAdmin%2Cexecutive&filter%5BaddedOn%5D=2024-01-01&filter%5BautodeskId%5D=User123%2CUser124&filter%5BcompanyId%5D=d1163421-e7eb-4862-ac15-b33777ba42de&filter%5BcompanyName%5D=Sample+Company&filter%5Bemail%5D=sampleUser1%40autodesk.com&filter%5Bid%5D=39712a51-bd64-446a-9c72-48c4e43d0a0d%2Cd1163421-e7eb-4862-ac15-b33777ba42de&filter%5BmemberGroupId%5D=11335577%2C3456542&filter%5Bname%5D=Sample+User&filter%5Bproducts%5D=build%2Ccost&filter%5BroleId%5D=filter%5BroleId%5D&filter%5BroleIds%5D=cda845af-05f0-4c46-9108-71b993946c35%2Cb8e84a73-7506-4d3f-b221-93691df2a359&filter%5Bstatus%5D=active%2Cpending&limit=20&offset=0&orFilters=id%2Cname&sort=name")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```