Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
version: 1.0.0
title: Kantata OX API Documentation Users API
description: "Kantata OX's API provides access to the majority of Kantata OX's data model. The API authenticates requests using OAuth2 tokens and exists primarily to allow scripts and 3rd-party applications to access and manage Kantata OX data on behalf of Kantata OX users.\n\n## Schema\n\nRequests must be sent via HTTPS and can be in either JSON or [Rails structured x-www-form-urlencoded](http://stackoverflow.com/a/950198) format. Responses will always be returned in JSON format. Dates and times are returned as [ISO 8601](http://www.w3.org/TR/NOTE-datetime) formatted strings. All requests to the API must have URLs relative to the base API URL:\n\n\n```\nhttps://api.mavenlink.com/api/v1/\n```\n\n## Authentication\n\nAll requests to the Kantata OX API must be authenticated with an OAuth bearer token. See the application workflow for details on how to register an application with Kantata OX and obtain OAuth bearer tokens.\n\nTo authenticate using the `Authorization` header, set the header's value to `Bearer <token>`. So, if your token was `abc123`, your HTTP request would include the header `Authorization: Bearer abc123`.\n\nFor example, authenticating a request using `curl` would mean running a command similar to this one:\n\n\n```curl\ncurl -H \"Authorization: Bearer abc123\" \"https://api.mavenlink.com/api/v1/workspaces.json\"\n```\n\nAll requests to the Kantata OX API require an Authorization header. For brevity, future API request examples in this documentation will not include the example Authorization header parameter.\n\n### OAuth 2.0\n\n[OAuth 2.0](http://oauth.net/2/) provides an evolving, standardized inter-application authentication workflow for the Web. To build an application that interacts with Kantata OX on behalf of your users, you will need to register your application, and then obtain an OAuth token for each of your users.\n\n#### Registering your application\n\nRegister and manage OAuth2 applications that can connect to Kantata OX at the [application management](https://app.mavenlink.com/oauth/applications) page as a Kantata OX account administrator. You'll need a paid Kantata OX account in order to register applications with us. Applications have a name and a callback URL for OAuth2.\n\nIf you only want to use the Kantata OX API for yourself, or as a backend connector, you must still register an Application, but then you can get an OAuth token for yourself on the Application's page. If you want your application to be able to use the Kantata OX API on behalf of other users, read the next section.\n\n#### Obtaining tokens for users\n\nEvery request to the Kantata OX API must be accompanied by a valid OAuth token, indicating that your application has been authorized by the Kantata OX user in question. When you register an application with us, we'll provide you with a secret key. That key is unique to your application, and shouldn't be shared with anyone else. Treat it like a password. You'll need it to request user tokens.\n\nTo authorize your application for Kantata OX API access and obtain a user token, follow the below steps for each Kantata OX user:\n\nNote: If you are using an OAuth2 library, many of these steps will be handled for you.\n\n 1. Request a short-term code, granted when the Kantata OX user agrees to allow your application access.\n\n Send your user to `/oauth/authorize` with the REQUIRED parameters `client_id`, `response_type`, and `redirect_uri`.\n\n * `client_id` is the ID assigned to your application by Kantata OX\n * `response_type` must be set to \"code\"\n * `redirect_uri` must be set to a URL where your application can accept codes and then exchange them for access tokens. It should match the `redirect_uri` specified when you registered your application.\n\n Here is an example URL that an application located at \"myapp.com\" might use. (Linebreaks are not included in the URL.)\n\n ```curl\n https://app.mavenlink.com/oauth/authorize?response_type=code&client_id=abc123&redirect_uri=http%3A%2F%2Fmyapp.com%2Foauth%2Fcallback\n ```\n\n 2. The user will be asked by Kantata OX if they want to authorize your application to interact with Kantata OX on their behalf.\n\n If something goes wrong (like the user refused to authorize your application), Kantata OX will redirect to the `redirect_uri` with query parameters providing information about the error. For example, if authorization is denied, the user will be redirected to:\n\n ```curl\n $REDIRECT_URI?error=access_denied&error_description=The+resource+owner+or+authorization+server+denied+the+request.\n ```\n\n If the user allows your application, then Kantata OX will redirect to the `redirect_uri` with query parameters providing your application with a time-limited code that your application can exchange for an access token within the next 5 minutes. Here is an example redirection with granted access:\n\n ```curl\n $REDIRECT_URI?code=abc123\n ```\n\n 3. Your application exchanges the code for an access token\n\n Now that your application has a code, it should make a POST request directly to Kantata OX at `https://app.mavenlink.com/oauth/token` to exchange the code for an access token that will allow continued interaction with the Kantata OX API. The request must include the `client_id`, `client_secret`, `grant_type`, `code`, and `redirect_uri` parameters.\n\n * `client_id` is the ID assigned to your application by Kantata OX\n * `client_secret` is the secret token assigned to your application by Kantata OX\n * `grant_type` must be set to \"authorization_code\" in order to exchange a code for an access token\n * `code` is the value that was returned in the `code` query parameter when Kantata OX redirected back to your `redirect_uri`\n * `redirect_uri` is the exact same value that you used in the original request to /oauth/authorize\n\n If the request is invalid for some reason, an error response like the one described above will be returned. However, the parameters will be returned in the response body, encoded as JSON, instead of in the URL encoded as query parameters.\n\n If the request is valid, Kantata OX will provide a response body, encoded in JSON, containing `access_token` and `token_type`.\n\n * `access_token` is the token that your application will use to authenticate requests to the Kantata OX API as this user\n * `token_type` will be \"bearer\"\n\n 4. Your application uses the access token to make authenticated requests to the Kantata OX API\n\n At this point, your application can use the access token to authenticate requests made to the Kantata OX API as described above in the [Authentication](#authentication) section.\n\n## Bearer Token\n**Security Scheme Type:** API Key\n\n**Header parameter name:** Bearer\n\n## OauthSecurity\n**Security Scheme Type:** OAuth2\n\n**Flow type:** `authorizationCode`\n\n**Authorization URL:** `https://app.mavenlink.com/oauth/authorize`\n\n**Token URL:** `https://app.mavenlink.com/oauth/token`\n\n### Security\n\nKantata OX OAuth access tokens do not expire and must be treated with the same security that you would treat client credentials such as passwords. All requests must be made over SSL and all user security credentials must be stored using industry best practices. If a user revokes your application's access, usage of the token will result in an error.\n\n## Response Format\n\nKantata OX API responses come back as JSON. All GET responses will be of a format similar to the following:\n\n\n```json\n{\n \"count\": 2,\n \"results\": [{ key: \"workspaces\", id: \"10\" }, { key: \"workspaces\", id: \"11\" }],\n \"workspaces\": {\n \"10\": {\n id: \"10\",\n title: \"some project\",\n participant_ids: [\"2\", \"6\"],\n primary_counterpart_id: \"6\"\n },\n \"11\": {\n id: \"11\",\n title: \"another project\",\n participant_ids: [\"2\", \"8\"],\n primary_counterpart_id: \"8\"\n }\n },\n \"users\": {\n \"2\": { id: \"2\", full_name: \"bob\" },\n \"6\": { id: \"6\", full_name: \"chaz\" },\n \"8\": { id: \"8\", full_name: \"jane\" }\n }\n}\n```\n\nAs you can see, Kantata OX API responses can return multiple data types simultaneously, transferring objects and their associations in a single response. In this example, the developer has likely requested the `/workspaces.json` endpoint, asking for inclusion of those workspaces' participants and primary counterparts. These associations have come back in the top-level object called `users`. The developer should always use the returned `results` array to retrieve the canonical results from an API request. This is because some objects may have associations of the same type and can thus be mixed together with their associations in the JSON. For example, stories (tasks) have sub_stories which are the same type of object, so looking directly at the returned `stories` key when stories have been requested to include their sub_stories will be confusing and will include both. Instead, iterate the `results` key to determine exactly which top-level objects matched your query and in what order.\n\nThe follow sections explain how to customize further the Kantata OX API responses to your needs.\n\n## Pagination\n\nLarge lists of items may be returned in pages. The JSON response will contain a key named `count` with a value of the number of objects returned by the entire query. If that number is greater than the number of objects returned by the request, additional objects may be requested by setting the parameter `page`, the parameter `per_page`, or both.\n\nIf you would like to start at a specific offset you may alternatively use `limit` and `offset` parameters. If both `limit` and `offset` are passed then `page` and `per_page` are ignored, otherwise behavior falls back to `page` and `per_page`.\n\n* `page`\n * type: Integer\n * default: 1\n* `per_page`\n * type: Integer\n * default: 20\n * maximum: 200\n* `usage`\n * workspaces.json?page=2&per_page=15\n\n-or-\n\n* `limit`\n * type: Integer\n * minimum: 1\n* `offset`\n * type: Integer\n * minimum: 0\n* `usage`\n * workspaces.json?limit=15&offset=10\n\n## Request by ID\n\nWhile each API endpoint returns a paginated listing of the data available, it is sometimes more useful to request only one (or only a few) items. The Kantata OX API provides two ways to do this. The first, via the `only` parameter, allows you to request one or more resources directly by ID. To request the data for a single Workspace with an ID of 5, make an API request to the URL `GET /api/v1/workspaces.json?only=5`. Multiple IDs can be supplied in a comma separated list, like `GET /api/v1/workspaces.json?only=5,6,7`. The returned JSON will contain only the objects with those IDs.\n\n* `only`\n * type: Comma separated Integers\n * default: not applicable\n* `usage`\n * workspaces.json?only=5,6\n\nAdditionally, we support traditional RESTful routes, such as `GET /api/v1/workspaces/5.json`. These routes also support our standard filters and includes, both detailed below. Unlike `only` requests to our \"index\" routes, these \"show\" routes will generate a 404 response if the requested resource cannot be found. Sometimes this is due to default filters being applied, so be sure to check the filter defaults applied in the specific documentation for the requested resource. More on filters below.\n\n## Filters\n\nMany API endpoints also provide an optional set of filters that can be applied to the data that will be returned. Each filter, and the logic behind it, is documented on the individual endpoint pages, but the general form is a URL query parameter or request parameter like `filter1=arg1&filter2=arg2`, where `filter1` and `filter2` are the names of two different filters, and `arg1` and `arg2` are the arguments to each filter, respectively. Additionally, some filters have default values, which indicates that they are automatically applied to your request with their default value. Default values are applied both on \"index\" (`GET /workspaces.json`) requests and \"show\" (`GET /workspaces/1.json`) requests.\n\n## Includes\n\nSome objects returned by the API may have associations that are not included in the JSON response by default. Those associated objects can be requested by adding an `include` parameter to the request. For example, to request both a list of posts, and the users that created those posts, you could request `/posts.json?include=user`. The response will consist of a JSON object with an array of result mappings under the `\"results\"` key, a `\"posts\"` key with a hash of post objects, keyed by id, and a `\"users\"` key with a hash of user objects, again keyed by id. To find the user that created a particular post, just use the post object's `\"user_id\"` key to find the user object keyed with the same id.\n\nMultiple associations may be fetched simultaneously by adding comma-separated values to the `include` parameter. For example, to fetch the user and replies associated with post 6, you might request `/posts.json?only=6&include=user,attachments`, which would supply both the users and the attachments that belong to the posts returned in the response.\n\n_Example_\n\n\n```curl\ncurl -H \"Authorization: Bearer abc123\" \"https://api.mavenlink.com/api/v1/posts.json?include=user,attachments\"\n```\n\n```json\n{\n \"count\": 1,\n \"results\": [\n { \"key\": \"posts\", \"id\": \"16270634\" }\n ],\n \"posts\": {\n \"16270634\": {\n \"id\": \"16270634\",\n \"message\": \"Hello World\",\n \"has_attachments\": true,\n \"user_id\": \"2\",\n \"workspace_id\": \"2249167\",\n \"attachment_ids\": [\"6700107\"]\n }\n },\n \"users\": {\n \"2\": {\n \"id\": \"2\",\n \"full_name\": \"John Doe\",\n \"email_address\": \"johnny_doe@example.com\"\n }\n },\n \"attachments\": {\n \"6700107\": {\n \"id\": \"6700107\",\n \"created_at\": \"2013-04-15T16:48:48-07:00\",\n \"filename\": \"turtle.jpg\",\n \"filesize\": 16225\n }\n }\n}\n```\n\n## Optional Fields\n\nSome objects returned by the API may have fields that are not included in the JSON response by default. Those optional fields can be requested by adding an `optional_fields` parameter to the request. For example, to request a list of stories and include the optional field `can_edit`, you could request `/stories.json?optional_fields=can_edit`. Each story in the response will include the requested optional field in their JSON.\n\nMultiple optional fields may be requested simultaneously by adding comma-separated values to the `optional_fields` parameter. For example, to fetch stories and include both `can_edit` and `can_post` fields in the response, you can request `/stories.json?optional_fields=can_edit,can_post`.\n\n_Example_\n\n\n```curl\ncurl -H \"Authorization: Bearer abc123\" \"https://api.mavenlink.com/api/v1/stories.json?optional_fields=can_edit,can_post\"\n```\n\n```json\n{\n \"count\": 1,\n \"results\": [\n {\n \"key\": \"stories\",\n \"id\": \"1941361\"\n }\n ],\n \"stories\": {\n \"1937928\": {\n \"title\": \"Example Story\",\n \"description\": \"example description\",\n ...\n \"subtree_depth\": 0,\n \"ancestry_depth\": 0,\n \"can_edit\": true,\n \"can_post\": true,\n \"time_trackable\": true,\n \"time_estimate_in_minutes\": null,\n ...\n \"parent_id\": null,\n \"root_id\": null,\n \"id\": \"1937928\"\n }\n },\n \"meta\": {\n \"count\": 1,\n \"page_count\": 1,\n \"page_number\": 1,\n \"page_size\": 20\n }\n}\n```\n\n## Ordering\n\nEach endpoint in the Kantata OX API allows ordering by various fields. If we're missing a sort field that you need, please ask! See the specific endpoint documentation for endpoint-specific details.\n\nWhen ordering, supply `order` with the name of a valid sort field for the endpoint and a direction. For example, `order=created_at:desc`.\n\n## Searching\n\nSome API endpoints support text search, however only some filters can be combined with search, and results will be returned ordered by relevancy to the search query. Search does not apply to `only` requests. If search is unavailable the response will contain a system error describing the problem.\n\nTo make a search request, simply add a `search` parameter to the request. For example, to search for stories with \"estimates\" in the title, assignee names, or other fields, request `/stories.json?search=estimates`\n\n## Errors\n\nIf there is an error while processing your request, the response will include an HTTP status code indicating the error. Errors are currently returned as a top-level `errors` key with an array of error objects. For example, on OAuth failure you will receive a HTTP 401 with the following JSON body:\n \n\n```json\n{\n errors: [\n {\n type: \"oauth\"\n message: \"Invalid OAuth 2 Request\"\n }\n ]\n}\n```\n\nSystem errors will look like:\n\n\n```json\n{\n errors: [\n {\n type: \"system\"\n message: \"Your account has been canceled\"\n }\n ]\n}\n```\n\nAnd model validation errors look like:\n\n\n```json\n{\n errors: [\n {\n type: \"validation\",\n message: \"Please give your project a title\",\n field: \"title\"\n },\n {\n type: \"validation\",\n message: \"Please select a role for this project\",\n field: \"creator_role\"\n }\n ]\n}\n```\n\n\n## Rate Limits\n\nWhen too many requests are made in a short amount of time, the API may reply with the HTTP code 429 Too Many Requests. In that case, simply retry your request after a small delay.\n\nThere are general rate limits applied to all requests. The following endpoints also have their own rate limits:\n\n* [Create a workspace](/tag/Workspaces#operation/create-workspace) - `POST /api/v1/workspaces`\n* [Get workspaces](/tag/Workspaces#operation/get-workspaces) - `GET /api/v1/workspaces`\n* [Create a workspace invitation](/tag/Workspaces#operation/create-workspace-invitation) - `POST /api/v1/workspaces/{id}/invite`\n* [Create an account invitation](/tag/Account-Invitations#operation/create-account-invitation) (i.e. Create a new user) - `POST /api/v1/account_invitations`\n* [Resend an account invitation](/tag/Account-Invitations#operation/resend-account-invitation) - `PUT /api/v1/account_invitations/{id}/resend`\n* [Create custom field value](/tag/Custom-Field-Values#operation/create-custom-field-value) - `POST /api/v1/custom_field_values`\n* [Get custom field values](/tag/Custom-Field-Values#operation/get-custom-field-values) - `GET /api/v1/custom_field_values`\n* [Create a project snapshot](/tag/Project-Snapshots#operation/create-project-snapshot) - `POST /api/v1/project_snapshots`\n\nPlease see the [Knowledge Base](https://knowledge.kantata.com/hc/en-us/articles/9698066628123) for the exact rate limits.\n\nPlease note that we reserve the right to change the limits at any time. In addition, if we determine that someone is using the API improperly, we may adjust the limits further.\n\n## Timeouts\n\nAll API requests will timeout after 3 minutes. Timeouts typically occur when there is a lot of data to return. You can use the following strategies to avoid your requests timing out:\n\n* Break up your request into smaller requests\n* Apply a date filter to your request\n* If you are polling multiple endpoints in order to export data or sync Kantata data to a third-party system, use the [Subscribed Events API](/tag/Events) instead. You can get recently updated objects in one request.\n"
termsOfService: https://www.kantata.com/terms-of-use
contact:
name: Kantata OX Support
url: https://knowledge.kantata.com/hc/en-us
license:
name: COPYRIGHT © 2026 Kantata, Inc.
url: https://www.kantata.com/terms-of-use
x-logo:
url: https://theme.zdassets.com/theme_assets/56104/04e93064d309f75d054b8cee885d1ea51e9be8f7.png
backgroundColor: '#FFFFFF'
altText: Kantata OX API Documentation
href: https://developer.kantata.com
servers:
- url: https://api.mavenlink.com/api/v1
tags:
- name: Users
description: 'Users represent the individuals that are participating in Kantata OX projects . User objects are often returned as
nested JSON objects within other returned items such as posts or tasks.'
paths:
/users:
get:
summary: Fetching visible users
description: 'This endpoint allows you to access all visible users based on the permission level of the requester.
> **Note**: This endpoint relies on project participation and will not return a member of your account
who is not in a project. To see all users on the account, use the `on_my_account` option.
If the requester is an Account Administrator, the request will return all users who are participating in a project on the requester''s account.
In addition, it will return users not on the requester''s account if they are participating in any project with an account member (either on the requester''s account or their own account).
If the requester is not an Account Administrator, the request will only return users who are participating in a project with the requester.
This endpoint returns structured User objects.
As with all Kantata OX API endpoints, the returned data will be referenced in sorted order in the `results` array
and will be indexed by ID in the `users` top-level JSON key.
Please see our [Response Format](#section/Response-Format) section for more information.'
operationId: Get Users
tags:
- Users
parameters:
- in: query
name: account_id
description: Only includes users on the specified account. This filter is not available in conjunction with the `on_my_account` option.
schema:
type: integer
format: int32
- in: query
name: account_role_ids
description: 'Only includes users with a specified role ID. (Format: ''role_id,role_id'').'
schema:
type: string
- in: query
name: all_contacts
required: false
description: Returns all users in the requester's contact list.
schema:
type: boolean
- in: query
name: assignable_to_resource
description: Only includes users who can be assigned to a project resource with a specified ID.
schema:
type: integer
format: int32
- in: query
name: belonging_to_orgs
description: 'Only includes users that belong to the specified geographies or departments (Format: ''geo_id,geo_id;dept_id,dept_id'').'
schema:
type: string
- in: query
name: by_custom_choice_value
description: 'Filter by a custom field choice value, represented as a string with the custom field ID, followed by a
colon, and then comma-separated custom field choice value IDs. The custom field choice value can also be
the word `blank`. Multiple custom fields can be delimited by semicolons or by parentheses and colons.
The following formats are supported:
- `custom_field_ID:choice_value_ID`
- `custom_field_ID:choice_value_1_ID,choice_value_2_ID`
- `custom_field_ID:blank`
- `(custom_field_1_ID:choice_value_1_ID,choice_value_2_ID):(custom_field_2_ID:choice_value_3_ID)`.'
schema:
type: string
- in: query
name: by_custom_currency_value
description: 'Filter by a custom field currency value, represented as a string with the custom field ID, followed by a
colon, and then the currency value. Optionally, the currency [ISO code](https://mavenlink.zendesk.com/hc/en-us/articles/360041576473) can be supplied as well, separated
from the currency value by another colon. Multiple custom fields can be delimited by semicolons or by parentheses and colons.
The following formats are supported:
- `(1:200.2:USD):(2:100)`.'
schema:
type: string
- in: query
name: by_custom_date_value
description: 'Filter by a custom field date value, represented as a string with the custom field ID, followed by a
colon, the starting date, another colon, and then the ending date. You can provide both a starting date
and ending date, or provide just one. Multiple custom fields can be delimited by semicolons or by parentheses and colons.
The following formats are supported:
- `(1:2014-12-05:2014-12-25):(2:2014-12-05)`.'
schema:
type: string
- in: query
name: by_custom_number_value
description: 'Filter by a custom field number value, represented as a string with the custom field ID, followed by a
colon, and then the number value. Multiple custom fields can be delimited by semicolons or by parentheses and colons.
The following formats are supported:
- `(1:200):(2:101)`.'
schema:
type: string
- in: query
name: by_custom_text_value
description: 'Filter by a custom field text value, represented as a string with the custom field ID, followed by a
colon, and then the text value. Multiple custom fields can be delimited by semicolons or by parentheses and colons.
The following formats are supported:
- `(1:something):(2:else)`
- `(1:something):(1:else)` (multiple values for the same field, returns objects matching any value)
- `1` (bare field ID with no value, returns all objects that have any value for that field).'
schema:
type: string
- in: query
name: by_email_address
description: Only includes users whose email address exactly matches the specified address.
schema:
type: string
- in: query
name: by_email_addresses
description: 'Return only users whose email addresses exactly match the specified email addresses.
You can provide a list of comma-separated email addresses as a query parameter in the request URL or
provide an array of email addresses in the request body. You can specify up to 200 email addresses.'
schema:
type: string
- in: query
name: by_full_name
description: Only includes users with all or part of the specified full name.
schema:
type: string
- in: query
name: by_full_name_or_account_role
description: Only includes users with a matching full_name or default_role specified a search term.
schema:
type: string
- in: query
name: can_be_approver_in_workspace
description: Only includes users that are providers and have financial access in a project with a specified ID.
schema:
type: integer
format: int32
- in: query
name: can_view_reports
description: Only include users who have account level permission of reports viewer or above.
schema:
type: boolean
- in: query
name: clients_only
description: Only includes users that are in at least one project as a client.
schema:
type: boolean
- in: query
name: consultants_only
description: Only includes users that are in at least one project as a provider.
schema:
type: boolean
- in: query
name: contacts_on_different_account
required: false
description: Returns all the users that are in the requester's contact list, but on seperate accounts.
schema:
type: boolean
- in: query
name: created_after
description: Filter for records created after a specified datetime. The datetime must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.
schema:
type: string
format: date-time
- in: query
name: created_before
description: Filter for records created before a specified datetime. The datetime must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.
schema:
type: string
format: date-time
- in: query
name: external_reference_external_message
description: Filter the objects based on the external message of their associated external references. This is an exact match.
schema:
type: string
- in: query
name: external_reference_external_status
description: Filter by the status of the external object in the external system.
schema:
type: string
- in: query
name: external_reference_service_model
description: Filter by the type of the external object this external reference belongs to.
schema:
type: string
- in: query
name: external_reference_service_model_ref
description: Filter by the id of the external object this external reference belongs to.
schema:
type: integer
format: int32
- in: query
name: external_reference_service_model_refs
description: Filter for objects that correlate to the specified external object IDs. Provide a comma-separated list of up to 200 external IDs.
schema:
type: string
- in: query
name: external_reference_service_name
description: Filter by the name of the provider for integration.
schema:
type: string
- in: query
name: external_reference_status
description: Filter by the status of the integration, this can be successful or fail.
schema:
type: string
- in: query
name: has_external_references
description: Filter by whether or not the object has external references.
schema:
type: boolean
- in: query
name: has_value_for_custom_field_ids
description: Filter by the presence of a custom field value for the specified comma-separated custom field ID(s).
schema:
type: string
- in: query
name: include
description: 'Any of the below associations can be included in your request by providing the `include` param, e.g. `include=association1,association2`.
- `account_membership` (AccountMembership) - Retrieves the account membership of the user, which represents the relationship of a user to an account. The response will include `account_membership_id`, which references the data in the `account_memberships` top-level key.
- `custom_field_values` (CustomFieldValue) - Retrieves the user''s custom field values that are viewable for the current user. The response will include `custom_field_value_ids`, which references the data in the `custom_field_values` top-level key.
- `external_references` (ExternalReference) - Includes references to external integrations for this object.
- `manager` (User) - Retrieves the user''s manager. The response will include `manager_id`, which references the data in the `users` top-level key.
- `role` (Role) - Retrieves the user''s account role. The response will include `role_id`, which references the data in the `roles` top-level key.
- `skill_memberships` (SkillMembership) - Retrieves the skill memberships of the user, which represent skills that have been assigned to a user. The response will include `skill_membership_ids`, which references the data in the `skill_memberships` top-level key. The `skill_memberships` data will include the user''s proficiency level (for skills which can be assigned proficiency levels).
- `skills` (Skill) - Retrieves the user''s skills. The response will include `skill_ids`, which references the data in the `skills` top-level key. The `skills` data will include the skill description and category ID.
- `work_samples` (WorkSample) - Retrieves the user''s portfolio items. The response will include `work_sample_ids`, which references the data in the `work_samples` top-level key.'
schema:
type: string
- in: query
name: is_project_lead
description: Only include users who have account level permission of project lead or above.
schema:
type: boolean
- in: query
name: managers
descripti
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavenlink/refs/heads/main/openapi/mavenlink-users-api-openapi.yml