API Documentation
Integrate Upwork functionalities to your web-based or mobile apps
Upwork Developers Site offers you access to our web services to build your own applications and to integrate our features and workflow to your dashboards, websites and management systems.
Please read Terms of use prior to using the Upwork Public API.
Getting started is easy. Check out our Getting Started page to learn about the core concepts of our GraphQL API, such as supported authentication methods, languages and tools.
This page contains complete API reference of available Queries and Mutations, just use the navigation panel on the left.
Have a question? Visit us at:
Contact
API Support
Terms of Service
API Endpoints
# Endpoint:
https://api.upwork.com/graphql
Terminology
Users, clients, freelancers
User:
An Upwork account holder. A user can have multiple roles simultaneously: client, freelancer, agency staffing manager, and so on. A user must be a single person and account sharing is not allowed. Others can be added to your company or agency.
Freelancer:
A person who can apply to jobs, work, and get paid by clients via Upwork. In API parameters and arguments, sometimes the terms provider and contractor are used to mean freelancer. Those are legacy names for the term.
Client:
A person who, as part of a company, can hire Upwork freelancers. In API parameters and arguments, sometimes the term buyer is used to mean client- it’s a synonym.
Agency contractor:
There are two types of agency contractors. Exclusive agency contractors can only work on behalf of the agency. The agency controls all their earnings. They cannot control their rates. Non-exclusive agency contractors can work for multiple agencies and/or independently. An agency can only control their agency jobs. Agency contractors can access reports on their worked hours, but not their earnings reports.
Companies, teams, agencies
Company:
A primary financial entity and organizational unit. Larger companies can request to be divided into multiple teams.
Team:
A basic unit of organization. Members of the team can see each other and work on common tasks. Most user permissions are also relative to the team. At the beginning, each company has one dedicated team room, but others can be added later.
Agency:
Acts as intermediary between the client and the freelancer. The client still hires a specific person, but the contract is paid to the agency. Agency size and staffing manager involvement varies widely.
Job postings, offers and contracts
Job Posting:
Description of the work to be done and the application guidelines for freelancers.
Offer:
Proposal of contract terms as part of the hiring process. It can be initiated by the client or the freelancer, but it must be agreed upon by both parties.
Contract:
The terms and conditions that rule a particular job between a client and a freelancer. Legacy terms: engagement.
Fixed-price contract:
Flat-rate contract or payment for milestones. It is not covered by the Upwork Guarantee.
Hourly contract:
Contract billed per hour based on the Work diary registry. It is covered by the Upwork Guarantee.
Charge amount:
The amount of money that is deducted from the company’s financial account (Upwork fee included).
Amount:
The amount of money that a freelancer or an agency receives as payment (Upwork fee not included).
Work diary:
The Work diary acts as a visual time card. It is the basis for Upwork’s automated weekly billing system. It shows clients hours worked and work-in-progress screenshots.
Getting Started
Preparation
Before you start using Upwork API, you need to register your application and obtain your client credentials (a.k.a consumer key and consumer secret). To register, you just fill in basic information about your application and its intended use.
Every new request for an API Key will be reviewed. For a quick positive decision, you need to comply the following conditions:
- Upwork profile must have:
- a valid name in your profile (no fake names, no company names)
- a full valid address (including apartment number) - either in your personal or your company’s profile
- a valid profile portrait
- Provide a clear description on what you are planning using our APIs for (this info is required when you apply for a key). Make sure you add a note stating if you are going to use your application internally or publicly, or for any other purposes.
- Agree to use the Upwork API in a manner that does not exceed a reasonable request volume. Our daily allowed limit is 40K requests.
- Refrain from using the Upwork logo, brand name, brand theme/colors and trademarked content in your application.
- Meet the other requirement described on this Support Page.
Users who try registering a new application/key, but have a profile without a valid ID will be forced to go through the ID verification process.
Application Permissions
When you register a new application, you are asked to define a list of permissions to access third-party resource data; we call them “Application Permissions”. You can later modify the application permissions you request, but note that doing so makes all previously generated access tokens invalid. You will also have to request authorization from resource owners again.
Take into account that caching shouldn't go against Upwork ToS. Specifically, we don't allow storing data for more than 24 hours.
See the list of your registered applications (keys)
What are Scopes
Scopes are collections of permissions to access a specific set of APIs. They are usually grouped by domain and provide more control over sharing your account resources with different roles within your organization.During the API key request process through the API Center, you are required to select the API Key scopes. At that point, your selection defines what APIs can be accessed by that specific API Key.
Permissions Troubleshooting
When executing API queries, Upwork checks for permissions granted to the API Key in context. If the API Key does not have the required permissions to execute the query, the following message is returned:The client or authentication token doesn't have enough oauth2 permissions/scopes to access <list of fields>
Contact the Upwork support team if you need help extending or customizing your API Key Scopes.

Security
Security is a paramount thing, especially when it comes to accessing sensitive data and resources through APIs. However, static API credentials may cause a security risk if leaked. In order to mitigate this risk, Upwork provides the way for rotating API credentials regularly.While creating an API key, you can choose the rotation period. The default one corresponds to 12 months. Any key can be rotated at any time manually.
Contact the Upwork support team if you need help.
Requests limits
The rate limit of the API is primarily considered on a per-IP basis. We allow 300 requests per minute per IP address. When an application exceeds the rate limit for our API, we return an HTTP 429 “Too Many Requests” response code. — Caching is not allowed for more than 24 hours according to our Terms of Service.To avoid being rate-limited, please use caching in your application. Store API responses in your application if you expect a lot of use. For example, don’t try to call the Upwork API on every page load. Instead, call the API infrequently, and load the response into a local cache. When users hit your website, load the cached version of the results.
Authentication (OAuth2)
To access Upwork API, you need to go through an authentication process. Currently, we support the OAuth 2.0 method.
You need to authenticate for all requests following the OAuth 2.0, RFC 6749.
OAuth2 Basics
The OAuth 2.0 protocol enables websites or applications (clients) to access protected resources from a Web service (server) via an API, without requiring resource owners to disclose their service provider credentials to the clients. For more information on the OAuth 2.0 workflow process, visit the OAuth 2.0 protocol official site.
Client ID
For each application you develop, you need to obtain new client credentials. These include a client identifier and a client shared-secret. You can request these credentials in the API Center while logged into your Upwork account (select Key Type OAuth 2.0). You will receive a key (client_id) for each client identifier and client shared-secret you request.
Required X-Upwork-API-TenantId header
Each request requires the organization context. In order to specify on behalf of which context the request should be executed, you need to send X-Upwork-API-TenantId header. When the header is missing, the request will use the default organization of the user.
How X-Upwork-API-TenantId header can be used to set the Organization for the execution context
In order to get a value for the X-Upwork-API-TenantId header, you need company selector query.
Sample company selector query:
companySelector { items { title organizationId } }
The request with X-Upwork-API-TenantId would look like:
curl --request POST \ --url https://api.upwork.com/graphql \ --header 'Authorization: bearer oauth2v2_f5*************************' \ --header 'Content-Type: application/json' \ --header 'X-Upwork-API-TenantId: 470*************' \ --data '{"query":"query { \ organization { \ id \ childOrganizations { \ id \ name \ } \ } \ }"}'
In this case query.organization and organization.childOrganizations will contain information about organization with id 470***********97.
Without the header query.organization will contain the information about 584***********76 which is the default organization for the user.
How the default Organization is selected when the header is not present
A default organization is one of the organizations that the user has access to. It is the same Organization that gets selected as the current Organization when a user logs in into the platform.
Flow and Supported Grants
For authenticating via OAuth 2.0 protocol, API requests MUST follow RFC 6749 specification.
At a basic level, the OAuth 2.0 authentication process involves the following steps:
- Authorize the application using one of the available grants and obtain an Authorization code in Code Authorization Grant
- Get an Access token in Code Authorization Grant and read it from the Implicit Grant workflow callback that follows the redirect in step#1

Once you receive an access token, you can use it to access protected resources. Use either the access_token parameter, or the Authorization header (recommended) with the Bearer schema and one of the supported grants. TTL for an access token is 24 hours; TTL for a refresh token is 2 weeks since its last usage.
Supported Grants
- Authorization Code Grant - requires authorization request and access token request calls.
- Implicit Grant - requires an authorization request call.
- Client Credentials Grant - requires an access token request call. This grant is available for enterprise accounts only.
- Refresh Token Grant Type - requires an access token request call.
Client Credentials Grant
Client Credentials Grant is an OAuth 2.0 flow that enables you to obtain an access token in server-to-server and client-to-server scenarios. Although users are involved in this flow, you can use the access token outside the context of a user. For example, you can leverage the access token to access the client's resources.
Client Credentials grant is only available to Enterprise consumers
Prerequisites
Data | Description |
---|---|
Client ID |
For each application you develop, you must obtain a client identifier key. To get this value, access https://www.upwork.com/developer/keys/apply and log in by using your Upwork credentials. Notes:
|
Client Secret |
For each application you develop, you must obtain a client shared-secret key. To get this value, access https://www.upwork.com/developer/keys/apply and log in by using your Upwork credentials. Notes:
|
Step 1. Obtaining an access token
Keep the access token private. If someone obtains your token, they could use it to access private user data.
Endpoint
POST https://www.upwork.com/api/v3/oauth2/token
Parameters
Grant type. To get an access token for the client credentials grant, use client_credentials.
Your Client ID.
Your Client Secret.
Returns
Returns the access token and its TTL. Example:{ "access_token": "oauth2v2_584006c0ef4f69fd8278c7769da6ff43", "token_type": "Bearer", "expires_in": 86400 }
Refresh Token Grant Type
Refresh Token Grant Type is an OAuth 2.0 flow that enables you to exchange a refresh token for an access token when the access token has expired. Therefore, you can continue to have a valid access token without further interaction with the user.
Prerequisites
Data | Description |
---|---|
Client ID |
For each application you develop, you must obtain a client identifier key. To get this value, access https://www.upwork.com/developer/keys/apply and log in by using your Upwork credentials. Notes:
|
Client Secret |
For each application you develop, you must obtain a client shared-secret key. To get this value, access https://www.upwork.com/developer/keys/apply and log in by using your Upwork credentials. Notes:
|
Step 1. Obtaining an access token
Keep the refresh token private. If someone obtains your token, they could use it to access private user data.
Endpoint
POST https://www.upwork.com/api/v3/oauth2/token
Parameters
Grant type. To refresh an existing token, having a valid refresh token, use refresh_token.
Your Client ID.
Your Client Secret.
A valid refresh token.
Returns
If you authenticated previously and have a working refresh token, this call returns the refreshed tokens and the TTL of the access token.{ "access_token": "oauth2v2_daedc8c79a4d5f80b88b2ce953772a0f", "refresh_token": "oauth2v2_e8ae4feb6b8d10693d8cff420351461a", "token_type": "Bearer", "expires_in": 86400 }
Service accounts
Service accounts are specific to a service or application and are designed to run applications. Service accounts help you communicate with multiple applications, such as web servers and databases. Unlike user accounts, service accounts are used by system services, for example, web servers, mail transport agents, and databases.
Service accounts are useful when you need to fetch information. For example, you can use service accounts to get information about multiple users in a company. However, you must not use service accounts to perform write operations.
Note that service accounts are available only for enterprise accounts in Upwork.
Prerequisites for using a Service Account in Upwork
- You must apply for the client credentials key.
After Upwork creates the Client Credentials key and associates it with a service account, you can assign appropriate scopes and permissions to the service account.
Requesting a Client Credentials key
To apply for the Client Credentials key:
- Go to https://www.upwork.com/developer/keys/apply and provide the requested information about your application.
For more information, see the Getting Started section. - Select the I want to create a Client Credential key for Service Account check box.
- Select the relevant scopes. For more information, see scopes.
- Save the changes.
Upwork creates the Client Credentials key and displays the values in a pop-up window. In addition, you can view your key at https://www.upwork.com/developer/keys/.
Upwork also creates a Service Account and associates the account with the Client Credentials key. Thereafter, if you perform any actions by using the key, the system actually performs such actions on behalf of the Service Account and not your user account.
Assigning Scopes to Service Accounts
Scopes are collections of permissions to access a specific set of APIs. They are usually grouped by domain and provide more control over sharing your account resources with different roles within your organization.
While applying for the Client Credentials key, you can select the relevant Scopes. These Scopes define the APIs that you can access by using the same key. For more information about Scopes, see What are Scopes.
Assigning permissions to Service Accounts
A Service Account is a user entity. By default, Service Accounts do not have any permissions. To access data by using a Service Account, you must have proper permissions associated with the Service Account.
To assign permissions to Service Accounts:
- Log in to your Service Account.
- Under Settings > Members & Permissions, locate the Service Account and update permissions according to the available options. You can set both team and company-level permissions depending on your needs. For more information, see Team Permissions.

Now, you are ready to leverage your service account to call Upwork’s APIs and perform specific operations.
Authorization Request
The Upwork server must request authorization from the resource owner to grant you access to the required data. To do so, you must redirect the resource owner to Upwork server’s authentication endpoint.
Keep the refresh and access token private. If someone obtains your tokens, they could use them to access private user data.
Endpoint
GET https://www.upwork.com/ab/account-security/oauth2/authorize
Parameters
The corresponding Grant Type. Use `code` for Authorization Code Grant and `token` for Implicit Grant.
Valid values: code, token
Your Client ID.
The callback URL.
Returns
Returns a code for the Authorization Code Grant or an access token for the Implicit Grant. Example:Access Token Request
Keep the refresh and access token private. If someone obtains your tokens, they could use them to access private user data.
Endpoint
POST https://www.upwork.com/api/v3/oauth2/token
Parameters
Grant type. To get a token right after authorization, use `authorization_code`. To refresh an existing token, having a valid `refresh token`, use `refresh_token`.
To get an access token for the client credentials grant, use `client_credentials`.
Valid values: authorization_code, refresh_token, client_credentials
Your Client ID.
Your Client Secret.
Authorization code received during the authorization request. Required for `authorization_code` grant.
Redirect URI, must be equal or similar to the callback specified in the key settings. Required for `authorization_code` grant.
A valid refresh token. Required for `refresh_token` grant.
Returns
If the authorization is successful, this call returns the tokens and the TTL of the access token.Refresh Token Request
The Access Token request should be used with the proper grant type, which is "refresh_token", in order to refresh the token.
Keep the refresh and access token private. If someone obtains your tokens, they could use them to access private user data.
Returns
If you authenticated previously and have a working refresh token, this call returns the refreshed tokens and the TTL of the access token.
Libraries and Tools
A library is a collection of behavior implementations, written in a specific programming language. Libraries help you make system calls without the need to re-write code over and over again.
These are the libraries built specifically to support Upwork API:
The following Tools are also available:
GQL Explorer - the tool allows you test GraphQL requests
API Center (Request new API Key) - allows you request a new application (API Key)
API Center (View existing API Keys) - manages all requested applications (API Keys)
API Subscriptions Management Tool - manages your GraphQL subscriptions
Terms of Use - here you can find terms, rules, and conditions of using Upwork API
Legacy REST API Docs - Documentation for our Legacy REST APIs can be viewed here. Note that these APIs are planned to be sunset and should only be used as a reference
REST to GraphQL examples
Please note that the scope "Common Entities - Read-Only Access" will be required for all the cases.
Messages
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Messaging - Read-Only Access | Grants read-only access to rooms and messages |
Messaging - Read and Write Access | Grants read/write access to rooms and messages |
Retrieve rooms information
Gets the rooms for the current user and organization
REST
GET /api/messages/v3/{company_id}/rooms.{format}
GraphQL
query roomList(
$filter: RoomFilter,
$pagination: Pagination,
$sortOrder: SortOrder
) {
roomList(
filter: $filter,
pagination: $pagination,
sortOrder: $sortOrder
) {
totalCount
pageInfo {
endCursor
hasNextPage
}
edges {
node {
numUnread
numUnreadMentions
numUsers
favorite
latestStory {
createdDateTime
updatedDateTime
}
topic
roomType
id
roomName
organization {
id
legacyId
}
roomUsers {
user {
id
}
organization {
id
}
role
}
creator {
user {
id
nid
name
}
}
createdAtDateTime
public
owner {
user {
id
}
}
}
}
}
}
Variables
{
"filter": {
"roomType_eq": "ALL",
"roomPrivacy_eq": "ALL",
"subscribed_eq": false,
"activeSince_eq": "xyz789",
"includeFavorites_eq": false,
"includeUnreadIfActive_eq": false,
"unreadRoomsOnly_eq": false,
"local_eq": "abc123",
"includeHidden_eq": true,
"objectReferenceId_eq": "4",
"roomCategory_eq": "FAVORITES"
},
"pagination": {"after": "abc123", "first": 987},
"sortOrder": "ASC"
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
rooms.roomId | roomList.edges.node.id | The ID of the room |
rooms.orgId | roomList.edges.node.organization.id | The ID of the org that the room belongs to |
rooms.roomName | roomList.edges.node.name | The name of the room |
rooms.roomType | roomList.edges.node.roomType | The room type |
rooms.topic | roomList.edges.node.topic | The topic of the room |
rooms.numUnread | roomList.edges.node.numUnread | The number of unread messages in the room for the current user |
rooms.numUnreadMentions | roomList.edges.node.numUnreadMentions | The number of unread messages with @ mentions in the room for the current user |
rooms.numUsers | roomList.edges.node.numUsers | The number of users in the room |
rooms.isFavorite | roomList.edges.node.favorite | Indicates whether the user marked the room as a favorite or not |
rooms.latestStory.created | roomList.edges.node.latestStory.createdDateTime | The creation timestamp of the story |
rooms.latestStory.updated | roomList.edges.node.latestStory.updatedDateTime | The update timestamp of the story |
rooms.users.userId | roomList.edges.node.roomUsers.user.id | The ID of the user |
rooms.users.orgId | roomList.edges.node.roomUsers.organization.id | The ID of the org (company context) that the user is subscribed with |
rooms.users.role | roomList.edges.node.roomUsers.user.role | Role of the user. Returned only if returnUserRoles is set |
rooms.cursor | roomList.edge.cursor | The ID of the last room returned in the call |
rooms.total | roomList.totalCount | The total number of matching rooms, for paging purposes |
rooms.appId | roomList.edges.node.vendorProposal.id | Unique application ID |
Get a specific room information
Gets a specific room information
REST
GET /api/messages/v3/{company_user_id}/rooms/{room_id}.{format}
GraphQL
query room($roomId: ID!) {
room(id: $roomId) {
id
organization {
id
}
roomName
roomType
topic
lastVisitedDateTime
lastReadDateTime
favorite
readOnly
hidden
roomUsers {
user {
id
}
organization {
id
}
role
}
stories {
totalCount
pageInfo {
endCursor
}
edges {
node {
id
createdDateTime
updatedDateTime
user {
id
}
message
systemStory
}
}
}
}
}
Variables
{"roomId": 4}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
roomId | room.id | The ID of the room |
orgId | room.organization.id | The ID of the org that the room belongs to |
roomName | room.roomName | The name of the room |
roomType | room.roomType | The room type |
topic | room.topic | The topic of the room |
lastReadTimestamp | room.lastVisitedDateTime | Timestamp of the last time the user accessed the room |
recentTimestamp | room.lastReadDateTime | Timestamp of the latest activity in the room for sorting purposes |
isFavorite | room.favorite | Indicates whether the user marked the room as favorite or not |
isReadOnly | room.readOnly | Indicates whether the room is archived or not |
isHidden | room.hidden | Indicates whether the room marked as hidden/archived or not |
roleI | room.roomUsers.role | Indicates a role of the user in the particular room |
users.userId | room.roomUsers.user.id | The ID of the user |
users.orgId | room.roomUsers.organization.id | The ID of the org that the user is subscribed with |
users.role | room.roomUsers.role | The role of the user. Returned only if returnUserRoles is set |
stories.stories.storyId | room.stories.edge.node.id | Story ID |
stories.stories.created | room.stories.edge.node.createdDateTime | Indicates when the message was created |
stories.stories.updated | room.stories.edge.node.updatedDateTime | Indicates when the message was updated |
stories.stories.userId | room.stories.edge.node.user.id | ID of a user who posted the message |
stories.stories.message | room.stories.edge.node.message | Message |
stories.stories.isSystemStory | room.stories.edge.node.systemStory | Flag indicates whether the message is system |
stories.cursor | room.stories.edge.cursor | Current position of a cursor |
stories.total | room.stories.totalCount | Total number of messages |
Get messages from the room
Gets messages/stories from a specific room
REST
GET /api/messages/v3/{company_user_id}/rooms/{room_id}/stories.{format}
GraphQL
query RoomStories($roomId: ID!) {
roomStories(filter: {roomId_eq: $roomId}) {
totalCount
edges {
node {
id
message
}
}
}
}
Variables
{"roomId": "4"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
stories.storyId | roomStories.edge.node.id | Story ID |
stories.created | roomStories.edge.node.createdDateTime | Indicates when the message was created |
stories.updated | roomStories.edge.node.updatedDateTime | Indicates when the message was updated |
stories.userId | roomStories.edge.node.user.id | ID of a user who posted the message |
stories.message | roomStories.edge.node.message | Message |
stories.isSystemStory | roomStories.edge.node.systemStory | Flag indicates whether the message is system |
stories.cursor | roomStories.edge.cursor | Current position of a cursor |
stories.total | roomStories.totalCount | Total number of messages |
Get a specific room by offer ID
Gets the room information for the interview room with the offerId passed on the URL
REST
GET /api/messages/v3/{company_user_id}/rooms/offers/{offer_id}.{format}
GraphQL
query offerRoom($offerId: ID!) {
offerRoom(id: $offerId) {
id
roomName
}
}
Variables
{"offerId": "4"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
roomId | offerRoom.id | The ID of the room |
orgId | offerRoom.organization.id | The ID of the org that the room belongs to |
roomName | offerRoom.roomName | The name of the room |
roomType | offerRoom.roomType | The room type |
topic | offerRoom.topic | The topic of the room |
lastReadTimestamp | offerRoom.lastVisitedDateTime | Timestamp of the last time the user accessed the room |
recentTimestamp | offerRoom.lastReadDateTime | Timestamp of the latest activity in the room for sorting purposes |
isFavorite | offerRoom.favorite | Indicates whether the user marked the room as favorite or not |
isReadOnly | offerRoom.readOnly | Indicates whether the room is archived or not |
isHidden | offerRoom.hidden | Indicates whether the room marked as hidden/archived or not |
roleI | offerRoom.roomUsers.role | Indicates a role of the user in the particular room |
users.userId | offerRoom.roomUsers.user.id | The ID of the user |
users.orgId | offerRoom.roomUsers.organization.id | The ID of the org that the user is subscribed with |
users.role | offerRoom.roomUsers.role | The role of the user. Returned only if returnUserRoles is set |
stories.stories.storyId | offerRoom.stories.edge.node.id | Story ID |
stories.stories.created | offerRoom.stories.edge.node.createdDateTime | Indicates when the message was created |
stories.stories.updated | offerRoom.stories.edge.node.updatedDateTime | Indicates when the message was updated |
stories.stories.userId | offerRoom.stories.edge.node.user.id | ID of a user who posted the message |
stories.stories.message | offerRoom.stories.edge.node.message | Message |
stories.stories.isSystemStory | offerRoom.stories.edge.node.systemStory | Flag indicates whether the message is system |
stories.cursor | offerRoom.stories.edge.cursor | Current position of a cursor |
stories.total | offerRoom.stories.totalCount | Total number of messages |
Get a specific room by application ID
Gets the room information for the interview room with the applicationId passed on the URL
REST
GET /api/messages/v3/{company_user_id}/rooms/applications/{application_id}.{format}
GraphQL
query proposalRoom($vendorProposalId: ID!) {
proposalRoom(id: $vendorProposalId) {
id
roomName
}
}
Variables
{"vendorProposalId": "4"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
roomId | proposalRoom.id | The ID of the room |
orgId | proposalRoom.organization.id | The ID of the org that the room belongs to |
roomName | proposalRoom.roomName | The name of the room |
roomType | proposalRoom.roomType | The room type |
topic | proposalRoom.topic | The topic of the room |
lastReadTimestamp | proposalRoom.lastVisitedDateTime | Timestamp of the last time the user accessed the room |
recentTimestamp | proposalRoom.lastReadDateTime | Timestamp of the latest activity in the room for sorting purposes |
isFavorite | proposalRoom.favorite | Indicates whether the user marked the room as favorite or not |
isReadOnly | proposalRoom.readOnly | Indicates whether the room is archived or not |
isHidden | proposalRoom.hidden | Indicates whether the room marked as hidden/archived or not |
roleI | proposalRoom.roomUsers.role | Indicates a role of the user in the particular room |
users.userId | proposalRoom.roomUsers.user.id | The ID of the user |
users.orgId | proposalRoom.roomUsers.organization.id | The ID of the org that the user is subscribed with |
users.role | proposalRoom.roomUsers.role | The role of the user. Returned only if returnUserRoles is set |
stories.stories.storyId | proposalRoom.stories.edge.node.id | Story ID |
stories.stories.created | proposalRoom.stories.edge.node.createdDateTime | Indicates when the message was created |
stories.stories.updated | proposalRoom.stories.edge.node.updatedDateTime | Indicates when the message was updated |
stories.stories.userId | proposalRoom.stories.edge.node.user.id | ID of a user who posted the message |
stories.stories.message | proposalRoom.stories.edge.node.message | Message |
stories.stories.isSystemStory | proposalRoom.stories.edge.node.systemStory | Flag indicates whether the message is system |
stories.cursor | proposalRoom.stories.edge.cursor | Current position of a cursor |
stories.total | proposalRoom.stories.totalCount | Total number of messages |
Get a specific room by contract ID
Gets the room information for the interview room with the contractId passed on the URL
REST
GET /api/messages/v3/{company_user_id}/rooms/contracts/{contract_id}.{format}
GraphQL
query contractRoom($contractId: ID!) {
contractRoom(id: $contractId) {
id
roomName
}
}
Variables
{"contractId": 4}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
roomId | contractRoom.id | The ID of the room |
orgId | contractRoom.organization.id | The ID of the org that the room belongs to |
roomName | contractRoom.roomName | The name of the room |
roomType | contractRoom.roomType | The room type |
topic | contractRoom.topic | The topic of the room |
lastReadTimestamp | contractRoom.lastVisitedDateTime | Timestamp of the last time the user accessed the room |
recentTimestamp | contractRoom.lastReadDateTime | Timestamp of the latest activity in the room for sorting purposes |
isFavorite | contractRoom.favorite | Indicates whether the user marked the room as favorite or not |
isReadOnly | contractRoom.readOnly | Indicates whether the room is archived or not |
isHidden | contractRoom.hidden | Indicates whether the room marked as hidden/archived or not |
roleI | contractRoom.roomUsers.role | Indicates a role of the user in the particular room |
users.userId | contractRoom.roomUsers.user.id | The ID of the user |
users.orgId | contractRoom.roomUsers.organization.id | The ID of the org that the user is subscribed with |
users.role | contractRoom.roomUsers.role | The role of the user. Returned only if returnUserRoles is set |
stories.stories.storyId | contractRoom.stories.edge.node.id | Story ID |
stories.stories.created | contractRoom.stories.edge.node.createdDateTime | Indicates when the message was created |
stories.stories.updated | contractRoom.stories.edge.node.updatedDateTime | Indicates when the message was updated |
stories.stories.userId | contractRoom.stories.edge.node.user.id | ID of a user who posted the message |
stories.stories.message | contractRoom.stories.edge.node.message | Message |
stories.stories.isSystemStory | contractRoom.stories.edge.node.systemStory | Flag indicates whether the message is system |
stories.cursor | contractRoom.stories.edge.cursor | Current position of a cursor |
stories.total | contractRoom.stories.totalCount | Total number of messages |
Create a new room
Creates a new room. Note that 1-1 rooms must be passed in a single user in the users array. Both users are created with `admin` role in the room and the role you pass is ignored (there is no owner)
REST
POST /api/messages/v3/{company_user_id}/rooms.{format}
GraphQL
mutation createRoom($roomName: String!, $publicRoom: Boolean!, $roomType: RoomType!, $readOnly: Boolean!, $systemRoom: Boolean!) {
createRoom(
input: {roomName: $roomName, public: $publicRoom, roomType: $roomType, readOnly: $readOnly, systemRoom: $systemRoom}
) {
id
roomName
}
}
Variables
{
"roomName": "abc123",
"publicRoom": true,
"roomType": "ONE_ON_ONE",
"readOnly": false,
"systemRoom": false
}
Send a message to a room
Adds a new story to the given room
REST
POST /api/messages/v3/{company_user_id}/rooms/{room_id}/stories.{format}
GraphQL
mutation createRoomStoryV2($input: RoomStoryCreateInputV2!) {
createRoomStoryV2(input: $input) {
id
room {
...RoomFragment
}
createdDateTime
updatedDateTime
user {
...GenericUserFragment
}
message
organization {
...GenericOrganizationFragment
}
roomStoryNote {
...RoomStoryNoteFragment
}
}
}
Variables
{"input": {"roomId": "4", "message": "xyz789"}}
Send a message to a batch of rooms
Adds a new story to the list of the given rooms
REST
POST /api/messages/v3/{company_user_id}/stories/batch.{format}
GraphQL
Same as sending a single message, but multiple mutations in one request
Update a room settings
Updates a room settings
REST
PUT /api/messages/v3/{company_user_id}/rooms/{room_id}/users/{user_id}.{format}
GraphQL
mutation updateRoom($roomId: ID!, $topic: String!) {
updateRoom(input: {roomId: $roomId, topic: $topic}) {
id
roomName
}
}
Variables
{"roomId": 4, "topic": "abc123"}
Archive or rename a room
Updates the metadata of an existing room and archives it
REST
PUT /api/messages/v3/{company_user_id}/rooms/{room_id}.{format}
GraphQL
mutation archiveRoom($roomId: ID!) {
archiveRoom(roomId: $roomId) {
id
roomName
}
}
Variables
{"roomId": 4}
Contracts & Offers
Fields:
REST Field | GraphQL Path | Notes |
---|---|---|
buyer_team__id | No direct match | Possible alternative: organization/clientOffers/edges/node/team/id |
buyer_team__reference | organization/clientOffers/edges/node/team/rid | |
category_uid | organization/clientOffers/edges/node/contract/jobCategory/id | |
cj_job_application_uid | No direct match | |
created_time | organization/clientOffers/edges/node/contract/createdDateTime | |
dev_recno_ciphertext | No direct match | |
downsample_screenshots | No direct match | |
engagement_end_date | organization/clientOffers/edges/node/contract/endDateTime | |
engagement_end_ts | organization/clientOffers/edges/node/contract/endDateTime | |
engagement_job_type | organization/clientOffers/edges/node/contract/contractType | |
engagement_start_date | organization/clientOffers/edges/node/contract/startDateTime | |
engagement_start_ts | organization/clientOffers/edges/node/contract/startDateTime | |
engagement_title | organization/clientOffers/edges/node/contract/title | |
estimated_duration | organization/clientOffers/edges/node/contract/estimatedDuration | Deprecated |
estimated_duration_id | No direct match | |
first_engagement_start_ts | organization/clientOffers/edges/node/contract/firstContractStartDateTime | |
freelancer_country | organization/clientOffers/edges/node/contract/freelancer/countryDetails/name | |
freelancer_title | No direct match | |
hide_screenshots | organization/clientOffers/edges/node/contract/hideScreenshots | Deprecated |
hourly_charge_rate | organization/clientOffers/edges/node/contract/hourlyChargeRate/rawValue | |
is_fls | No direct match | |
isfp2 | organization/clientOffers/edges/node/contract/contractType | |
is_last | organization/clientOffers/edges/node/contract/last | |
is_paused | organization/clientOffers/edges/node/contract/paused | |
job__reference | organization/clientOffers/edges/node/contract/offer/job/id | |
job__title | organization/clientOffers/edges/node/contract/job/content/title | |
job_application_ref | organization/clientOffers/edges/node/contract/offer/vendorProposal/id | |
job_posting_uid | organization/clientOffers/edges/node/contract/job/ | |
job_ref_ciphertext | No direct match | |
manual_time_allowed | organization/clientOffers/edges/node/contract/manualTimeAllowed | |
modified_time | organization/clientOffers/edges/node/contract/modifiedDateTime | |
offer__reference | No direct match | |
offer_id | organization/clientOffers/edges/node/contract/offer/id | |
parent_reference | No direct match | Possible alternative: organization/clientOffers/edges/node/contract/offer/id |
provider__has_agency | organization/clientOffers/edges/node/contract/hasAgency | |
provider__id | organization/clientOffers/edges/node/contract/freelancer/user/nid | |
provider__reference | organization/clientOffers/edges/node/contract/freelancer/user/rid | |
provider_team__id | No direct match | Possible alternative: organization/clientOffers/edges/node/contract/offer/agency/id |
provider_team__reference | No direct match | Possible alternative: organization/clientOffers/edges/node/contract/offer/agency/rid |
reference | organization/clientOffers/edges/node/contract/id | |
status | organization/clientOffers/edges/node/contract/status | |
weekly_hours_limit | organization/clientOffers/edges/node/contract/weeklyHoursLimit | |
weekly_salary_charge_amount | organization/clientOffers/edges/node/contract/weeklyChargeAmount | |
weekly_stipend_hours | organization/clientOffers/edges/node/contract/weeklyStipendHours |
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Offer - Read-Only Access | Grants read-only access to offer's information |
Offer - Read And Write Access | Grants read/write access to offers |
List engagements
This call returns engagement(s) based on the parameters supplied in the API call
REST
GET /api/hr/v2/engagements
GET /api/hr/v2/engagements.{format}
GraphQL
query organization {
organization {
id
clientOffers(pagination: {after: "98", first: 1}) {
totalCount
edges {
cursor
node {
id
team {
id
rid
legacyId
name
type
legacyType
}
contract {
offer {
id
offerTerms {
fixedPriceTerm {
budget {
rawValue
}
}
}
}
clientProposal {
id
}
contractType
createdDateTime
endDateTime
estimatedDuration {
id
}
firstContractStartDateTime
freelancer {
user {
id
nid
rid
ciphertext
}
countryDetails {
id
name
}
}
hasAgency
hideScreenshots
hourlyChargeRate {
rawValue
}
id
job {
id
classification {
category {
id
type
}
}
content {
title
}
}
jobCategories {
id
name
selectedCategories
}
last
manualTimeAllowed
milestones {
id
}
modifiedDateTime
offer {
id
}
paused
startDateTime
status
suspended
title
weeklyChargeAmount {
rawValue
}
weeklyHoursLimit
weeklyStipendHours
}
}
}
}
}
}
Get engagement
This call retrieves details about a specific engagement.
REST
GET /api/hr/v2/engagements/{engagement_reference}.{format}
GraphQL
query contract($id: ID!) {
contract(id: $id) {
id
offer {
id
offerTerms {
fixedPriceTerm {
budget {
rawValue
}
}
}
}
clientProposal {
id
}
contractType
createdDateTime
endDateTime
estimatedDuration {
id
}
firstContractStartDateTime
freelancer {
user {
id
nid
rid
ciphertext
}
countryDetails {
id
name
}
}
hasAgency
hideScreenshots
hourlyChargeRate {
rawValue
}
id
job {
id
classification {
category {
id
type
}
}
content {
title
}
}
last
manualTimeAllowed
milestones {
id
}
modifiedDateTime
offer {
id
}
paused
startDateTime
status
suspended
title
weeklyChargeAmount {
rawValue
}
weeklyHoursLimit
weeklyStipendHours
}
}
Variables
{"id": 4}
Payments
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Payments - Read and Write Access | Grants read and write access to payment activities |
Make custom payment
This call is designed for making custom payments for a specific team and engagement in that team
REST
POST /api/hr/v2/teams/{team_reference}/adjustments.{format}
GraphQL
mutation sendCustomPayment(
$contractId: ID!
$amount: Float!
$comment: String!
$notes: String!
$allowSubsequent: Boolean
) {
sendCustomPayment(input: {
contractId: $contractId
amount: $amount
comment: $comment
notes: $notes
allowSubsequent: $allowSubsequent
}) {
invoiceId
}
}
Variables
{
"contractId": 4,
"amount": 123.45,
"comment": "xyz789",
"notes": "xyz789",
"allowSubsequent": false
}
Fields:
REST Field | GraphQL Path |
---|---|
reference | mutation.sendCustomPayment.invoiceId |
Public Profiles
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Freelancer Profile - Read And Write Access | Grants read/write access to freelancer profile |
Search for Freelancers
The search parameters include the options available on the site and additional options to configure the format of your results.
REST
GET /api/profiles/v2/search/providers.{format}
GraphQL
{
search {
searchFreelancerPublicProfile(
request: {
paging: $paging,
userQuery: $userQuery,
occupationUid: $occupationUid,
title: $title,
countries: $countries,
states: $states,
cities: $cities,
hourlyRate: $hourlyRate,
jobSuccessScore: $jobSuccessScore,
totalJobs: $totalJobs,
topRated: $topRated,
risingTalent: $risingTalent,
hasPortrait100: $hasPortrait100,
skillsNames: $skillsNames,
skillsUids: $skillsUids,
vemSkills: $vemSkills,
type: $type,
addAgencyPreview: $addAgencyPreview,
agencySearch: $agencySearch,
publicVisibilityOnly: $publicVisibilityOnly
}
) {
profiles {
profile {
identity {
id
ciphertext
}
profileAggregates {
lastWorkedOn
topRatedStatus
totalJobs
totalFeedback
totalHourlyJobs
totalFixedJobs
adjustedCategoryScores {
averageCategoryScore
}
}
personalData {
portrait {
portrait
}
firstName
lastName
title
description
location {
country
state
city
}
}
specializedProfilesSkills {
skills {
ontologySkill {
skill {
id
}
skillUid
}
}
}
}
}
}
}
}
Variables
{
"paging": {"start": 123, "rows": 123},
"userQuery": "xyz789",
"occupationUid": "xyz789",
"title": "xyz789",
"countries": ["abc123"],
"states": ["xyz789"],
"cities": ["xyz789"],
"hourlyRate": {"min": 987.65, "max": 987.65},
"jobSuccessScore": {"min": 987.65, "max": 987.65},
"totalJobs": {"min": 123, "max": 123},
"topRated": false,
"risingTalent": false,
"hasPortrait100": true,
"skillsNames": ["abc123"],
"skillsUids": ["abc123"],
"vemSkills": [{"skill": "abc123", "weight": 987.65}],
"type": "Agency",
"addAgencyPreview": false,
"agencySearch": false,
"publicVisibilityOnly": false
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
q | userQuery | The search query. At least one of the `q`, `title`, `skill` parameters should be specified. |
title | title | Searches for the title in the freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified. |
skills | skillsNames | Searches for skills of freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified. |
groups | Searches for groups in the freelancer's profile. The freelancer must be a member of the group provided. | |
tests | Searches for tests in the freelancer's profile. | |
tests_top_10 | Searches for freelancers that are in the top 10 of the test. | |
tests_top_30 | Searches for freelancers that are in the top 30 of the test. | |
category2 | The category (V2) of the freelancer's profile. Use Metadata resource to get it. You can get it via Metadata Category (v2) resource. | |
subcategory2 | The subcategory of the job according to the list of Categories 2.0. Example: `Web & Mobile Development`. You can get it via Metadata Category (v2) resource. | |
region | countries | Searches for profiles of freelancers who live in the region provided. Valid values are provided by Metadata Regions resource. Example: `Latin America`. |
feedback | Searches for freelancers with specific feedback score. Single values such as `3` or `3,4` (comma-separated values results in OR queries) and ranges such as `[3 TO 4]` are valid. | |
rate | A number or range used to filter the search by freelancer's profile rate. Single values such as `20` or `20,30` (comma-separated values result in `OR` queries) and ranges such as `[20 TO 40]` are valid. | |
topRated | Note we have topRated Boolean | |
hours | Searches for profiles of freelancers who have worked the number of hours provided. Single values such as `20` or `20,30` (comma-separated values result in `OR` queries) and ranges such as `[20 TO 40]` are valid. | |
recent_hours | Searches for profiles of freelancers who have recently worked the number of hours provided. Single values such as `20` or `20,30` (comma-separated values result to `OR` queries) and ranges such as `[20 TO 40]` are valid. | |
last_activity | The date of the last time the freelancer worked. The value should be formatted according to ISO 8601 date syntax with hours always set at 00:00:00.000. Example: `2013-01-04T00:00:00.000Z`. | |
english_skill | The freelancer's English skills assessment result. Valid values: 0, 1, 2, 3, 4, 5 | |
is_odesk_ready | Defines if the freelancer is Upwork ready or not. Valid values: 0, 1 | |
profile_type | type | The freelancer type. Valid values: Agency, Independent |
include_entities | If set to `1` the data in the response will only contain a profile IDs array. Valid values: 0, 1 | |
profile_access | publicVisibilityOnly | The access type of the profile. Valid values: auth, public |
nss100 | jobSuccessScore | Job success score. Example: value `[0.8 TO *]` returns freelancers with job success score more than 0.8 (80%). |
paging | Pagination, formed as `$offset;$count`. Page size is restricted to be <= 50. Example: page=100;30. |
Get brief profile summary
Read and search profiles of contractors and jobs, and get lists of public metadata
REST
GET /api/profiles/v1/providers/{profile_key}/brief.{format}
GraphQL
query getFreelancerProfile($profileKey: String!) {
freelancerProfileByProfileKey(profileKey: $profileKey) {
aggregates {
...FreelancerProfileAggregatesFragment
}
personalData {
...FreelancerProfilePersonalDataFragment
}
}
}
Variables
{"profileKey": "abc123"}
Fields:
REST Field | GraphQL Path | Notes |
---|---|---|
ciphertext | This is the profile_key | Not available yet |
dev_ac_agencies | FreelancerProfile.agencies | |
dev_adj_score | FreelancerProfile.aggregates.adjustedFeedbackScore | |
dev_adj_score_recent | FreelancerProfile.aggregates.adjustedFeedbackScoreRecent | |
dev_billed_assignments | FreelancerProfile.aggregates.billedAssignments | |
dev_city | FreelancerProfile.personalData.location.city | |
dev_country | FreelancerProfile.personalData.location.country | |
dev_eng_skill | FreelancerProfile.languages | |
dev_groups | FreelancerProfile.jobCategories.groups | |
dev_is_affiliated | Not available yet | |
dev_last_activity | FreelancerProfile.aggregates.lastActivity | |
dev_last_worked | FreelancerProfile.aggregates.lastWorkedOn | |
dev_last_worked_ts | FreelancerProfile.aggregates.lastWorkedOn | |
dev_portfolio_items_count | FreelancerProfile.profileCompletenessSummary.portfolioCount | |
dev_portrait | FreelancerProfile.personalData.portrait.portrait | |
dev_portrait_100 | FreelancerProfile.personalData.portrait.portrait100 | |
dev_portrait_32 | FreelancerProfile.personalData.portrait.portrait32 | |
dev_portrait_50 | FreelancerProfile.personalData.portrait.portrait50 | |
dev_profile_title | FreelancerProfile.personalData.title | |
dev_recno_ciphertext | Not available yet | |
dev_short_name | Get the short name format. Name can be composed with FreelancerProfile.personalData.firstName & FreelancerProfile.personalData.lastName | |
dev_timezone | FreelancerProfile.personalData.location.timezone | |
dev_tot_feedback | FreelancerProfile.aggregates.totalFeedback | |
dev_total_hours | FreelancerProfile.aggregates.totalHours | |
dev_ui_profile_access | FreelancerProfile.userPreferences.visibilityLevel |
Get freelancer profile by key
The API takes a profile key and returns detailed profile information about a freelancer or list of freelancers. This call returns an exhaustive list of attributes associated with the freelancer. If you're looking for a shorter summary, use the brief version of this call (GET /api/profiles/v1/providers/{profile_key}/brief.{format}).
REST
GET /api/profiles/v1/providers/{profile_key}.{format}
GraphQL
query talentProfileByProfileKey($profileKey: String!) {
talentProfileByProfileKey(profileKey: $profileKey) {
personId
identity {
...TalentProfileIdentityFragment
}
personalData {
...TalentProfilePersonalDataFragment
}
preferences {
...TalentProfileUserPreferencesFragment
}
settings {
...TalentProfileSettingsFragment
}
personAvailability {
...TalentPersonAvailabilityFragment
}
projectList {
...TalentProjectListFragment
}
communityCertificates {
...TalentProfileCommunityCertificateFragment
}
profileCompleteness {
...TalentProfileCompletenessSummaryFragment
}
otherExperiences {
...TalentProfileOtherExperienceFragment
}
educationRecords {
...TalentEducationRecordFragment
}
employmentRecords {
...TalentProfileEmploymentRecordFragment
}
skills {
...TalentProfilePersonSkillFragment
}
jobCategories {
...TalentJobCategoryGroupFragment
}
profileAggregates {
...TalentProfileAggregateFragment
}
specializedProfiles {
...TalentSpecializedProfileFragment
}
specializedProfilesSkills {
...TalentSpecializedProfileSkillFragment
}
specializedProfilesProjects {
...TalentSpecializedProfilesProjectFragment
}
}
}
Variables
{"profileKey": "abc123"}
Fields:
REST Field | GraphQL Path |
---|---|
ciphertext | This is the profile_key |
dev_ui_profile_access | TalentProfile.preferences.visibilityLevel |
skills | TalentProfile.skills |
dev_adj_score | TalentProfile.TalentProfileAggregate.adjustedCategoryScores |
experiences | TalentProfile.otherExperiences |
Companies and Teams
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Common Entities - Read-Only Access | Grants read-only access to common entities like Organization, User, Freelancer Profile, etc. |
Read Work diary company for public user | Fetch workdiary snapshots information through for a input company |
List companies
This call returns all the companies the currently authorized user has access to on Upwork. It is important to take into account that just because a user has access to a company does not mean he/she has access to all areas of a company. To find out exactly what permissions a user has within a specific company use 'Get roles' API call.
REST
GET /api/hr/v2/companies.{format}
GraphQL
query companies($userId: ID!) {
companies(userId: $userId) {
company {
private {
id
companyName
paymentVerification {
status
}
}
}
}
}
Variables
{"userId": 4}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
reference | companies.company.private.id | Company reference |
name | companies.company.private.companyName | Company name |
payment_verification_status | companies.company.private.paymentVerification.status | Payment verified |
Get company
Returns details regarding a specific company. If a user does not have access to this company, the call returns a 403 error. This API call does not return a list of teams within the company.
REST
GET /api/hr/v2/companies/{company_reference}.{format}
GraphQL
query getCompanyDetails($companyId: ID!) {
company(id: $id) {
private {
id
companyName
paymentVerification {
status
}
}
}
}
Variables
{"id": "4"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
reference | query.company.private.id | Company reference |
name | query.company.private.companyName | Company name |
payment_verification_status | query.company.private.paymentVerification.status | Payment verified |
List teams
This call returns all the teams that a user has access to. Keep in mind that it returns teams across different companies.
REST
GET /api/hr/v2/teams.{format}
GraphQL
{
organization {
childOrganization {
id
company {
name
}
parentOrganization {
id
company {
name
}
}
}
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
id | query/organization/childOrganization/id | Team ID |
name | query/organization/childOrganization/company/name | Company name |
parent_team__id | query/organization/childOrganization/parentOrganization/id | Parent team ID |
company_name | query/organization/childOrganization/parentOrganization/company/ |
Parent company name |
List users in team
This call returns a list of teams within the company being referenced (as long as the user has access to the referenced company).
REST
GET /api/hr/v2/teams/{team_reference}/users.{format}
GraphQL
query getChildOrganizationStaff($childOrganizationId: ID!) {
organization {
childOrganization(id: $childOrganizationId) {
staffs {
edges {
node {
user {
id
name
publicUrl
}
staffType
activationStatus
}
}
}
}
}
}
Variables
{"childOrganizationId": "yourChildOrganizationIdHere"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
Id | query/organization/childOrganization/staffs/edges/node/user/id | User ID |
reference | query/organization/childOrganization/staffs/edges/node/id | User reference |
public_url | query/organization/childOrganization/staffs/edges/node/user/publicUrl | User's public profile url |
is_provider | query/organization/childOrganization/staffs/edges/node/organization/legacyType | Is it a contractor |
status | query/organization/childOrganization/staffs/edges/node/staffType | User status in this team |
Get Work Diary
The Work Diary method retrieves all snapshots from a single user account within a single day. Keep in mind that a day is dependent on server time and not the day in which the query is made. Make sure to test with various locations before you're done. If task ID is empty, the endpoint will group the data by contract and memo, otherwise by task ID.
REST
GET /api/team/v3/workdiaries/companies/{company_id}/{date}.{format}
GraphQL
query getWorkDiaryCompany($companyId: ID!, $date: String!) {
workDiaryCompany(workDiaryCompanyInput: { companyId: $companyId, date: $date }) {
total
snapshots {
contract {
id
contractTitle
userId
}
user {
id
name
portraitUrl
}
duration
durationInt
task {
id
code
description
memo
}
time {
trackedTime
manualTime
overtime
firstWorked
lastWorked
firstWorkedInt
lastWorkedInt
lastScreenshot
}
screenshots {
activity
screenshotUrl
screenshotImage
screenshotImageLarge
screenshotImageMedium
screenshotImageThumbnail
hasWebcam
hasScreenshot
webcamUrl
webcamImage
webcamImageThumbnail
flags {
hideScreenshot
downSampleScreenshots
}
}
}
}
}
Variables
{"companyId": 4, "date": "abc123"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
total | total | Total number of records |
contracts.user_id | snapshots.contract.userId | User ID |
contracts.contract_title | snapshots.contract.contractTitle | Contract title |
users.name | snapshots.user.name | User name |
users.portrait_url | snapshots.user.portraitUrl | Portrait URL |
snapshots.task.id | Snapshots.task.id | ID |
snapshots.task.code | Snapshots.task.code | Code |
snapshots.task.description | Snapshots.task.description | Description |
snapshots.task.memo | Snapshots.task.memo | Memo |
snapshots.contract_id | snapshots.contract.id | Contract ID |
snapshots.duration | snapshots.duration | Duration |
snapshots.duration_int | snapshots.durationInt | Durarion (in minutes) |
snapshots.user_id | snapshots.userId | User ID |
snapshots.time.tracked_time | snapshots.time.trackedTime | Tracked time |
snapshots.time.manual_time | snapshots.time.manualTime | Manual time |
snapshots.time.overtime | snapshots.time.overtime | Overtime |
snapshots.time.first_worked | snapshots.time.firstWorked | First worked time |
snapshots.time.last_worked | snapshots.time.lastWorked | Last worked time |
snapshots.time.first_worked_int | snapshots.time.firstWorkedInt | First worked timestamp |
snapshots.time.last_worked_int | snapshots.time.lastWorkedInt | Last worked timestamp |
snapshots.time.last_screenshot | snapshots.time.lastScreenshot | Last screenshot |
snapshots.screenshots | snapshots.screenshots | List of screenshots |
snapshots.snapshot_api | snapshots.screenshots[*].screenshotUrl | Link to snapshot API |
snapshots.last_worked_snapshot_api | deprecated | Link to snapshots API with the last worked snapshot |
Get Work Diary by Contract
The Work Diary method retrieves all snapshots from a single user account within a single day.
REST
GET /api/team/v3/workdiaries/contracts/{contract_id}/{date}.{format}
GraphQL
{
workDiaryContract(
workDiaryContractInput: {
contractId: $contractId,
date: $date,
offsetInSeconds: offsetInSeconds,
useLegacy: useLegacy
}
) {
workDiaryMetadata {
user {
id
name
}
timezoneOffset
archivingDateTime
}
workDiaryTimeCells {
cellDateTime {
rawValue
displayValue
}
overtime
activityLevel
memo
}
}
}
Variables
{"contractId": "4", "date": "abc123", "offsetInSeconds": 987, "useLegacy": true}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
snapshots.assignment.id | workDiaryContract/id | Contract ID |
snapshots.user.uid | workDiaryContract/workDiaryMetadata/user/id | User ID |
snapshots.user.first_name | workDiaryContract/workDiaryMetadata/user/lastName | Last name |
snapshots.user.portrait_url | workDiaryContract/workDiaryMetadata/user/photoUrl | Portrait URL |
snapshots.user.timezone_offset | workDiaryContract/workDiaryMetadata/timezoneOffset | Timezone offset |
snapshots.user.archiving_time | workDiaryContract/workDiaryMetadata/archivingDateTime | Archiving time |
snapshots.snapshots.cell_time | workDiaryContract/workDiaryTimeCells/cellDateTime | Cell timestamp |
snapshots.snapshots.time | workDiaryContract/workDiaryTimeCells/snapshotDateTime | Snapshot timestamp |
snapshots.snapshots.activity | workDiaryContract/workDiaryTimeCells/activityLevel | Flag indicates the level of activity |
snapshots.snapshots.memo | workDiaryContract/workDiaryTimeCells/memo | Memo |
snapshots.snapshots.task.id | workDiaryContract/workDiaryTimeCells/task/id | ID |
snapshots.snapshots.task.description | workDiaryContract/workDiaryTimeCells/task/description | Description |
snapshots.snapshots.mouse_events_count | workDiaryContract/workDiaryTimeCells/mouseEventsCount | Mouse events |
snapshots.snapshots.keyboard_events_count | workDiaryContract/workDiaryTimeCells/keyboardEventsCount | Keyboard events |
snapshots.snapshots.active_window_title | workDiaryContract/workDiaryTimeCells/activeWindowTitle | Active window title |
snapshots.snapshots.flags.hide_screenshots | workDiaryContract/workDiaryTimeCells/hideScreenshots | Flag indicates hidden screenshot |
snapshots.snapshots.has_screenshot | workDiaryContract/workDiaryTimeCells/hasScreenshot | Flag indicates if the cell has a screenshot |
snapshots.snapshots.screenshot_url | workDiaryContract/workDiaryTimeCells/screenshotImageUrl | Screenshot URL |
snapshots.snapshots.screenshot_img_med | workDiaryContract/workDiaryTimeCells/screenshotImageUrlMedium | Medium screenshot image |
snapshots.snapshots.screenshot_img_thmb | workDiaryContract/workDiaryTimeCells/screenshotImageThumbnail | Screenshot thumbnail |
snapshots.snapshots.has_webcam | workDiaryContract/workDiaryTimeCells/webcamEnabled | Flag indicates if webcam image exists |
snapshots.snapshots.webcam_url | workDiaryContract/workDiaryTimeCells/webcamImageUrl | Webcam URL |
snapshots.snapshots.webcam_img_thmb | workDiaryContract/workDiaryTimeCells/webcamImageThumbnail | Webcam thumbnail |
Milestone Submissions
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Offer - Read And Write Access | Grants read/write access to offers |
Approve a milestone submission
This API call allows a Hiring Manager to approve the submission of work to a milestone made by the freelancer. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to approve a milestone submission
REST
PUT /api/hr/v3/fp/submissions/{submission_id}/approve.{format}
GraphQL
mutation approveSubmitMilestone($milestoneId: String, $paidAmount: String, $bonusAmount: String, $paymentComment: String, $underpaymentReason: String, $noteToContractor: String) {
approveMilestone(
input: {
id: $milestoneId,
paidAmount: $paidAmount,
bonusAmount: $bonusAmount,
paymentComment: $paymentComment,
underpaymentReason: $underpaymentReason,
noteToContractor: $noteToContractor
}
) {
id
}
}
Variables
{
"milestoneId": "4",
"paidAmount": "xyz789",
"bonusAmount": "abc123",
"paymentComment": "abc123",
"underpaymentReason": "xyz789",
"noteToContractor": "abc123"
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
submission_id | ApproveMilestoneInput.id | Submission reference |
amount | ApproveMilestoneInput.paidAmount | Amount of money to be paid |
bonus | ApproveMilestoneInput.bonusAmount | Amount of money paid as bonus |
pay_comments | ApproveMilestoneInput.paymentComment | Comments on payment |
underpayment_reason | ApproveMilestoneInput.underpaymentReason | Reason for a smaller payment than the one agreed. Values description: `329` - Payment lower due to freelancer performance; `330` - Freelancer is performing well, but the scope of work changed; `331` - Freelancer is performing well, but I decided to make an earlier payment; `332` - Payment is lower for other reasons, but freelancer is performing well. Valid values: 329, 330, 331, 332 |
note2contractor | ApproveMilestoneInput.noteToContractor | Notes from the client to the freelancer |
Reject a milestone submission
This API call allows a Hiring Manager to reject the submission of work to a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to reject the submission.
REST
PUT /api/hr/v3/fp/submissions/{submission_id}/reject.{format}
GraphQL
mutation rejectSubmittedMilestone($milestoneId: String, $noteToContractor: String) {
rejectSubmittedMilestone(
input: { id: $milestoneId, noteToContractor: $noteToContractor }
) {
id
}
}
Variables
{"milestoneId": "4", "noteToContractor": "abc123"}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
submission_id | RejectMilestoneSubmissionInput.id | Submission reference |
note2contractor | RejectMilestoneSubmissionInput.noteToContractor | Notes from the client to the freelancer |
Milestones Create/Update
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Offer - Read-Only Access | Grants read-only access to offer's information |
Offer - Read And Write Access | Grants read/write access to offers |
Create a milestone
This API call allows a Hiring Manager to create a milestone. Note that the user must be authorized in Upwork and must be Hiring Manager in the team to be able to create a milestone
REST
POST /api/hr/v3/fp/milestones.{format}
GraphQL
mutation createMilestone(
$offerId: ID!,
$contractId: ID!,
$description: String!,
$instruction: String!,
$depositAmount: String!,
$dueDate: String!,
$attachmentIds: [ID!]
) {
createMilestone(
input: {
offerId: $offerId,
contractId: $contractId,
description: $description,
instruction: $instruction,
depositAmount: $depositAmount,
dueDate: $dueDate,
attachmentIds: $attachmentIds
}
) {
id
createdBy {
id
nid
rid
}
modifiedBy {
id
nid
rid
}
dueDateTime
state
description
currentEscrowAmount {
rawValue
displayValue
currency
}
depositAmount {
rawValue
displayValue
currency
}
fundedAmount {
rawValue
displayValue
currency
}
paid {
rawValue
displayValue
currency
}
overpayment {
rawValue
displayValue
currency
}
bonus {
rawValue
displayValue
currency
}
previousMilestoneUnusedDeposit {
rawValue
displayValue
currency
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
submission {
id
createdDateTime
modifiedDateTime
amount {
rawValue
displayValue
currency
}
sequenceId
}
submissionMessage {
createdDateTime
message
}
revisionMessage {
createdDateTime
message
}
}
}
}
Variables
{
"offerId": 4,
"contractId": 4,
"description": "abc123",
"instruction": "abc123",
"depositAmount": "xyz789",
"dueDate": "xyz789",
"attachmentIds": ["4"]
}
Fields:
REST Field | GraphQL Path |
---|---|
contract_reference | CreateMilestoneInput.contractId |
milestone_description | CreateMilestoneInput.description |
deposit_amount | CreateMilestoneInput.depositAmount |
due_date | CreateMilestoneInput.dueDate |
This resource returns the ID of the milestone created | createMilestone.id |
Edit a milestone
This API call allows a Hiring Manager to edit a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to edit the milestone
REST
PUT /api/hr/v3/fp/milestones/{milestone_id}.{format}
GraphQL
mutation editMilestone(
$id: ID!,
$description: String,
$instructions: String,
$depositAmount: String,
$dueDate: String,
$attachments: [ID!],
$message: String,
$sequenceId: Int
) {
editMilestone(
input: {
id: $id,
description: $description,
instructions: $instructions,
depositAmount: $depositAmount,
dueDate: $dueDate,
attachments: $attachments,
message: $message,
sequenceId: $sequenceId
}
) {
id
createdBy {
id
nid
rid
}
modifiedBy {
id
nid
rid
}
dueDateTime
state
description
currentEscrowAmount {
rawValue
displayValue
currency
}
depositAmount {
rawValue
displayValue
currency
}
fundedAmount {
rawValue
displayValue
currency
}
paid {
rawValue
displayValue
currency
}
overpayment {
rawValue
displayValue
currency
}
bonus {
rawValue
displayValue
currency
}
previousMilestoneUnusedDeposit {
rawValue
displayValue
currency
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
submission {
id
createdDateTime
modifiedDateTime
}
}
}
}
Variables
{
"id": 4,
"description": "xyz789",
"instructions": "abc123",
"depositAmount": "xyz789",
"dueDate": "xyz789",
"attachments": ["4"],
"message": "abc123",
"sequenceId": 987
}
Fields:
REST Field | GraphQL Path |
---|---|
milestone_id | EditMilestoneInput.id |
milestone_description | EditMilestoneInput.description |
deposit_amount | EditMilestoneInput.depositAmount |
message | EditMilestoneInput.message |
due_date | EditMilestoneInput.dueDate |
Returns 200 OK in case of success | Returns updated Milestone Object |
Activate a milestone
This API call allows a Hiring Manager to activate a Milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to activate the milestone
REST
PUT /api/hr/v3/fp/milestones/{milestone_id}/activate.{format}
GraphQL
mutation activateMilestone(
$id: ID!,
$message: String
) {
activateMilestone(
input: {
id: $id,
message: $message
}
) {
id
createdBy {
id
nid
rid
}
modifiedBy {
id
nid
rid
}
dueDateTime
state
description
currentEscrowAmount {
rawValue
displayValue
currency
}
depositAmount {
rawValue
displayValue
currency
}
fundedAmount {
rawValue
displayValue
currency
}
paid {
rawValue
displayValue
currency
}
overpayment {
rawValue
displayValue
currency
}
bonus {
rawValue
displayValue
currency
}
previousMilestoneUnusedDeposit {
rawValue
displayValue
currency
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
submission {
id
createdDateTime
modifiedDateTime
amount {
rawValue
displayValue
currency
}
sequenceId
}
submissionMessage {
createdDateTime
message
}
revisionMessage {
createdDateTime
message
}
}
}
}
Variables
{"id": "4", "message": "xyz789"}
Fields:
REST Field | GraphQL Path |
---|---|
milestone_id | ActivateMilestoneInput.id |
message | ActivateMilestoneInput.message |
Returns 200 OK in case of success | Returns activated Milestone Object |
Approve a milestone
Closes the milestone by paying the deposit amount if no amount is specified
REST
PUT /api/hr/v3/fp/milestones/{milestone_id}/approve.{format}
GraphQL
mutation approveMilestone(
$id: ID!,
$paidAmount: String,
$bonus: String,
$paymentComment: String,
$underpaymentReason: String,
$noteToContractor: String
) {
approveMilestone(
input: {
id: $id,
paidAmount: $paidAmount,
bonusAmount: $bonus,
paymentComment: $paymentComment,
underpaymentReason: $underpaymentReason,
noteToContractor: $noteToContractor
}
) {
id
createdBy {
id
nid
rid
}
modifiedBy {
id
nid
rid
}
dueDateTime
state
description
currentEscrowAmount {
rawValue
displayValue
currency
}
depositAmount {
rawValue
displayValue
currency
}
fundedAmount {
rawValue
displayValue
currency
}
paid {
rawValue
displayValue
currency
}
overpayment {
rawValue
displayValue
currency
}
bonus {
rawValue
displayValue
currency
}
previousMilestoneUnusedDeposit {
rawValue
displayValue
currency
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
submission {
id
createdDateTime
modifiedDateTime
amount {
rawValue
displayValue
currency
}
sequenceId
}
submissionMessage {
createdDateTime
message
}
revisionMessage {
createdDateTime
message
}
}
}
}
Variables
{
"id": "4",
"paidAmount": "xyz789",
"bonusAmount": "abc123",
"paymentComment": "abc123",
"underpaymentReason": "xyz789",
"noteToContractor": "abc123"
}
Fields:
REST Field | GraphQL Path |
---|---|
milestone_id | ApproveMilestoneInput.id |
amount | ApproveMilestoneInput.paidAmount |
bonus | ApproveMilestoneInput.bonusAmount |
pay_comments | ApproveMilestoneInput.paymentComment |
underpayment_reason | ApproveMilestoneInput.underpaymentReason |
note2contractor | ApproveMilestoneInput.noteToContractor |
Returns 200 OK in case of success | Returns approved Milestone Object |
Delete a milestone
This API call allows a Hiring Manager to delete a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to delete the milestone. Only milestones with status `not_funded` can be deleted
REST
DELETE /api/hr/v3/fp/milestones/{milestone_id}.{format}
GraphQL
mutation deleteMilestone($id: ID!) {
deleteMilestone(input: {id: $id})
}
Variables
{"id": "4"}
Fields:
REST Field | GraphQL Path |
---|---|
milestone_id | DeleteMilestoneInput.id |
Returns 200 OK in case of success | Returns Boolean of true in case of success |
Activities
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Activity Entities - Read-Only Access | Grants read-only access to activity entities |
Activity Entities - Read and Write Access | Grants read and write access to activity entities |
List team activities
Returns details regarding a specific company. If a user does not have access to this company, the call returns a 403 error. This API call does not return a list of teams within the company.
REST
GET /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks.{format}
GraphQL
query teamActivities(
$orgId: ID!,
$teamId: ID,
$page: PageFilterInput,
) {
teamActivities(
orgId: $orgId,
teamId: $teamId,
page: $page,
) {
totalCount
edges {
node {
url
userId
code
companyId
recordId
description
}
}
page {
pageOffset
pageSize
}
}
}
Variables
{"orgId": "4", "teamId": 4, "page": {"pageOffset": 123, "pageSize": 987}}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
record_id | Activity.recordId | The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference). |
company_id | Activity.companyId | This is the ID of the company. |
user_id | Activity.userId | The Upwork ID of the user. |
code | Activity.code | This is specified by the user. It could be used to reference a bug ID on a third-party system. |
description | Activity.description | The text description contained within the activity. |
URL | Activity.url | This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL. |
List activities for specific engagement
Authorized user must have hiring permissions in order to use this API call.
REST
GET /api/tasks/v2/tasks/contracts/{engagement_ref}.{format}
GraphQL
query teamActivities(
$orgId: ID!,
$filter: ActivityFilterInput
$page: PageFilterInput,
) {
teamActivities(
orgId: $orgId,
filter: $filter
page: $page,
) {
totalCount
edges {
node {
url
userId
code
companyId
recordId
description
}
}
page {
pageOffset
pageSize
}
}
}
Variables
{
"orgId": "4",
"page": {"pageOffset": 123, "pageSize": 987},
"filter": {"contractId": 4}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
record_id | Activity.recordId | The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference). |
company_id | Activity.companyId | This is the ID of the company. |
user_id | Activity.userId | The Upwork ID of the user. |
code | Activity.code | This is specified by the user. It could be used to reference a bug ID on a third-party system. |
description | Activity.description | The text description contained within the activity. |
URL | Activity.url | This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL. |
Get team activity by code
This call returns details on a single activity or a set of activities within a team.
REST
GET /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks/{code}.{format}
GraphQL
query teamActivities(
$orgId: ID!,
$teamId: ID,
$filter: ActivityFilterInput,
$page: PageFilterInput,
) {
teamActivities(
orgId: orgId
teamId: teamId
page: $page
filter: $filter
) {
totalCount
edges {
node {
url
userId
code
companyId
recordId
description
}
}
page {
pageOffset
pageSize
}
}
}
Variables
{
"orgId": "4",
"teamId": 4,
"page": {"pageOffset": 123, "pageSize": 987},
"filter": {"codes": ["xyz789"]}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
record_id | Activity.recordId | The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference). |
company_id | Activity.companyId | This is the ID of the company. |
user_id | Activity.userId | The Upwork ID of the user. |
code | Activity.code | This is specified by the user. It could be used to reference a bug ID on a third-party system. |
description | Activity.description | The text description contained within the activity. |
URL | Activity.url | This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL. |
Create activity at team level
A user needs to have hiring manager privileges within the team in order to create an activity at team level.
REST
POST /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks.{format}
GraphQL
mutation addTeamActivity(
$orgId: ID!,
$teamId: ID!,
$request: TeamActivityInput!
) {
addTeamActivity(
orgId: $orgId
teamId: $teamId
request: $request
) {
id
success
}
}
Variables
{
"orgId": "4",
"teamId": 4,
"request": {
"code": "abc123",
"description": "abc123",
"url": "xyz789",
"contractIds": [4],
"allInCompany": true
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
code | AddTeamActivityRequest.code | This is specified by the user. It could be used to reference a bug ID on a third-party system. |
description | AddTeamActivityRequest.description | The text description contained within the activity. |
URL | AddTeamActivityRequest.url | This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL. |
engagements | AddTeamActivityRequest.contractIds[] | A list of engagements that are to be assigned to the created activity. It can be a single engagement ID, or a semicolon (';') separated list of IDs. |
all_in_company | AddTeamActivityRequest.allInCompany | If set to `1`, then the created activity is assigned to all engagements that exist in the company at the moment. Valid values: 0, 1 |
Update activity at team level
If you want to update an activity for the whole company, just use the company_id as the team_id.
REST
PUT /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks/{code}.{format}
GraphQL
mutation updateTeamActivity(
$orgId: ID!,
$teamId: ID!,
$request: UpdateTeamActivityRequest!
) {
updateTeamActivity(
orgId: $orgId
teamId: $teamId
request: $request
) {
success
}
}
Variables
{
"orgId": "4",
"teamId": 4,
"request": {
"code": "abc123",
"description": "abc123",
"url": "xyz789",
"contractIds": [4],
"allInCompany": true
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
code | UpdateTeamActivityRequest.code | This is specified by the user. It could be used to reference a bug ID on a third-party system. |
description | UpdateTeamActivityRequest.description | The text description contained within the activity. |
URL | UpdateTeamActivityRequest.url | This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL. |
engagements | UpdateTeamActivityRequest.contractIds[] | A list of engagements that are to be assigned to the created activity. It can be a single engagement |
all_in_company | UpdateTeamActivityRequest.allInCompany | Created activity is assigned to all engagements that exist in the company at the moment. |
Assign engagements to the list of activities
Activity appears in freelancer's team client only if his engagement is assigned to the activity and activities are activated for the ongoing contract. This call overrides assigned engagements for the given activities. For example, if you pass empty `task_codes` or just omit this parameter, freelancer's engagement is unassigned from all the activities it is assigned to.
REST
PUT /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/engagements/{engagement}/tasks.{format}
GraphQL
mutation assignTeamActivityToTheContract(
$orgId: ID!,
$teamId: ID!,
$contractId: ID!,
$codes: [String!]!
) {
assignTeamActivityToTheContract(
orgId: $orgId
teamId: $teamId
contractId: $contractId
codes: $codes
) {
success
}
}
Variables
{"orgId": "4", "teamId": 4, "contractId": 4, "codes": ["abc123"]}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
company_id | orgId | The company ID. Use the `parent_team__id` value from the 'Get teams' API call. |
team_id | teamId | The team ID |
engagement | contractId | Engagement ID that is assigned/unassigned to the given list of activities |
Archive activities
If you want to archive activity for company, use the `company_id` value for `team_id` as well.
REST
PUT /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/archive/{code}.{format}
GraphQL
mutation archiveTeamActivity(
$orgId: ID!,
$teamId: ID!,
$codes: [String!]!
) {
archiveTeamActivity(
orgId: $orgId
teamId: $teamId
codes: $codes
) {
success
}
}
Variables
{"orgId": "4", "teamId": 4, "codes": ["abc123"]}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
company_id | orgId | The company ID. Use the `parent_team__id` value from the 'Get teams' API call. |
team_id | teamId | The team ID |
code | codes[] | Activity tracking code |
Unarchive activities
If you want to unarchive activity for company, use the `company_id` value for `team_id` as well.
REST
PUT /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/unarchive/{code}.{format}
GraphQL
mutation unarchiveTeamActivity(
$orgId: ID!,
$teamId: ID!,
$codes: [String!]!
) {
unarchiveTeamActivity(
orgId: $orgId
teamId: $teamId
codes: $codes
) {
success
}
}
Variables
{"orgId": "4", "teamId": 4, "codes": ["abc123"]}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
company_id | orgId | The company ID. Use the `parent_team__id` value from the 'Get teams' API call. |
team_id | teamId | The team ID |
code | codes[] | Activity tracking code |
Metadata
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Ontology - Read-Only Access | Grants read-only access to ontology information |
Common Entities - Read-Only Access | Grants read-only access to common entities like Organization, User, Freelancer Profile, etc. |
List specialties
This call returns a list of specialties available for a specific topic, which you can get using List Categories query.
REST
GET /api/profiles/v1/metadata/specialties.{format}
GraphQL
{
query ontologyCategories {
ontologyCategories {
id
preferredLabel
altLabel
slug
ontologyId
subcategories {
...OntologySubcategoryFragment
}
services {
...OntologyServiceFragment
}
}
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
title | query/ontologyCategories/subcategories/preferredLabel | Title |
id | query/ontologyCategories/subcategories/id | ID |
List categories
This call returns a list of categories for a job/freelancer profile from new structure.
REST
GET /api/profiles/v2/metadata/categories.{format}
GraphQL
{
query ontologyCategories {
ontologyCategories {
id
preferredLabel
altLabel
slug
ontologyId
subcategories {
...OntologySubcategoryFragment
}
services {
...OntologyServiceFragment
}
}
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
title | query/ontologyCategories/preferredLabel | Title |
id | query/ontologyCategories/id | ID |
topics.title | query/ontologyCategories/subcategories/preferredLabel | Topic title |
topics.id | query/ontologyCategories/subcategories/id | Topic ID |
List skills
This call returns a list of skills available in a freelancer's profile.
REST
GET /api/profiles/v2/metadata/skills.{format}
GraphQL
{
query ontologyBrowserSkills(
$limit: Int!,
$offset: Int
) {
ontologyBrowserSkills(
limit: $limit,
offset: $offset
) {
id
preferredLabel
}
}
}
Variables
{"limit": 10, "offset": 20}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
no specific field, a part of array | query/ontologyBrowserSkills/preferredLabel | Skill |
List regions
This call returns a list of county regions.
REST
GET /api/profiles/v1/metadata/regions.{format}
GraphQL
{
query regions {
regions {
id
name
parentRegion {
...RegionFragment
}
}
}
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
alias | Not available, use query/regions/id instead | Alias |
title | query/regions/name | Title |
List reasons
This call returns a list of reasons by specified type.
REST
GET /api/profiles/v1/metadata/reasons.{format}
GraphQL
{
query reasons(
$reasonType: ReasonType!,
$all: Boolean
) {
reasons(
reasonType: $reasonType,
all: $all
) {
id
reason
alias
}
}
}
Variables
{"reasonType": "JOB_POSTING_CLOSE", "all": true}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
first element of array | query/reasons/id | Reference |
second element of array | query/reasons/reason | Name |
third element of array | query/reasons/alias | Alias |
Users
GraphQL OAuth2 scopes:
Name | Description |
---|---|
View UserDetails - Read only | Scope for user to fetch user details |
Referenced User
This API call returns details about the referenced user.
REST
GET /api/hr/v2/users/{user_reference}
GET /api/hr/v2/users/{user_reference}.{format}
GraphQL
query userDetails($id: ID!) {
userDetails(id: $id) {
id
nid
rid
name
firstName
lastName
photoUrl
publicUrl
email
location {
timezone
offsetToUTC
}
ciphertext
}
}
Variables
{"id": 4}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
reference | rid | The reference ID of the user |
id | id | The literal ID of the user |
first_name | firstName | The user’s first name |
last_name | lastName | The user’s last name |
timezone | location.timezone | The user’s time zone |
timezone_offset | location.offsetToUTC | The time zone offset in seconds |
is_provider | Deprecated | Indicates whether the user is a freelancer (can be hired) or not |
User’s email | ||
public_url | publicUrl | The URL to the public profile |
Jobs
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Read marketplace Job Postings | Scope to read marketplace Job Postings for enterprise user |
Search for jobs
The search parameters mirror the options available on the site plus options to configure the format of your results
REST
GET /api/profiles/v2/search/jobs.{format}
GraphQL
query marketplaceJobPostings(
$marketPlaceJobFilter: MarketplaceJobFilter,
$searchType: MarketplaceJobPostingSearchType,
$sortAttributes: [MarketplaceJobPostingSearchSortAttribute]
) {
marketplaceJobPostings(
marketPlaceJobFilter: $marketPlaceJobFilter,
searchType: $searchType,
sortAttributes: $sortAttributes
) {
totalCount
edges {
...MarketplaceJobpostingSearchEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"searchExpression_eq": "abc123",
"skillExpression_eq": "xyz789",
"titleExpression_eq": "abc123",
"searchTerm_eq": {
"andTerms_all": ["xyz789"],
"orTerms_any": ["abc123"],
"exactTerms_any": ["xyz789"],
"excludeTerms_any": ["abc123"]
},
"categoryIds_any": ["4"],
"subcategoryIds_any": ["4"],
"occupationIds_any": [4],
"ontologySkillIds_all": [4],
"sinceId_eq": "abc123",
"maxId_eq": "abc123",
"jobType_eq": "HOURLY",
"duration_eq": "WEEK",
"workload_eq": "FULL_TIME",
"clientHiresRange_eq": {"rangeStart": 987, "rangeEnd": 987},
"clientFeedBackRange_eq": {"rangeStart": 987.65, "rangeEnd": 123.45},
"budgetRange_eq": {"rangeStart": 987, "rangeEnd": 987},
"verifiedPaymentOnly_eq": false,
"previousClients_eq": true,
"experienceLevel_eq": "ENTRY_LEVEL",
"locations_any": ["abc123"],
"cityId_any": ["xyz789"],
"zipCodeId_any": ["xyz789"],
"radius_eq": 987,
"areaId_any": ["xyz789"],
"timezone_eq": "xyz789",
"usState_eq": "abc123",
"daysPosted_eq": 987,
"jobPostingAccess": "PUBLIC_INDEX",
"ptcIds_any": [4],
"ptcOnly_eq": true,
"enterpriseOnly_eq": true,
"proposalRange_eq": {"rangeStart": 987, "rangeEnd": 987},
"pagination_eq": {"after": "abc123", "first": 987},
"area_eq": {"latitude": 987.65, "longitude": 123.45, "radius": 123.45},
"preserveFacet_eq": "abc123",
"userLocationMatch_eq": true,
"visitorCountry_eq": "abc123"
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
q | marketPlaceJobFilter.searchExpression_eq | The search query. At least one of the `q`, `title`, `skill` parameters should be specified. |
title | marketPlaceJobFilter.titleExpression_eq | Searches for the title in the freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified. |
skills | marketPlaceJobFilter.skillExpression_eq | Searches for skills of freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified. |
category2 | marketPlaceJobFilter.categoryIds_any | The category (V2) of the freelancer's profile. Use Metadata resource to get it. You can get it via Metadata Category (v2) resource. |
subcategory2 | marketPlaceJobFilter.subcategoryIds_any | The subcategory of the job according to the list of Categories 2.0. Example: `Web & Mobile Development`. You can get it via Metadata Category (v2) resource. |
duration | marketPlaceJobFilter.duration_eq | The duration of the job. Valid values: week, month, semester, ongoing |
workload | marketPlaceJobFilter.workload_eq | Indicates the workload for the job. Valid values: as_needed, part_time, full_time |
client_feedback | marketPlaceJobFilter.clientFeedBackRange_eq | A number or range used to filter the search by jobs posted by clients with a rating equal to, more or less than, or within the values provided. If the value is `None`, then jobs from clients without rating are returned. Single parameters such as `1` or `2,3` are valid (comma separated values result in `OR` queries). Ranges such as `[2 TO 4]` are also valid. Examples: `5.0` - the rating is equal to 5.0; `1-5` - the rating is so that 1 <= n <= 5; `1-` - the rating is >=1; `-5` - the rating is <= 5. |
client_hires | marketPlaceJobFilter.clientHiresRange_eq | A number or range used to filter the search by clients with a number of past hires equal to, more or less than, or within the values provided. Single parameters such as `1` or `2,3` are valid (comma-separated values result in `OR` queries). Ranges such as `[10 TO 20]` are also valid. Examples: `5` - the number of past hires is to 5; `0-10`: number of past hires is 0 <= n <= 10; `10-` - the number of past hires is >=10; `-5` - the number of past hires is <= 5. |
budget | marketPlaceJobFilter.budgetRange_eq | A number or range used to filter the search by jobs having a budget equal to, more or less than, or within the values provided. For example: `[100 TO 1000]` - the budget is between 100 and 1000; `1000` - the budget is equal to 1000. `500-1000` - the budget `b` is 500 <= b <= 1000, `1000-` - the budget is >=1000; `-200` - the budget is <= 200. |
days_posted | marketPlaceJobFilter.daysPosted_eq | Number of days since the job was posted. |
paging | marketPlaceJobFilter.pagination_eq | Pagination, formed as `$offset;$count`. Page size is restricted to be <= 100. Example: page=20;10. |
sort | sortAttributes | Sorts the search results by the value provided. Example: `sort=create_time%20desc`. Valid values: create_time desc, client_rating desc, client_total_charge desc, client_total_hours desc, duration desc, workload desc, create_time asc, client_rating asc, client_total_charge asc, client_total_hours asc, duration asc, workload asc |
budget | has multiple fields depending on the job_type: - fixed --> response.edges.node.amount - hourly --> range (response.edges.node.hourlyBudgetMin - response.edges.node.hourlyBudgetMax) | Budget |
category2 | response.edges.node.category | Category |
client.country | response.edges.node.client.location.country | Client Country |
client.feedback | response.edges.node.client.totalFeedback | Client Feedback |
client.jobs_posted | response.edges.node.client.totalPostedJobs | Client Jobs Posted |
client.past_hires | response.edges.node.client.totalHires | Client Past Hires |
client.payment_verification_status | response.edges.node.client.verificationStatus | Client Payment Verification Status |
client.reviews_count | response.edges.node.client.totalReviews | Client Reviews Count |
date_created | response.edges.node.createdDateTime | Date Created |
duration | response.edges.node.duration | Duration |
id | response.edges.node.ciphertext | ID (Legacy) |
job_status | #deprecated | Job Status |
job_type | response.edges.node.job.contractTerms.contractType | Job Type |
skills | response.edges.node.skills | Skills |
snippet | response.edges.node.description | Snippet |
subcategory2 | response.edges.node.subcategory | Subcategory |
title | response.edges.node.title | Title |
url | Missing, but can be constructed using ${(stage.)?upwork.com/jobs/ + response.edges.node.ciphertext} | URL |
workload | response.edges.node.job.contractTerms.hourlyContractTerms.engagementType | Workload |
List jobs
This call returns all jobs that a user has `manage_recruiting` access to. It can be used to find the reference/key ID of a specific job.
REST
GET /api/hr/v2/jobs.{format}
GraphQL
{
organization {
jobPosting(
jobPostingFilter: {
postByTeamIds_any: $postByTeamIds_any
postByPersonIds_any: $postByPersonIds_any
statusAndAccess_any: $statusAndAccess_any
createdDateTimeFrom_eq: $createdDateTimeFrom_eq
createdDateTimeTo_eq: $createdDateTimeTo_eq
pagination_eq: $pagination_eq
}, sortAttribute: $sortAttribute) {
edges {
node {
id
attachment {
link
}
info {
status
hourlyBudgetMin {
rawValue
}
hourlyBudgetMax {
rawValue
}
auditTime {
createdDateTime
}
filledDateTime
legacyCiphertext
keepOpenOnHire
siteSource
}
content {
title
description
}
contractTerms {
fixedPriceContractTerms {
engagementDuration {
id
weeks
label
}
}
hourlyContractTerms {
engagementDuration {
id
weeks
label
}
}
contractStartDate
contractEndDate
contractType
}
ownership {
company {
id
rid
name
}
team {
id
rid
name
}
}
classification {
category {
id
name
}
skills {
id
prettyName
}
subCategory {
id
name
}
}
contractorSelection {
qualification {
contractorType
}
}
visibility
}
}
}
}
}
Variables
{
"pagination_eq": {"after": "xyz789", "first": 987},
"title_eq": "abc123",
"postByTeamIds_any": ["4"],
"postByPersonIds_any": ["4"],
"statusAndAccess_any": [
{"statuses_any": ["REQUESTED"], "accesses_any": ["PUBLIC_INDEX"]}
],
"excludePostByPersonIds_any": ["4"],
"categoryGroupIds_any": [4],
"contractType_eq": "HOURLY",
"createdDateTimeFrom_eq": "xyz789",
"createdDateTimeTo_eq": "abc123"
}
Fields:
REST Field | GraphQL Path | Description |
---|---|---|
buyer_team__reference | auto filled from the context organization | The reference ID of the client's team. Example: `34567`. You can get it from List teams API call. |
include_sub_teams | Included by default and need to use jobPostingFilter.postByTeamIds_any to filter for specific teams | If set to `1`, the response includes information about sub teams. Valid values: 0, 1 |
created_by | jobPostingFilter.postByPersonIds_any | The user ID. Example: `created_by=1234`. |
status | jobPostingFilter.statusAndAccess_any.statuses_any | The status of the job. Valid values: open, filled, cancelled |
created_time_from | jobPostingFilter.createdDateTimeFrom_eq | Filters by 'from' time. Example: `created_time_from=2008-09-09T00:00:01`. |
created_time_to | jobPostingFilter.createdDateTimeTo_eq | Filters by 'to' time. Example: `created_time_to=2009-01-20T11:59:59`. |
page | jobPostingFilter.pagination_eq | Pagination, formed as `$offset;$count`. Example: `page=20;10` |
order_by | sortAttribute | Sorts results by the value defined. Example: `order_by=created_time`. |
jobs.attachment_file_url | response.edges.node.attachment.link | Attachment File URL |
jobs.budget | response.edges.node.info.hourlyBudgetMin - response.edges.node.info.hourlyBudgetMax | Budget |
jobs.buyer_company__name | response.edges.node.ownership.company.name | Buyer Company Name |
jobs.buyer_company__reference | response.edges.node.ownership.company.rid or response.edges.node.ownership.company.id | Buyer Company Reference |
jobs.buyer_team__name | response.edges.node.ownership.team.name | Buyer Team Name |
jobs.buyer_team__reference | response.edges.node.ownership.team.rid or response.edges.node.ownership.team.id | Buyer Team Reference |
jobs.cancelled_date | Missing, the upstream response doesn't contain the field | Cancelled Date |
jobs.category2 | response.edges.node.classification.category | Category |
jobs.created_time | response.edges.node.info.auditTime.createdDateTime | Created Time |
jobs.description | response.edges.node.content.description | Description |
jobs.duration | response.edges.node.contractTerms.fixedPriceContractTerms.engagementDuration response.edges.node.contractTerms.hourlyContractTerms.engagementDuration | Duration |
jobs.end_date | response.edges.node.contractTerms.contractEndDate | End Date |
jobs.filled_date | response.edges.node.info.filledDateTime | Filled Date |
jobs.job_ref_ciphertext | response.edges.node.info.legacyCiphertext | Job Reference Ciphertext |
jobs.job_type | response.edges.node.contractTerms.contractType | Job Type |
jobs.keep_open_on_hire | response.edges.node.info.keepOpenOnHire | Keep Open on Hire |
jobs.preference_candidate_type | response.edges.node.contractorSelection.qualification.contractorType | Preference Candidate Type |
jobs.public_url | Missing, but can be constructed from response.edges.node.info.legacyCiphertext | Public URL |
jobs.reference | response.edges.node.info.legacyCiphertext | Reference |
jobs.skills | response.edges.node.classification.skills | Skills |
jobs.start_date | response.edges.node.contractTerms.contractStartDate | Start Date |
jobs.status | response.edges.node.info.status | Status |
jobs.subcategory2 | response.edges.node.classification.subCategory | Subcategory |
jobs.title | response.edges.node.content.title | Title |
Get job by key
This call returns the complete job object by job key. It's only available for users with `manage_recruiting` permissions within the team that the job is posted in.
REST
GET /api/hr/v2/jobs/{job_key}.{format}
GraphQL
{
jobPosting(jobPostingId: $JobPostingId) {
id
attachment {
link
}
info {
status
hourlyBudgetMin {
rawValue
}
hourlyBudgetMax {
rawValue
}
auditTime {
createdDateTime
}
filledDateTime
legacyCiphertext
keepOpenOnHire
siteSource
}
content {
title
description
}
contractTerms {
fixedPriceContractTerms {
engagementDuration {
id
weeks
label
}
}
hourlyContractTerms {
engagementDuration {
id
weeks
label
}
}
contractStartDate
contractEndDate
contractType
}
ownership {
company {
id
rid
name
}
team {
id
rid
name
}
}
classification {
category {
id
name
}
skills {
id
prettyName
}
subCategory {
id
name
}
}
contractorSelection {
qualification {
contractorType
}
}
visibility
}
}
Variables
{"jobPostingId": 4}
Fields:
REST Field | GraphQL Path |
---|---|
job_key | jobPostingId |
jobs.attachment_file_url | response.edges.node.attachment.link |
jobs.budget | response.edges.node.info.hourlyBudgetMin - response.edges.node.info.hourlyBudgetMax |
jobs.buyer_company__name | response.edges.node.ownership.company.name |
jobs.buyer_company__reference | response.edges.node.ownership.company.rid or response.edges.node.ownership.company.id |
jobs.buyer_team__name | response.edges.node.ownership.team.name |
jobs.buyer_team__reference | response.edges.node.ownership.team.rid or response.edges.node.ownership.team.id |
jobs.cancelled_date | Missing, the upstream response doesn't contain the field |
jobs.category2 | response.edges.node.classification.category |
jobs.created_time | response.edges.node.info.auditTime.createdDateTime |
jobs.description | response.edges.node.content.description |
jobs.duration | response.edges.node.contractTerms.fixedPriceContractTerms.engagementDuration response.edges.node.contractTerms.hourlyContractTerms.engagementDuration |
jobs.end_date | response.edges.node.contractTerms.contractEndDate |
jobs.filled_date | response.edges.node.info.filledDateTime |
jobs.job_type | response.edges.node.contractTerms.contractType |
jobs.keep_open_on_hire | response.edges.node.info.keepOpenOnHire |
jobs.preference_candidate_type | response.edges.node.contractorSelection.qualification.contractorType |
jobs.public_url | Missing, but can be constructed from response.edges.node.info.legacyCiphertext |
jobs.skills | response.edges.node.classification.skills |
jobs.start_date | response.edges.node.contractTerms.contractStartDate |
jobs.status | response.edges.node.info.status |
jobs.subcategory2 | response.edges.node.classification.subCategory |
jobs.title | response.edges.node.content.title |
jobs.visibility | response.edges.node.visibility |
Snapshots
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Read snapshots information | Scope to read snapshots information. |
Get snapshot by Contract
Gets a specific snapshot
REST
GET /api/team/v3/snapshots/contracts/{contract_id}/{timestamp}.{format}
GraphQL
query ($contractId: contractId, $timestamp: timestamp) {
snapshotsByContractId(input: {contractId: $contractId, timestamp: $timestamp}) {
id
contractId
time
screenshotImageMedium
screenshotImage
memo
screenshotImageThumbnail
webcamImageThumbnail
companyId
keyboardEventsCount
minutes {
minute {
mouse
keyboard
time
}
}
hasWebcam
teamName
webcamImage
activeWindowTitle
hasScreenshot
task
mouseEventsCount
webcamUrl
screenshotUrl
status
screenshotImageLarge
}
}
Variables
{"contractId": "123456", "timestamp": "123456"}
Fields:
REST Field | GraphQL Path |
---|---|
uid | Snapshot.id |
time | Snapshot.time |
contractId | Snapshot.contractId |
mouseEventsCount | Snapshot.mouseEventsCount |
keyboardEventsCount | Snapshot.keyboardEventsCount |
teamName | Snapshot.teamName |
status | SnapshotStatus |
activeWindowTitle | Snapshot.activeWindowTitle |
memo | Snapshot.memo |
companyId | Snapshot.companyId |
hasScreenshot | Snapshot.hasScreenshot |
screenshotUrl | SnapshotScreenshotUrl |
screenshotImg | SnapshotScreenshotImage |
screenshotImgLrg | SnapshotScreenshotImageLarge |
screenshotImgMed | SnapshotScreenshotImageMedium |
screenshotImgThmb | SnapshotScreenshotImageThumbnail |
hasCamerashot | Snapshot.hasWebcam |
webcamUrl | Snapshot.webcamUrl |
webcamImg | Snapshot.webcamImage |
webcamImgThmb | Snapshot.webcamImageThumbnail |
task | Snapshot.task |
minutes.time | Snapshot.minutes.time |
minutes.mouse | Snapshot.minutes.mouse |
minutes.keyboard | Snapshot.minutes.keyboard |
workdiary_api | Deprecated |
Reports
GraphQL OAuth2 scopes:
Name | Description |
---|---|
Common Entities - Read-Only Access | Grants read-only access to common entities like Organization, User, Freelancer Profile, etc. |
Read Time sheet data | Allows to Read Timesheet data |
Read only access for transaction data | Grants read-only access to Transaction records including history information |
Get billing reports for a client’s company
This call allows company owners to see what their freelancers get paid. Disallowed fields: `comment`, `po_number`. Supported filters: `date`, `week`, `month`, `year`, `date_due`, `provider_company__reference`, `provider_company__id`, `provider__reference`, `provider__id`, `assignment__reference`, `type`, `subtype`. Permissions: owner or admin.
REST
GET /gds/finreports/v2/buyer_companies/{buyer_company_ref}/billings
GraphQL
query TransactionHistory($aceIds_any: [ID!]!, $transactionDateTime_bt: DateTimeRange!) {
transactionHistory(
transactionHistoryFilter: {aceIds_any: $aceIds_any, transactionDateTime_bt: $transactionDateTime_bt}
) {
transactionDetail {
transactionHistoryRow {
rowNumber
runningChargeableBalance {
rawValue
currency
displayValue
}
recordId
remainder
amountCreditedToUser {
rawValue
currency
displayValue
}
transactionReviewDueDate
transactionCreationDate
relatedUserPaymentMethod
accountingSubtype
descriptionUI
relatedAssignment
amountSentInOrigCurrency {
rawValue
currency
displayValue
}
paymentGuaranteed
fixedPriceEARMark
relatedTransactionId
relatedInvoiceId
fullyPaidDate
type
transactionAmount {
rawValue
currency
displayValue
}
relatedAccountingEntity
description
purchaseOrderNumber
assignmentAgencyName
assignmentCompanyName
assignmentDeveloperName
assignmentTeamCompanyId
assignmentTeamCompanyReference
assignmentTeamId
assignmentTeamReference
assignmentTeamUserId
assignmentTeamUserReference
payment {
rawValue
currency
displayValue
}
paymentStatus
}
}
}
}
Fields:
REST Field | GraphQL Path | Description | Notes |
---|---|---|---|
reference | recordId | The reference of the accounting transaction. | |
date | transactionCreationDate | The date when the transaction was created. | |
date_due | transactionReviewDueDate | The date when the accounting transaction was committed. | |
assignment__reference | relatedAssignment | The reference ID of an assignment for which this payment was made, if available. | |
assignment_name | N/A | The name of the assignment. | |
accounting_entity__reference | relatedAccountingEntity | The reference ID of an AccountingEntity used for the accounting transaction. | |
accounting_entity_name | assignmentCompanyName | The name of the AccountingEntity. | |
buyer_company__reference | assignmentTeamCompanyReference | The reference ID of the client’s company that the client’s team belongs to. | |
buyer_company__id | assignmentTeamCompanyId | The literal ID of the client’s company. | |
buyer_company_name | assignmentCompanyName | The name of the client’s company. | |
buyer_team__reference | assignmentTeamCompanyReference | The reference ID of the client’s team that owns the assignment. | |
buyer_team__id | assignmentTeamCompanyId | The literal ID of the client’s team. | |
buyer_team_name | assignmentCompanyName | The name of the client’s team. | |
provider_company__reference | N/A | The reference ID of the freelancer’s company. | |
provider_company__id | N/A | The literal ID of the freelancer’s company. | |
provider_company_name | N/A | The name of the freelancer’s company. | |
provider_team__reference | N/A | The reference ID of the freelancer’s team that the freelancer is staffed under for the assignment. | |
provider_team__id | N/A | The literal ID of the freelancer’s team. | |
provider_team_name | N/A | The name of the freelancer’s team. | |
provider__reference | assignmentTeamUserReference | The reference ID of the freelancer who works under the assignment. | |
provider__id | assignmentTeamUserId | The literal ID of the freelancer. | |
provider_name | assignmentDeveloperName | The name of the freelancer. | |
type | type | The transaction type - Invoice, Payment, Adjustment. | |
subtype | accountingSubtype | The detailed transaction type - Hourly, Fixed Price, Bonus, Refund, Withdrawal, Payment, Adjustment, Salary, Security Deposit, Chargeback, Chargeback Resolution, Referral, Customer Satisfaction, Expense, Overtime, Milestone, Upfront Payment, Credit. | |
description | description | The description of the transaction. | |
comment | N/A | The comment given for adjustments. | |
memo | N/A | The memo for the transaction. | |
notes | descriptionUI | The added by user notes. | |
amount | if we want it with the negative sign: amountCreditedToUser.rawValue but transactionAmount can be found in : transactionAmount.rawValue | The amount of the transaction. Supports aggregation | What we get from the REST API is with the sign |
po_number | purchaseOrderNumber | The purchase order number. | What we get from the REST API is with the sign |
Get earning reports for a client’s company
This call allows company owners to see what they pay to their freelancers. Disallowed fields: none. Supported filters: `date`, `week`, `month`, `year`, `date_due`, `provider_company__reference`, `provider_company__id`, `provider__reference`, `provider__id`, `assignment__reference`, `type`, `subtype`, `po_number`. Permissions: owner or admin.
REST
GET /gds/finreports/v2/buyer_companies/{buyer_company_ref}/earnings
GraphQL
query TransactionHistory($aceIds_any: [ID!]!, $transactionDateTime_bt: DateTimeRange!) {
transactionHistory(
transactionHistoryFilter: {aceIds_any: $aceIds_any, transactionDateTime_bt: $transactionDateTime_bt}
) {
transactionDetail {
transactionHistoryRow {
rowNumber
runningChargeableBalance {
rawValue
currency
displayValue
}
recordId
remainder
amountCreditedToUser {
rawValue
currency
displayValue
}
transactionReviewDueDate
transactionCreationDate
relatedUserPaymentMethod
accountingSubtype
descriptionUI
relatedAssignment
amountSentInOrigCurrency {
rawValue
currency
displayValue
}
paymentGuaranteed
fixedPriceEARMark
relatedTransactionId
relatedInvoiceId
fullyPaidDate
type
transactionAmount {
rawValue
currency
displayValue
}
relatedAccountingEntity
description
purchaseOrderNumber
assignmentAgencyName
assignmentCompanyName
assignmentDeveloperName
assignmentTeamCompanyId
assignmentTeamCompanyReference
assignmentTeamId
assignmentTeamReference
assignmentTeamUserId
assignmentTeamUserReference
payment {
rawValue
currency
displayValue
}
paymentStatus
}
}
}
}
Get company-wide time reports
Time reports can be generated at company-wide level. In order to access this call the authorized user needs either hiring or finance permissions to all teams within the company
REST
GET /gds/timereports/v1/companies/{company_id}
GraphQL
query timeReport($orgId: ID!, $after: String, $first: Int!, $timeReportDate_bt: DateTimeRange!) {
contractTimeReport(
filter: {organizationId_eq: $orgId, timeReportDate_bt: $timeReportDate_bt}
pagination: {after: $after, first: $first}
) {
totalCount
edges {
cursor
node {
dateWorkedOn
weekWorkedOn
monthWorkedOn
yearWorkedOn
freelancer {
id
nid
name
}
team {
id
name
}
contract {
id
}
task
taskDescription
memo
totalHoursWorked
totalCharges
totalOnlineHoursWorked
totalOnlineCharge
totalOfflineHoursWorked
totalOfflineCharge
}
}
}
}
Fields:
REST Field | GraphQL Path | Description | Notes |
---|---|---|---|
worked_on | dateWorkedOn | The date when work was performed by the freelancer. | |
week_worked_on | weekWorkedOn | Monday’s date corresponding to the week when the worked_on occurs. | |
month_worked_on | monthWorkedOn | The month, in number, for the date in the worked_on field. | |
year_worked_on | yearWorkedOn | The year in the date that appears in the Start Date field. | |
provider_id | freelancer.nid | The ID of freelancer. | endpoint returns the Nid not the Id as value |
provider_name | freelancer.name | The freelancer’s name. | |
team_id | team.legacyId, team.id | The ID of team billed. | endpoint returns the legacyId of the team |
team_name | team.name | The name of team billed. | |
assignment_team_id | contract.clientTeam.legacyId | The ID of the hiring team in the assignment. | |
assignment_name | contract.title | The opening title of the assignment. | |
assignment_ref | contract.id | The contract ID. | |
agency_id | contract.vendorOrganization.id | The team ID of the agency. | |
agency_name | contract.vendorOrganization.name | The name of the agency. | |
agency_company_id | contract.vendorOrganization.company.id | The agency ID of rollup agency_id. | |
task | task, taskDescription | The activities which the freelancer worked on. | |
memo | memo | The memos logged by the freelancer during work. | |
hours | totalHoursWorked | The total hours worked by the freelancer during the date of worked_on. Supports aggregation | |
charges | totalCharges | The total amount charged to the client. Supports aggregation | |
hours_online | totalOnlineHoursWorked | The number of online hours in hours. Supports aggregation | |
charges_online | totalOnlineCharge | The charges of work performed online. Supports aggregation | |
hours_offline | totalOfflineHoursWorked | The number of offline hours, in hours. Supports aggregation | |
charges_offline | totalOfflineCharge | The charges of work performed offline. Supports aggregation |
GraphQL OAuth2 scopes:
Name | Description |
---|---|
TimeSheet - Read-Only Access | Grants read-only access to time-sheet data |
Get time reports for a team (hours only)
This call generates time report for a team without detailed monetary information (charges, etc.), only information about hours. Note that if the `provider_id` field is present in the query, the caller must be a supervisor of the freelancers. If the `provider_id` is not provided in the query, the caller must have either hiring manager or finance permission to the specified team.
REST
GET /gds/timereports/v1/companies/{company_id}/teams/{team_id}/hours
GraphQL
query timeReport($orgId: ID!, $after: String, $first: Int!, $timeReportDate_bt: DateTimeRange!) {
contractTimeReport(
filter: {organizationId_eq: $orgId, timeReportDate_bt: $timeReportDate_bt}
pagination: {after: $after, first: $first}
) {
totalCount
edges {
cursor
node {
dateWorkedOn
weekWorkedOn
monthWorkedOn
yearWorkedOn
freelancer {
id
nid
name
}
team {
id
name
}
contract {
id
}
task
taskDescription
memo
totalHoursWorked
totalCharges
totalOnlineHoursWorked
totalOnlineCharge
totalOfflineHoursWorked
totalOfflineCharge
}
}
}
}
Operations
Common Information
Typical GraphQL services provide access to two types of requests: Queries and Mutations. The last can include more complicated structures in the request, like Arguments, Aliases, Fragments, Directives, and Variables. Queries are used to fetch the data, where Mutations are needed in order to modify server-side data. For more information, please follow Queries and Mutations section at graphql.org.
Error handling in GraphQL
If the Upwork server fails while processing a GraphQL request, the system sends an error array response to the client. It is important to note that errors in GraphQL are handled differently from how we might be used to in ReST. While ReST endpoints return HTTP status codes in the error response, for example, 400 - Bad Request in case of malformed syntax, GraphQL always returns a 200 - OK status code, regardless of whether the operation succeeded or failed. Consequently, understanding how to decode error responses in GraphQL is crucial to troubleshooting potential operation failures.
Decoding error responses
GraphQL error arrays list all the errors that occurred while processing the API request. Additionally, they provide important information that helps you fix the problem or guide you on what to do next. Let’s take a closer look at what’s returned.
- Message: The error message that helps you understand if the operation succeeded or failed. For example, Validation error of type MissingFieldArgument.
- Locations: The exact location in the API request query that results in the error. For example, the line and column parameters in the response.
- Extensions: The type of error. For example, ValidationError.
Here is a sample code snippet of a GraphQL error response in Upwork:
{ "errors": [ { "message": "Validation error of type MissingFieldArgument: Missing field argument stepUpVerificationId @ 'user/stepUpVerification'", "locations": [ { "line": 3, "column": 5 } ], "extensions": { "classification": "ValidationError" } }, { "message": "Validation error of type SubSelectionRequired: Sub selection required for type UserVerification of field stepUpVerification @ 'user/stepUpVerification'", "locations": [ { "line": 3, "column": 5 } ], "extensions": { "classification": "ValidationError" } } ] }
As the generic status code in GraphQL is not intuitive, you must access the body of the error response to further understand the correct status of the operation.
For example, the following API query returned the status code: 200 - OK. Let's see how the message, locations, and extensions parameters in the body help you understand the status of the API call.

Exceptions in GraphQL error types
Typically, GraphQL returns the HTTP status code 200 when the API operation fails at the upstream or data provider service layer. For example, if you do not have Oauth2 permissions or scopes to access an endpoint, the system displays the following error response

However, if the API operation fails at the GraphQL layer itself, the system returns the typical 5XX HTTP status codes, such as 500 - Internal Server Error if the server encounters an unexpected condition that prevents it from fulfilling the request. In these cases, you can rely on the status code to understand if the operation failed or succeeded.
Sample GraphQL API failure scenarios
When you do not have Oauth2 permissions or scopes to access the endpoint
Query request:{ user { id nid rid name email } organization { id rid } }Error response:
{ "errors": [ { "message": "The client or authentication token doesn't have enough oauth2 permissions/scopes to access: [CurrentOrganization.id, CurrentOrganization.rid, CurrentUser.email, CurrentUser.id, CurrentUser.name, CurrentUser.nid, CurrentUser.rid, Query.organization, Query.user]." } ] }
When you do not specify any value for a required field
Query request:{ user { companyFees(organizationId: null, input: { amount: "15" }) { amount fullAmount fees { type description calculationDescription rate amount } } } }Error response:
{ "errors": [ { "message": "Validation error of type NullValueForNonNullArgument: null value for non-null field argument organizationId @ 'user/companyFees'", "locations": [ { "line": 3, "column": 5 } ], "extensions": { "classification": "ValidationError" } }, { "message": "Validation error of type WrongType: argument 'organizationId' with value 'NullValue{}' must not be null @ 'user/companyFees'", "locations": [ { "line": 3, "column": 17 } ], "extensions": { "classification": "ValidationError" } } ] }
When you do not define a parameter
Query request:{ user { stepUpVerification } }Error response:
{ "errors": [ { "message": "Validation error of type MissingFieldArgument: Missing field argument stepUpVerificationId @ 'user/stepUpVerification'", "locations": [ { "line": 3, "column": 5 } ], "extensions": { "classification": "ValidationError" } }, { "message": "Validation error of type SubSelectionRequired: Sub selection required for type UserVerification of field stepUpVerification @ 'user/stepUpVerification'", "locations": [ { "line": 3, "column": 5 } ], "extensions": { "classification": "ValidationError" } } ] }
Using GraphQL through Upwork SDK
Currently, Upwork supports GraphQL SDKs in the following languages:
- Java
- PHP
- Python 3
- Node JS
- Ruby
- Go
SDKs return the GraphQL error responses similar to APIs and do not handle them any differently.
Subscriptions in GraphQL
The Subscription feature allows clients to subscribe to specific events within the system. Once a subscribed event occurs, the system automatically sends a payload to the client’s designated webhook. This payload includes essential details about the event, such as the entity, action, and id associated with the event.
By utilizing this feature, clients can stay updated with real-time changes, ensuring they are always in sync with the events that matter most to their application or business. The subscription process is flexible and can be configured to trigger on various events, such as updates, creations, or other predefined actions.
Key Components:
- Entity: Represents the object or resource associated with the event (e.g., "JP", "OFFER", "JA").
- Action: Describes the type of event or operation performed (e.g., "NEW", "UPDATE", "CANCELLED").
- ID: A unique identifier associated with the event, typically referencing a specific record or transaction.
When an event that the client has subscribed to is triggered, the system will send a payload to the client's webhook endpoint. This payload will include the entity name, action taken, and a unique identifier (ID) to allow for easy tracking and handling of the event.
Example Payload:
{ "entity": "OFFER", "action": "CREATE", "id": "123456789" }
To manage your subscriptions and configure events easily, you can use our Subscription Management Tool. This tool allows you to view, create, and update your subscriptions through a user-friendly interface.
This ensures that clients receive the necessary data to process events in real-time, giving them complete control over how events are handled within their application. The flexibility to define custom webhooks and subscribe to a range of events provides a powerful way to integrate the system's activities with the client’s workflows.
Supported events:
Entity | Action | Description |
---|---|---|
Job postings (JP) | NEW | new marketplace job posting was created |
UPDATE | marketplace job posting was updated | |
CLOSE | marketplace job posting was closed | |
Offer (OFFER) | CREATE | new offer was created |
DECLINE | offer was declined | |
EXPIRED | offer expired | |
CANCELLED | offer was cancelled | |
WITHDREW | offer was withdrawn | |
ACCEPTED | offer is accepted | |
Vendor Job Application (Vendor JA) | VendorCreate | job application was created by vendor |
SystemAccept | job application was accepted by system (currently this only means that connects were charged successfully | |
VendorWithdraw | vendor withrdew the job application | |
VendorReplace | job application was replaced (vendor proposed different terms) | |
ClientActivate | client activated job application by starting conversation with the freelancer | |
ClientOffer | client made an offer | |
ClientDecline | client declined job application | |
SystemArchive | job application was archived by system (for example, when opening was cancelled) | |
VendorHide | job application was hidden by vendor | |
VendorUnHide | job application was unhidden by vendor | |
SystemReject | job application was rejected by the system (currently this means that use had not enough connects) | |
SystemReplace | new job application was created by system with new terms proposed by vendor | |
VendorReapply | when vendor re-apply to a job | |
VendorAcceptInvite | when vendor accepts an invite-to-interview | |
SystemHold | when system marks application as on hold | |
SystemUnHold | when system marks application as not on hold | |
VendorAcceptOffer | when vendor accepts client offer | |
VendorDeclineOffer | when vendor declines client offer | |
ClientWithdrawOffer | when client withdrew the offer | |
SystemApplyToStaffAugDuplicate | when system apply staff event happened | |
SystemWithdraw | system withdrew event | |
VendorAcceptInviteWithPendingOffer | vendor accepts a job invitation with offer in pending state | |
VendorAcceptInviteWithAcceptedOffer | vendor accepts a job invitation with accepted offer | |
VendorInitiate | vendor submits a regular job application(proposal) | |
SystemInvalidate | system invalidate event | |
ValidationTimeOut | validation timeouts | |
SystemValidate | system validate event | |
ClientHire | client hires | |
OccupationUpdated | occupation updated | |
OccupationRemoved | occupation removed | |
UpdateTerms | terms were updated | |
Contract (CONTRACT) | START | contract started |
FINISH | contract finished | |
RECREATE | contract re-created | |
REFRESH | contract refreshed | |
Client Job Application (Client JA) | VendorCreate | job application was created by vendor |
SystemPublish | job application was accepted by system | |
ClientActivate | client activated job application by starting conversation with the vendor | |
ClientAccept | client made an offer to vendor | |
ClientDecline | client declined job application | |
VendorWithdraw | vendor withrdew the job application | |
VendorReplace | job application was replaced (vendor proposed different terms) | |
ClientRead | job application was read by the client | |
ClientHide | job application was unhidden by the client | |
ClientUnhide | job application was unhidden by the client | |
SystemHide | job application was hidden by the system | |
SystemUnhide | job application was unhidden by the system | |
SystemRecommend | job application was recommended by the system | |
SystemArchive | job application was archived by system (for example, when opening was cancelled) | |
ClientMessage | client sends a message | |
VendorAcceptInvite | vendor accepts a job invitation | |
ClientShortlist | client shortlisted an application | |
ClientUnshortlist | client unshortlisted an application | |
SystemScoreApplication | match scored a job application | |
SystemReplace | new job application was created by system with new terms proposed by vendor | |
NotRecommend | not recommended event | |
VendorDeclineOffer | when vendor declines client offer | |
ClientWithdrawOffer | when vendor withdraws client offer | |
VendorAcceptOffer | when vendor accepts client offer | |
VendorAcceptInviteWithPendingOffer | vendor accepts a job invitation with offer in pending state | |
VendorAcceptInviteWithAcceptedOffer | vendor accepts a job invitation with accepted offer | |
SystemWithdraw | system withdrew event | |
OccupationUpdated | occupation updated | |
OccupationRemoved | occupation removed | |
UpdateTerms | terms were updated | |
OutOfMoney | job application went out of money | |
RecruiterShortlist | vendor shortlisted a job application | |
RecruiterUnshortlist | vendor unshortlisted a job application | |
Milestone (MILESTONE) | REFRESH | milestone refreshed |
Contract Feedback (CFB) | SUBMIT | contract feedback was submitted |
UPDATE | contract feedback was updated | |
DELETE | contract feedback was deleted |
Queries
accountAuditRecord
Description
Audit information of the account management action
Response
Returns an AccountAuditRecord
Arguments
Name | Description |
---|---|
processInstanceId - ID!
|
Example
Query
query accountAuditRecord($processInstanceId: ID!) {
accountAuditRecord(processInstanceId: $processInstanceId) {
processInstanceId
status
metadata {
...StringMapElementFragment
}
}
}
Variables
{"processInstanceId": 4}
Response
{
"data": {
"accountAuditRecord": {
"processInstanceId": "4",
"status": "abc123",
"metadata": [StringMapElement]
}
}
}
accountingEntity
Description
Get the Accounting Entity of the current user from their organization uid
Response
Returns an AccountingEntity!
Example
Query
query accountingEntity {
accountingEntity {
id
}
}
Response
{"data": {"accountingEntity": {"id": "4"}}}
clientProposal
Description
client proposal by ID
Response
Returns a ClientProposal
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query clientProposal($id: ID!) {
clientProposal(id: $id) {
id
user {
...GenericUserFragment
}
organization {
...GenericOrganizationFragment
}
job {
...MarketplaceJobPostingFragment
}
terms {
...ProposalTermsFragment
}
coverLetter
projectPlan {
...ProposalProjectPlanFragment
}
auditDetails {
...ProposalAuditDetailsFragment
}
status {
...ClientProposalStatusFragment
}
annotations
}
}
Variables
{"id": "4"}
Response
{
"data": {
"clientProposal": {
"id": 4,
"user": GenericUser,
"organization": GenericOrganization,
"job": MarketplaceJobPosting,
"terms": ProposalTerms,
"coverLetter": "xyz789",
"projectPlan": ProposalProjectPlan,
"auditDetails": ProposalAuditDetails,
"status": ClientProposalStatus,
"annotations": ["Recommended"]
}
}
}
clientProposals
Description
search client proposal
Response
Returns a ClientProposalsConnection
Arguments
Name | Description |
---|---|
jobPostingId - ID!
|
|
filter - ClientProposalFilter
|
|
sortAttribute - ClientProposalSortAttribute
|
|
pagination - Pagination
|
Example
Query
query clientProposals(
$jobPostingId: ID!,
$filter: ClientProposalFilter,
$sortAttribute: ClientProposalSortAttribute,
$pagination: Pagination
) {
clientProposals(
jobPostingId: $jobPostingId,
filter: $filter,
sortAttribute: $sortAttribute,
pagination: $pagination
) {
totalCount
edges {
...ClientProposalsEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"jobPostingId": 4,
"filter": ClientProposalFilter,
"sortAttribute": ClientProposalSortAttribute,
"pagination": Pagination
}
Response
{
"data": {
"clientProposals": {
"totalCount": 123,
"edges": [ClientProposalsEdge],
"pageInfo": PageInfo
}
}
}
company
Response
Returns a CompanyInfo
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query company($id: ID!) {
company(id: $id) {
public {
...PublicCompanyInfoFragment
}
private {
...PrivateCompanyInfoFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"company": {
"public": PublicCompanyInfo,
"private": PrivateCompanyInfo
}
}
}
companySelector
Description
Company selector provides information on companies that user can select
Response
Returns a CompanySelector!
Example
Query
query companySelector {
companySelector {
items {
...CompanySelectorItemFragment
}
}
}
Response
{
"data": {
"companySelector": {"items": [CompanySelectorItem]}
}
}
contract
Description
Fetch contract information by ID. Note: The provided 'id' corresponds to the id of the contract term in the ContractDetails schema.
Example
Query
query contract($id: ID!) {
contract(id: $id) {
id
title
contractType
job {
...MarketplaceJobPostingFragment
}
hasAgency
offer {
...OfferFragment
}
clientProposal {
...ClientProposalFragment
}
weeklyChargeAmount {
...MoneyFragment
}
weeklyHoursLimit
hourlyChargeRate {
...MoneyFragment
}
createdDateTime
firstContractStartDateTime
modifiedDateTime
startDateTime
endDateTime
manualTimeAllowed
hideScreenshots
last
weeklyStipendHours
estimatedDuration {
...ProposalEngagementDurationFragment
}
status
suspended
freelancer {
...FreelancerProfileFragment
}
paused
clientCompany {
...PublicCompanyInfoFragment
}
milestones {
...MilestoneFragment
}
contractId
workDays {
...WorkDayFragment
}
workDiaryTimeCells {
...WorkDiaryTimeCellFragment
}
feedback {
...FeedbackFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"contract": {
"id": 4,
"title": "xyz789",
"contractType": "HOURLY",
"job": MarketplaceJobPosting,
"hasAgency": false,
"offer": Offer,
"clientProposal": ClientProposal,
"weeklyChargeAmount": Money,
"weeklyHoursLimit": 987.65,
"hourlyChargeRate": Money,
"createdDateTime": "xyz789",
"firstContractStartDateTime": "xyz789",
"modifiedDateTime": "abc123",
"startDateTime": "abc123",
"endDateTime": "abc123",
"manualTimeAllowed": true,
"hideScreenshots": false,
"last": false,
"weeklyStipendHours": 123.45,
"estimatedDuration": ProposalEngagementDuration,
"status": "ACTIVE",
"suspended": true,
"freelancer": FreelancerProfile,
"paused": false,
"clientCompany": PublicCompanyInfo,
"milestones": [Milestone],
"contractId": "4",
"workDays": [WorkDay],
"workDiaryTimeCells": [WorkDiaryTimeCell],
"feedback": Feedback
}
}
}
contractByTerm
Description
get contract data by term id termId - contract term id, legacy contract assignment rid. required date - date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd, optional
Response
Returns a ContractDetails!
Example
Query
query contractByTerm(
$termId: ID!,
$date: String
) {
contractByTerm(
termId: $termId,
date: $date
) {
id
title
status
closingReason {
...ClosingReasonFragment
}
deliveryModel
kind
isPtc
createDate
modifyDate
startDate
endDate
offer {
...OfferFragment
}
offerId
job {
...JobPostingFragment
}
freelancer {
...ContractUserFragment
}
vendorOrganization {
...GenericOrganizationFragment
}
vendorTeam {
...GenericOrganizationFragment
}
clientOrganization {
...GenericOrganizationFragment
}
clientTeam {
...GenericOrganizationFragment
}
hiringManager {
...ContractUserFragment
}
agencyManager {
...ContractUserFragment
}
supervisor {
...ContractUserFragment
}
changingUserType
changedBy {
...ContractUserFragment
}
endedBy {
...ContractUserFragment
}
metadata {
...ContractMetadataFragment
}
hourlyLimits {
...HourlyLimitFragment
}
terms {
...ContractTermsFragment
}
}
}
Variables
{"termId": 4, "date": "xyz789"}
Response
{
"data": {
"contractByTerm": {
"id": 4,
"title": "xyz789",
"status": "ACTIVE",
"closingReason": ClosingReason,
"deliveryModel": "TALENT_MARKETPLACE",
"kind": "WEEKLY_RETAINER",
"isPtc": false,
"createDate": "xyz789",
"modifyDate": "xyz789",
"startDate": "xyz789",
"endDate": "xyz789",
"offer": Offer,
"offerId": "4",
"job": JobPosting,
"freelancer": ContractUser,
"vendorOrganization": GenericOrganization,
"vendorTeam": GenericOrganization,
"clientOrganization": GenericOrganization,
"clientTeam": GenericOrganization,
"hiringManager": ContractUser,
"agencyManager": ContractUser,
"supervisor": ContractUser,
"changingUserType": "CLIENT",
"changedBy": ContractUser,
"endedBy": ContractUser,
"metadata": ContractMetadata,
"hourlyLimits": [HourlyLimit],
"terms": ContractTerms
}
}
}
contractDetails
Description
get contract data by contract id.
id - contract id, legacy virtual rollup id. required
date - returns only active terms on the given date. date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd, optional
Response
Returns a ContractDetails!
Example
Query
query contractDetails(
$id: ID!,
$date: String
) {
contractDetails(
id: $id,
date: $date
) {
id
title
status
closingReason {
...ClosingReasonFragment
}
deliveryModel
kind
isPtc
createDate
modifyDate
startDate
endDate
offer {
...OfferFragment
}
offerId
job {
...JobPostingFragment
}
freelancer {
...ContractUserFragment
}
vendorOrganization {
...GenericOrganizationFragment
}
vendorTeam {
...GenericOrganizationFragment
}
clientOrganization {
...GenericOrganizationFragment
}
clientTeam {
...GenericOrganizationFragment
}
hiringManager {
...ContractUserFragment
}
agencyManager {
...ContractUserFragment
}
supervisor {
...ContractUserFragment
}
changingUserType
changedBy {
...ContractUserFragment
}
endedBy {
...ContractUserFragment
}
metadata {
...ContractMetadataFragment
}
hourlyLimits {
...HourlyLimitFragment
}
terms {
...ContractTermsFragment
}
}
}
Variables
{
"id": "4",
"date": "xyz789"
}
Response
{
"data": {
"contractDetails": {
"id": "4",
"title": "abc123",
"status": "ACTIVE",
"closingReason": ClosingReason,
"deliveryModel": "TALENT_MARKETPLACE",
"kind": "WEEKLY_RETAINER",
"isPtc": false,
"createDate": "xyz789",
"modifyDate": "xyz789",
"startDate": "xyz789",
"endDate": "abc123",
"offer": Offer,
"offerId": 4,
"job": JobPosting,
"freelancer": ContractUser,
"vendorOrganization": GenericOrganization,
"vendorTeam": GenericOrganization,
"clientOrganization": GenericOrganization,
"clientTeam": GenericOrganization,
"hiringManager": ContractUser,
"agencyManager": ContractUser,
"supervisor": ContractUser,
"changingUserType": "CLIENT",
"changedBy": ContractUser,
"endedBy": ContractUser,
"metadata": ContractMetadata,
"hourlyLimits": [HourlyLimit],
"terms": ContractTerms
}
}
}
contractList
Description
get contract details list by contract ids
ids - list of contract ids, legacy virtual rollup ids. max size is 10
Response
Returns a ContractList
Arguments
Name | Description |
---|---|
ids - [ID!]
|
Example
Query
query contractList($ids: [ID!]) {
contractList(ids: $ids) {
contracts {
...ContractDetailsFragment
}
}
}
Variables
{"ids": [4]}
Response
{
"data": {
"contractList": {"contracts": [ContractDetails]}
}
}
contractProposal
Description
Fetch contract proposal information by contract proposal ID.
Response
Returns a ContractProposal
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query contractProposal($id: ID!) {
contractProposal(id: $id) {
id
state
updatedDateTime
createdDateTime
canClientOfferBeAccepted
}
}
Variables
{"id": 4}
Response
{
"data": {
"contractProposal": {
"id": 4,
"state": "abc123",
"updatedDateTime": "xyz789",
"createdDateTime": "xyz789",
"canClientOfferBeAccepted": false
}
}
}
contractRoom
Description
Returns the interview room associated with the given contractId
Example
Query
query contractRoom($contractId: ID!) {
contractRoom(contractId: $contractId) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"contractId": "4"}
Response
{
"data": {
"contractRoom": {
"id": 4,
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": false,
"topic": "abc123",
"owner": RoomUser,
"numUnread": 123,
"roomFavoriteDateTime": "abc123",
"favorite": true,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "abc123",
"lastVisitedDateTime": "xyz789",
"lastReadDateTime": "xyz789",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "xyz789",
"readOnly": true,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": true,
"muted": true,
"contractId": 4,
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "abc123",
"roomNotePresent": false,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
contractTerm
Description
get contract and single term data termId - contract term id, legacy contract assignment rid. required
Response
Returns a ContractDetails!
Arguments
Name | Description |
---|---|
termId - ID!
|
Example
Query
query contractTerm($termId: ID!) {
contractTerm(termId: $termId) {
id
title
status
closingReason {
...ClosingReasonFragment
}
deliveryModel
kind
isPtc
createDate
modifyDate
startDate
endDate
offer {
...OfferFragment
}
offerId
job {
...JobPostingFragment
}
freelancer {
...ContractUserFragment
}
vendorOrganization {
...GenericOrganizationFragment
}
vendorTeam {
...GenericOrganizationFragment
}
clientOrganization {
...GenericOrganizationFragment
}
clientTeam {
...GenericOrganizationFragment
}
hiringManager {
...ContractUserFragment
}
agencyManager {
...ContractUserFragment
}
supervisor {
...ContractUserFragment
}
changingUserType
changedBy {
...ContractUserFragment
}
endedBy {
...ContractUserFragment
}
metadata {
...ContractMetadataFragment
}
hourlyLimits {
...HourlyLimitFragment
}
terms {
...ContractTermsFragment
}
}
}
Variables
{"termId": "4"}
Response
{
"data": {
"contractTerm": {
"id": "4",
"title": "abc123",
"status": "ACTIVE",
"closingReason": ClosingReason,
"deliveryModel": "TALENT_MARKETPLACE",
"kind": "WEEKLY_RETAINER",
"isPtc": false,
"createDate": "xyz789",
"modifyDate": "abc123",
"startDate": "abc123",
"endDate": "xyz789",
"offer": Offer,
"offerId": "4",
"job": JobPosting,
"freelancer": ContractUser,
"vendorOrganization": GenericOrganization,
"vendorTeam": GenericOrganization,
"clientOrganization": GenericOrganization,
"clientTeam": GenericOrganization,
"hiringManager": ContractUser,
"agencyManager": ContractUser,
"supervisor": ContractUser,
"changingUserType": "CLIENT",
"changedBy": ContractUser,
"endedBy": ContractUser,
"metadata": ContractMetadata,
"hourlyLimits": [HourlyLimit],
"terms": ContractTerms
}
}
}
contractTimeReport
Response
Returns a TimeReportConnection!
Arguments
Name | Description |
---|---|
filter - TimeReportFilter
|
|
pagination - Pagination
|
Example
Query
query contractTimeReport(
$filter: TimeReportFilter,
$pagination: Pagination
) {
contractTimeReport(
filter: $filter,
pagination: $pagination
) {
totalCount
edges {
...TimeReportEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"filter": TimeReportFilter,
"pagination": Pagination
}
Response
{
"data": {
"contractTimeReport": {
"totalCount": 987,
"edges": [TimeReportEdge],
"pageInfo": PageInfo
}
}
}
countries
Description
List of countries. Currently no filtering is available
Response
Returns [Country!]!
Example
Query
query countries {
countries {
id
name
twoLetterAbbreviation
threeLetterAbbreviation
region
phoneCode
relatedRegion {
...RegionFragment
}
relatedSubRegion {
...RegionFragment
}
active
registrationAllowed
}
}
Response
{
"data": {
"countries": [
{
"id": "4",
"name": "abc123",
"twoLetterAbbreviation": "abc123",
"threeLetterAbbreviation": "xyz789",
"region": "EU",
"phoneCode": "abc123",
"relatedRegion": Region,
"relatedSubRegion": Region,
"active": true,
"registrationAllowed": true
}
]
}
}
customFields
Description
custom fields information
Response
Returns [CustomFields!]
Arguments
Name | Description |
---|---|
input - CustomFieldsInput!
|
|
offset - Int
|
|
limit - Int
|
Example
Query
query customFields(
$input: CustomFieldsInput!,
$offset: Int,
$limit: Int
) {
customFields(
input: $input,
offset: $offset,
limit: $limit
) {
responseId
id
itemId
typeSnap
labelSnap
displayValueSnap
creator {
...GenericUserFragment
}
createdDateTime {
...DateTimeFragment
}
rollupAssignmentId
firstContractId
offerId
jobPostingId
byoInvitationId
buyItNowId
questionnaireResponsesId
stale
termSectionId
aclSnap
}
}
Variables
{"input": CustomFieldsInput, "offset": 987, "limit": 987}
Response
{
"data": {
"customFields": [
{
"responseId": "4",
"id": 4,
"itemId": "4",
"typeSnap": "TEXT_FIELD",
"labelSnap": "xyz789",
"displayValueSnap": "xyz789",
"creator": GenericUser,
"createdDateTime": DateTime,
"rollupAssignmentId": 4,
"firstContractId": 4,
"offerId": 4,
"jobPostingId": "4",
"byoInvitationId": "4",
"buyItNowId": "4",
"questionnaireResponsesId": 4,
"stale": false,
"termSectionId": "4",
"aclSnap": "xyz789"
}
]
}
}
freelancerProfileByProfileKey
Description
Retrieve freelancer profile by the freelancer profile key(ciphertext)
Response
Returns a FreelancerProfile!
Arguments
Name | Description |
---|---|
profileKey - String!
|
Example
Query
query freelancerProfileByProfileKey($profileKey: String!) {
freelancerProfileByProfileKey(profileKey: $profileKey) {
user {
...CurrentUserFragment
}
personalData {
...FreelancerProfilePersonalDataFragment
}
userPreferences {
...FreelancerProfileUserPreferencesFragment
}
otherExperiences {
...FreelancerProfileOtherExperiencesConnectionFragment
}
languages {
...FreelancerProfileLanguagesConnectionFragment
}
educationRecords {
...FreelancerProfileEducationRecordFragment
}
certificates {
...FreelancerProfileCertificateFragment
}
employmentRecords {
...FreelancerProfileEmploymentRecordFragment
}
availability {
...FreelancerProfileAvailabilityFragment
}
committedResponseTime {
...FreelancerProfileCommittedResponseTimeFragment
}
project {
...FreelancerProfileProjectFragment
}
skills {
...FreelancerSkillsConnectionFragment
}
aggregates {
...FreelancerProfileAggregatesFragment
}
jobCategories {
...FreelancerProfileJobCategoriesConnectionFragment
}
profileCompletenessSummary {
...FreelancerProfileCompletenessSummaryFragment
}
linkedExternalAccountsList {
...FreelancerProfileLinkedExternalAccountsConnectionFragment
}
verifications {
...FreelancerProfileVerificationsFragment
}
fullName
firstName
lastName
countryDetails {
...CountryFragment
}
email
portrait {
...PortraitFragment
}
phoneNumber {
...PhoneNumberFragment
}
privateTalentCloud {
...PrivateTalentCloudConnectionFragment
}
}
}
Variables
{"profileKey": "xyz789"}
Response
{
"data": {
"freelancerProfileByProfileKey": {
"user": CurrentUser,
"personalData": FreelancerProfilePersonalData,
"userPreferences": FreelancerProfileUserPreferences,
"otherExperiences": FreelancerProfileOtherExperiencesConnection,
"languages": FreelancerProfileLanguagesConnection,
"educationRecords": [
FreelancerProfileEducationRecord
],
"certificates": [FreelancerProfileCertificate],
"employmentRecords": [
FreelancerProfileEmploymentRecord
],
"availability": FreelancerProfileAvailability,
"committedResponseTime": FreelancerProfileCommittedResponseTime,
"project": FreelancerProfileProject,
"skills": FreelancerSkillsConnection,
"aggregates": FreelancerProfileAggregates,
"jobCategories": FreelancerProfileJobCategoriesConnection,
"profileCompletenessSummary": FreelancerProfileCompletenessSummary,
"linkedExternalAccountsList": FreelancerProfileLinkedExternalAccountsConnection,
"verifications": FreelancerProfileVerifications,
"fullName": "xyz789",
"firstName": "abc123",
"lastName": "abc123",
"countryDetails": Country,
"email": "abc123",
"portrait": Portrait,
"phoneNumber": PhoneNumber,
"privateTalentCloud": PrivateTalentCloudConnection
}
}
}
freelancerProfileSearchRecords
Response
Arguments
Name | Description |
---|---|
searchFilter - FreelancerProfileSearchFilter!
|
|
pagination - Pagination!
|
Example
Query
query freelancerProfileSearchRecords(
$searchFilter: FreelancerProfileSearchFilter!,
$pagination: Pagination!
) {
freelancerProfileSearchRecords(
searchFilter: $searchFilter,
pagination: $pagination
) {
edges {
...FreelancerProfilesSearchResultEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"searchFilter": FreelancerProfileSearchFilter,
"pagination": Pagination
}
Response
{
"data": {
"freelancerProfileSearchRecords": {
"edges": [FreelancerProfilesSearchResultEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
}
}
freelancerVisibility
Description
Get the visibility status of a given freelancer profile
Response
Returns a FreelancerVisibility
Arguments
Name | Description |
---|---|
id - ID
|
Example
Query
query freelancerVisibility($id: ID) {
freelancerVisibility(id: $id) {
locked
risky
currentVisibility
originalVisibility
}
}
Variables
{"id": "4"}
Response
{
"data": {
"freelancerVisibility": {
"locked": true,
"risky": false,
"currentVisibility": "xyz789",
"originalVisibility": "abc123"
}
}
}
jobPosting
Response
Returns a JobPosting!
Example
Query
query jobPosting(
$jobPostingId: ID!,
$loadAnnotation: Boolean
) {
jobPosting(
jobPostingId: $jobPostingId,
loadAnnotation: $loadAnnotation
) {
id
info {
...JobPostingInfoFragment
}
visibility
ownership {
...JobPostingOwnershipFragment
}
content {
...JobPostingContentFragment
}
attachment {
...JobPostingAttachmentFragment
}
classification {
...JobPostingClassificationFragment
}
segmentationData {
...JobPostingSegmentationDataFragment
}
contractTerms {
...JobPostingContractTermsFragment
}
contractorSelection {
...JobPostingContractorSelectionFragment
}
additionalInfo {
...JobPostingAdditionalInfoFragment
}
ptcInfo {
...JobPostingPtcInfoFragment
}
proposalsStatistics {
...ProposalsStatisticsFragment
}
customFields {
...JobPostingCustomFieldsFragment
}
}
}
Variables
{
"jobPostingId": "4",
"loadAnnotation": false
}
Response
{
"data": {
"jobPosting": {
"id": "4",
"info": JobPostingInfo,
"visibility": "PUBLIC_INDEX",
"ownership": JobPostingOwnership,
"content": JobPostingContent,
"attachment": [JobPostingAttachment],
"classification": JobPostingClassification,
"segmentationData": JobPostingSegmentationData,
"contractTerms": JobPostingContractTerms,
"contractorSelection": JobPostingContractorSelection,
"additionalInfo": JobPostingAdditionalInfo,
"ptcInfo": JobPostingPtcInfo,
"proposalsStatistics": ProposalsStatistics,
"customFields": [JobPostingCustomFields]
}
}
}
jobsFeaturePredictions
Description
The prediction models of a set of jobs
Response
Returns [JobFeaturePrediction!]!
Arguments
Name | Description |
---|---|
ids - [ID!]!
|
Example
Query
query jobsFeaturePredictions($ids: [ID!]!) {
jobsFeaturePredictions(ids: $ids) {
id
openingMultiFreelancerPrediction
opening
}
}
Variables
{"ids": [4]}
Response
{
"data": {
"jobsFeaturePredictions": [
{
"id": "4",
"openingMultiFreelancerPrediction": true,
"opening": "xyz789"
}
]
}
}
languages
Response
Returns [Language!]!
Example
Query
query languages {
languages {
iso639Code
active
englishName
}
}
Response
{
"data": {
"languages": [
{
"iso639Code": "xyz789",
"active": true,
"englishName": "abc123"
}
]
}
}
managedProjectServices
Description
Partner retrieve a single Managed Project Services This query is not generally available. It is for specific set of customers who use the Managed Project Service integration
Response
Returns a PartnerManagedProjectServicesResponse
Example
Query
query managedProjectServices(
$partnerSlug: String!,
$partnerEngagementId: String!
) {
managedProjectServices(
partnerSlug: $partnerSlug,
partnerEngagementId: $partnerEngagementId
) {
data {
...PartnerManagedProjectServicesEntryResponseFragment
}
}
}
Variables
{
"partnerSlug": "abc123",
"partnerEngagementId": "abc123"
}
Response
{
"data": {
"managedProjectServices": {
"data": [PartnerManagedProjectServicesEntryResponse]
}
}
}
managedProjectServicesBatch
Description
Partner retrieves the created batch of Managed Project Services
Response
Returns a ManagedProjectServicesBatchResponse
Example
Query
query managedProjectServicesBatch(
$partnerSlug: String!,
$batchId: String!
) {
managedProjectServicesBatch(
partnerSlug: $partnerSlug,
batchId: $batchId
) {
batchData {
...PartnerManagedProjectServicesBatchDataResponseFragment
}
}
}
Variables
{
"partnerSlug": "abc123",
"batchId": "xyz789"
}
Response
{
"data": {
"managedProjectServicesBatch": {
"batchData": [
PartnerManagedProjectServicesBatchDataResponse
]
}
}
}
marketplaceJobPosting
Response
Returns a MarketplaceJobPosting
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query marketplaceJobPosting($id: ID!) {
marketplaceJobPosting(id: $id) {
id
workFlowState {
...MarketplacePostingWorkFlowStateFragment
}
ownership {
...MarketplacePostingOwnershipFragment
}
annotations {
...MarketplacePostingAnnotationsFragment
}
activityStat {
...MarketplacePostingActivityStatFragment
}
content {
...MarketplaceJobPostingContentFragment
}
attachments {
...MarketplacePostingAttachmentFragment
}
classification {
...MarketplacePostingClassificationFragment
}
segmentationData {
...MarketplaceSegmentationDataFragment
}
contractTerms {
...MarketplaceContractTermsFragment
}
contractorSelection {
...MarketplaceContractorSelectionFragment
}
additionalSearchInfo {
...MarketplaceAdditionalSearchInfoFragment
}
clientCompany {
...PrivateCompanyInfoFragment
}
clientCompanyPublic {
...MarketplacePublicCompanyInfoFragment
}
canClientReceiveContractProposal
clientProposals {
...ClientProposalsConnectionFragment
}
customFields {
...CustomFieldsConnectionFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"marketplaceJobPosting": {
"id": "4",
"workFlowState": MarketplacePostingWorkFlowState,
"ownership": MarketplacePostingOwnership,
"annotations": MarketplacePostingAnnotations,
"activityStat": MarketplacePostingActivityStat,
"content": MarketplaceJobPostingContent,
"attachments": [MarketplacePostingAttachment],
"classification": MarketplacePostingClassification,
"segmentationData": MarketplaceSegmentationData,
"contractTerms": MarketplaceContractTerms,
"contractorSelection": MarketplaceContractorSelection,
"additionalSearchInfo": MarketplaceAdditionalSearchInfo,
"clientCompany": PrivateCompanyInfo,
"clientCompanyPublic": MarketplacePublicCompanyInfo,
"canClientReceiveContractProposal": false,
"clientProposals": ClientProposalsConnection,
"customFields": CustomFieldsConnection
}
}
}
marketplaceJobPostings
Response
Returns a MarketplaceJobPostingSearchConnection
Arguments
Name | Description |
---|---|
marketPlaceJobFilter - MarketplaceJobFilter
|
|
searchType - MarketplaceJobPostingSearchType
|
|
sortAttributes - [MarketplaceJobPostingSearchSortAttribute]
|
Example
Query
query marketplaceJobPostings(
$marketPlaceJobFilter: MarketplaceJobFilter,
$searchType: MarketplaceJobPostingSearchType,
$sortAttributes: [MarketplaceJobPostingSearchSortAttribute]
) {
marketplaceJobPostings(
marketPlaceJobFilter: $marketPlaceJobFilter,
searchType: $searchType,
sortAttributes: $sortAttributes
) {
totalCount
edges {
...MarketplaceJobpostingSearchEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"marketPlaceJobFilter": MarketplaceJobFilter,
"searchType": "USER_JOBS_SEARCH",
"sortAttributes": [
MarketplaceJobPostingSearchSortAttribute
]
}
Response
{
"data": {
"marketplaceJobPostings": {
"totalCount": 123,
"edges": [MarketplaceJobpostingSearchEdge],
"pageInfo": PageInfo
}
}
}
marketplaceJobPostingsContents
Response
Arguments
Name | Description |
---|---|
ids - [ID!]!
|
Example
Query
query marketplaceJobPostingsContents($ids: [ID!]!) {
marketplaceJobPostingsContents(ids: $ids) {
id
ciphertext
title
description
publishedDateTime
annotations {
...MarketplacePostingAnnotationsFragment
}
}
}
Variables
{"ids": ["4"]}
Response
{
"data": {
"marketplaceJobPostingsContents": [
{
"id": 4,
"ciphertext": "xyz789",
"title": "xyz789",
"description": "xyz789",
"publishedDateTime": "xyz789",
"annotations": MarketplacePostingAnnotations
}
]
}
}
marketplaceJobPostingsSearch
Description
Search Marketplace Jobs and get their relevant details searchType determines the context and method of the job search being executed Note : searchType value will be ignored and always set to USER_JOBS_SEARCH, utilized when performing a user-initiated job search.
Response
Returns a MarketplaceJobPostingSearchConnection
Arguments
Name | Description |
---|---|
marketPlaceJobFilter - MarketplaceJobPostingsSearchFilter
|
|
searchType - MarketplaceJobPostingSearchType
|
|
sortAttributes - [MarketplaceJobPostingSearchSortAttribute]
|
Example
Query
query marketplaceJobPostingsSearch(
$marketPlaceJobFilter: MarketplaceJobPostingsSearchFilter,
$searchType: MarketplaceJobPostingSearchType,
$sortAttributes: [MarketplaceJobPostingSearchSortAttribute]
) {
marketplaceJobPostingsSearch(
marketPlaceJobFilter: $marketPlaceJobFilter,
searchType: $searchType,
sortAttributes: $sortAttributes
) {
totalCount
edges {
...MarketplaceJobpostingSearchEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"marketPlaceJobFilter": MarketplaceJobPostingsSearchFilter,
"searchType": "USER_JOBS_SEARCH",
"sortAttributes": [
MarketplaceJobPostingSearchSortAttribute
]
}
Response
{
"data": {
"marketplaceJobPostingsSearch": {
"totalCount": 987,
"edges": [MarketplaceJobpostingSearchEdge],
"pageInfo": PageInfo
}
}
}
offer
Description
Returns offer for the given id
Example
Query
query offer($id: ID!) {
offer(id: $id) {
id
title
description
type
job {
...MarketplaceJobPostingFragment
}
vendorProposal {
...VendorProposalFragment
}
closeJobPostingOnAccept
client {
...GenericOrganizationFragment
}
offerTerms {
...OfferTermsFragment
}
messageToContractor
state
offerFeatures {
...OfferFeaturesFragment
}
clientCompany {
...PublicCompanyInfoFragment
}
milestones {
...MilestoneFragment
}
createdUsingBYOFlow
freelancer {
...FreelancerProfileFragment
}
payrollOffer
deliveryModel
customFields {
...CustomFieldsConnectionFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"offer": {
"id": 4,
"title": "xyz789",
"description": "abc123",
"type": "MARKET_PLACE_HOURLY",
"job": MarketplaceJobPosting,
"vendorProposal": VendorProposal,
"closeJobPostingOnAccept": true,
"client": GenericOrganization,
"offerTerms": OfferTerms,
"messageToContractor": "abc123",
"state": "DRAFT",
"offerFeatures": OfferFeatures,
"clientCompany": PublicCompanyInfo,
"milestones": [Milestone],
"createdUsingBYOFlow": true,
"freelancer": FreelancerProfile,
"payrollOffer": true,
"deliveryModel": "TalentMarketplace",
"customFields": CustomFieldsConnection
}
}
}
offerRoom
Description
Returns room associated with the given offerId
Example
Query
query offerRoom($offerId: ID!) {
offerRoom(offerId: $offerId) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"offerId": "4"}
Response
{
"data": {
"offerRoom": {
"id": "4",
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": true,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "abc123",
"favorite": false,
"numUnreadMentions": 123,
"roomUsers": [RoomUser],
"numUsers": 987,
"joinDateTime": "xyz789",
"lastVisitedDateTime": "xyz789",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "xyz789",
"readOnly": false,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": false,
"contractId": 4,
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": false,
"offerIds": ["4"],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
offersByAttribute
Description
Get offers by search attribute and id. filter - contains data for searching
Response
Returns an OfferList
Arguments
Name | Description |
---|---|
filter - SearchOffersInput!
|
Example
Query
query offersByAttribute($filter: SearchOffersInput!) {
offersByAttribute(filter: $filter) {
offers {
...OfferFragment
}
}
}
Variables
{"filter": SearchOffersInput}
Response
{"data": {"offersByAttribute": {"offers": [Offer]}}}
offersByAttributes
Description
Get modernized offers by search for multiple attributes ids. filter - contains data for searching
Response
Returns a ModernizedContractOfferList
Arguments
Name | Description |
---|---|
filter - SearchOffersByAttributesInput!
|
Example
Query
query offersByAttributes($filter: SearchOffersByAttributesInput!) {
offersByAttributes(filter: $filter) {
offers {
...ModernizedContractOfferFragment
}
}
}
Variables
{"filter": SearchOffersByAttributesInput}
Response
{
"data": {
"offersByAttributes": {
"offers": [ModernizedContractOffer]
}
}
}
offersByIds
Description
Get offers by ids. filter - contains data for searching
Response
Returns an OfferList
Arguments
Name | Description |
---|---|
filter - SearchOffersByIdInput!
|
Example
Query
query offersByIds($filter: SearchOffersByIdInput!) {
offersByIds(filter: $filter) {
offers {
...OfferFragment
}
}
}
Variables
{"filter": SearchOffersByIdInput}
Response
{"data": {"offersByIds": {"offers": [Offer]}}}
oneOnOneRoom
Description
Returns 1on1 room between the current user and passed user and organization id
Example
Query
query oneOnOneRoom(
$userId: ID!,
$organizationId: ID!
) {
oneOnOneRoom(
userId: $userId,
organizationId: $organizationId
) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{
"userId": "4",
"organizationId": "4"
}
Response
{
"data": {
"oneOnOneRoom": {
"id": 4,
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": false,
"topic": "abc123",
"owner": RoomUser,
"numUnread": 123,
"roomFavoriteDateTime": "xyz789",
"favorite": false,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 987,
"joinDateTime": "abc123",
"lastVisitedDateTime": "abc123",
"lastReadDateTime": "xyz789",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "xyz789",
"readOnly": true,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": false,
"contractId": "4",
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": false,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
ontologyAttributeGroupsForOccupation
Description
Returns the attribute groups associated to the occupation with the given uid. Per each attribute group it includes a maximum of 6 skills nodes corresponding to the narrower ones with highest priority. It also returns the node corresponding to the broader occupations. This is because attribute groups are inherited so clients may want to know if the given attribute group belongs to a broader occupation.
In resume, this endpoint returns a response formed by:
1) The occupation corresponding to the uid passed as parameter.
2) The broader occupations of the given occupation and their broader, and the broader of the broader and so on until no more. These occupations are in a map, with the uid of each as key.
3) The attribute groups required by the occupation and the broader occupations.Per attribute group, a maximum of 6 nodes, with the highest priority, among the narrower nodes of the attribute group. All these required skills are in a map, with the uid of each as a key.
Deprecated elements are not returned and neither the "paths" in which they are included. For example, a skill not deprecated is not returned if the attribute group it belongs is deprecated.
If metadataContext parameter is provided then relevant metadata is loaded and applied: attributes and attribute groups with visibility=false are filtered out from results, priorities are overwritten with the ones in metadata. @param occupationUid identifier of the occupation @param metadataContext context of the metadata to load. If not provided no metadata is loaded or applied. @param metadataCategoryUid UID of the category for metadata path. If not provided then primary category is used. @param metadataSubCategoryUid uid of the subcategory for metadata path. If not provided then primary subcategory is used. @return occupation with the uid passed as parameter, broader occupations and skills required by the occupation
Response
Returns an OccupationAttrGroupsResponse!
Arguments
Name | Description |
---|---|
filter - OccupationAttrGroupFilter
|
Example
Query
query ontologyAttributeGroupsForOccupation($filter: OccupationAttrGroupFilter) {
ontologyAttributeGroupsForOccupation(filter: $filter) {
occupation {
...OccupationFragment
}
broaderOccupations {
...BroaderOccupationMapFragment
}
attributeGroups {
...SkillFragment
}
attributes {
...AttributeSkillsMapFragment
}
}
}
Variables
{"filter": OccupationAttrGroupFilter}
Response
{
"data": {
"ontologyAttributeGroupsForOccupation": {
"occupation": Occupation,
"broaderOccupations": [BroaderOccupationMap],
"attributeGroups": [Skill],
"attributes": [AttributeSkillsMap]
}
}
}
ontologyBrowserSkills
Description
Return: list of browser skills paginated with limit and offset
Example
Query
query ontologyBrowserSkills(
$limit: Int!,
$offset: Int
) {
ontologyBrowserSkills(
limit: $limit,
offset: $offset
) {
id
ontologyId
type
entityStatus
preferredLabel
createdDateTime
modifiedDateTime
definition
altLabel
narrower
narrowerIds
broader
broaderIds
dependsOn
dependsOnIds
splitInto
splitIntoIds
mergedInto
mergedIntoId
replacedBy
replacedById
scopeNote
externalLink
exactMatch
exactMatchIds
closeMatch
closeMatchIds
comment
attributeLevel
allowMultipleClient
allowMultipleFreelancer
allowOther
clientQuestion
clientTip
freelancerQuestion
freelancerTip
advancedClient
client
freelancer
requiredClient
requiredFreelancer
otherClientLabel
otherFreelancerLabel
presentationMode
priority
isRequiredBy
isRequiredByIds
legacySkillNid
prettyName
legacySkillId
}
}
Variables
{"limit": 987, "offset": 123}
Response
{
"data": {
"ontologyBrowserSkills": [
{
"id": 4,
"ontologyId": "abc123",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"definition": "abc123",
"altLabel": ["abc123"],
"narrower": ["xyz789"],
"narrowerIds": [4],
"broader": ["xyz789"],
"broaderIds": [4],
"dependsOn": ["xyz789"],
"dependsOnIds": ["4"],
"splitInto": ["xyz789"],
"splitIntoIds": ["4"],
"mergedInto": "abc123",
"mergedIntoId": "4",
"replacedBy": "abc123",
"replacedById": "4",
"scopeNote": "abc123",
"externalLink": ["xyz789"],
"exactMatch": ["xyz789"],
"exactMatchIds": ["4"],
"closeMatch": ["abc123"],
"closeMatchIds": [4],
"comment": "xyz789",
"attributeLevel": ["xyz789"],
"allowMultipleClient": false,
"allowMultipleFreelancer": true,
"allowOther": false,
"clientQuestion": "abc123",
"clientTip": "abc123",
"freelancerQuestion": "abc123",
"freelancerTip": "xyz789",
"advancedClient": false,
"client": false,
"freelancer": false,
"requiredClient": true,
"requiredFreelancer": false,
"otherClientLabel": "abc123",
"otherFreelancerLabel": "abc123",
"presentationMode": "abc123",
"priority": 123,
"isRequiredBy": ["xyz789"],
"isRequiredByIds": [4],
"legacySkillNid": "xyz789",
"prettyName": "xyz789",
"legacySkillId": "4"
}
]
}
}
ontologyCategories
Description
fetch all enabled categories/subcategories/services
Response
Returns [OntologyCategory!]!
Example
Query
query ontologyCategories {
ontologyCategories {
id
preferredLabel
altLabel
slug
ontologyId
subcategories {
...OntologySubcategoryFragment
}
services {
...OntologyServiceFragment
}
}
}
Response
{
"data": {
"ontologyCategories": [
{
"id": 4,
"preferredLabel": "abc123",
"altLabel": ["abc123"],
"slug": "xyz789",
"ontologyId": "xyz789",
"subcategories": [OntologySubcategory],
"services": [OntologyService]
}
]
}
}
ontologyCategorySubcategory
Description
Return: list of category-subcategory pairs occupations for the occupation with the uid sent in the parameter
Response
Returns [CategorySubcategory!]!
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query ontologyCategorySubcategory($id: ID!) {
ontologyCategorySubcategory(id: $id) {
category {
...OccupationFragment
}
subcategory {
...OccupationFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"ontologyCategorySubcategory": [
{
"category": Occupation,
"subcategory": Occupation
}
]
}
}
ontologyDeliverables
Description
Return: ontology elements of type Deliverables filtered by limit, offset and includeDeprecated
Response
Returns [Deliverable!]
Arguments
Name | Description |
---|---|
filter - OntologyDeliverablesFilter!
|
Example
Query
query ontologyDeliverables($filter: OntologyDeliverablesFilter!) {
ontologyDeliverables(filter: $filter) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
}
}
Variables
{"filter": OntologyDeliverablesFilter}
Response
{
"data": {
"ontologyDeliverables": [
{
"id": "4",
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"definition": "abc123",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789"
}
]
}
}
ontologyElementCategories
Description
Get the list of categories (L1 occupations) that include the provided element in downstream hierarchy
Response
Returns [Occupation!]!
Arguments
Name | Description |
---|---|
elementId - ID!
|
Example
Query
query ontologyElementCategories($elementId: ID!) {
ontologyElementCategories(elementId: $elementId) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
skills {
...SkillFragment
}
}
}
Variables
{"elementId": 4}
Response
{
"data": {
"ontologyElementCategories": [
{
"id": 4,
"ontologyId": "abc123",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"definition": "abc123",
"createdDateTime": "abc123",
"modifiedDateTime": "xyz789",
"skills": [Skill]
}
]
}
}
ontologyElementsGraphSearchByIds
Description
Allows search of elements by ids in graph
Return: elements that have provided in id ontology Id, or legacy Uids
Response
Returns [OntologyGraphNode!]!
Example
Query
query ontologyElementsGraphSearchByIds(
$ids: [ID!]!,
$metadataContext: String,
$metadataFilter: [String!]
) {
ontologyElementsGraphSearchByIds(
ids: $ids,
metadataContext: $metadataContext,
metadataFilter: $metadataFilter
) {
id
uid
label
types
status
properties {
...PropertyStringMapFragment
}
relationships {
...StringListMapFragment
}
metadata {
...StringMapElementFragment
}
}
}
Variables
{
"ids": ["4"],
"metadataContext": "xyz789",
"metadataFilter": ["abc123"]
}
Response
{
"data": {
"ontologyElementsGraphSearchByIds": [
{
"id": 4,
"uid": 4,
"label": "abc123",
"types": ["xyz789"],
"status": "ACTIVE",
"properties": [PropertyStringMap],
"relationships": [StringListMap],
"metadata": [StringMapElement]
}
]
}
}
ontologyElementsGraphSearchByPrefLabel
Description
Allows search of elements by prefLabel in graph
Return: elements that have provided string in prefLabel, at start, end or in the middle; case insensitive
Response
Returns [OntologyGraphNode!]!
Arguments
Name | Description |
---|---|
filter - OntologyElementsSearchByPrefLabelFilter
|
Example
Query
query ontologyElementsGraphSearchByPrefLabel($filter: OntologyElementsSearchByPrefLabelFilter) {
ontologyElementsGraphSearchByPrefLabel(filter: $filter) {
id
uid
label
types
status
properties {
...PropertyStringMapFragment
}
relationships {
...StringListMapFragment
}
metadata {
...StringMapElementFragment
}
}
}
Variables
{"filter": OntologyElementsSearchByPrefLabelFilter}
Response
{
"data": {
"ontologyElementsGraphSearchByPrefLabel": [
{
"id": 4,
"uid": 4,
"label": "xyz789",
"types": ["abc123"],
"status": "ACTIVE",
"properties": [PropertyStringMap],
"relationships": [StringListMap],
"metadata": [StringMapElement]
}
]
}
}
ontologyElementsSearchByPrefLabel
Description
Allows search of elements by prefLabel
Return: elements that have provided string in prefLabel, at start, end or in the middle; case insensitive
Response
Returns [OntologyEntity!]!
Arguments
Name | Description |
---|---|
filter - OntologyElementsSearchByPrefLabelFilter
|
Example
Query
query ontologyElementsSearchByPrefLabel($filter: OntologyElementsSearchByPrefLabelFilter) {
ontologyElementsSearchByPrefLabel(filter: $filter) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
}
}
Variables
{"filter": OntologyElementsSearchByPrefLabelFilter}
Response
{
"data": {
"ontologyElementsSearchByPrefLabel": [
{
"id": "4",
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"definition": "abc123",
"createdDateTime": "xyz789",
"modifiedDateTime": "abc123"
}
]
}
}
ontologyEntities
Description
lookup entities by ids
Response
Returns [OntologyEntityResult!]!
Arguments
Name | Description |
---|---|
ids - [String!]!
|
Example
Query
query ontologyEntities($ids: [String!]!) {
ontologyEntities(ids: $ids) {
... on Skill {
...SkillFragment
}
... on Occupation {
...OccupationFragment
}
}
}
Variables
{"ids": ["abc123"]}
Response
{"data": {"ontologyEntities": [Skill]}}
ontologyEntitiesFiltered
Description
lookup entities by pref label and status, currently this field supports only taxonomyLevel=SERVICE E.g supported filtering : ontologyEntityFilter:{preferredLabel_any:"javascript", taxonomyLevel: SERVICE, limit: 5}
Response
Returns an OntologyConnection
Arguments
Name | Description |
---|---|
ontologyEntityFilter - OntologyEntityFilter
|
|
pagination - Pagination
|
Example
Query
query ontologyEntitiesFiltered(
$ontologyEntityFilter: OntologyEntityFilter,
$pagination: Pagination
) {
ontologyEntitiesFiltered(
ontologyEntityFilter: $ontologyEntityFilter,
pagination: $pagination
) {
totalCount
edges {
...OntologyEntityEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"ontologyEntityFilter": OntologyEntityFilter,
"pagination": Pagination
}
Response
{
"data": {
"ontologyEntitiesFiltered": {
"totalCount": 123,
"edges": [OntologyEntityEdge],
"pageInfo": PageInfo
}
}
}
ontologyEntity
Description
fetch entity by id
Response
Returns an OntologyEntityResult
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query ontologyEntity($id: ID!) {
ontologyEntity(id: $id) {
... on Skill {
...SkillFragment
}
... on Occupation {
...OccupationFragment
}
}
}
Variables
{"id": 4}
Response
{"data": {"ontologyEntity": Skill}}
ontologyEntitySearchRecords
Description
search ontology entities by ontoloyIds ontologyId is consistent accross all environments as opposed to UID which is unique per environment example: upwork:AndroidGameDevelopmentEngines
Response
Returns [OntologyEntitySearchRecord!]
Arguments
Name | Description |
---|---|
filter - OntologyEntitySearchFilter!
|
Example
Query
query ontologyEntitySearchRecords($filter: OntologyEntitySearchFilter!) {
ontologyEntitySearchRecords(filter: $filter) {
ontologyEntity {
...OntologyEntityFragment
}
}
}
Variables
{"filter": OntologyEntitySearchFilter}
Response
{
"data": {
"ontologyEntitySearchRecords": [
{"ontologyEntity": OntologyEntity}
]
}
}
ontologyOccupationCategorySubcategoryGraph
Description
Return a list of graph category-subcategory pairs occupations for the occupation with the uid sent in the parameter
Response
Returns [OntologyRelatedNodes]
Arguments
Name | Description |
---|---|
id - ID
|
Example
Query
query ontologyOccupationCategorySubcategoryGraph($id: ID) {
ontologyOccupationCategorySubcategoryGraph(id: $id) {
source {
...OntologyGraphNodeFragment
}
target {
...OntologyGraphNodeFragment
}
relationProperties {
...PropertyStringMapFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"ontologyOccupationCategorySubcategoryGraph": [
{
"source": OntologyGraphNode,
"target": OntologyGraphNode,
"relationProperties": [PropertyStringMap]
}
]
}
}
ontologyOccupations
Description
Returns ontology elements of type Occupation
Response
Returns [Occupation!]!
Arguments
Name | Description |
---|---|
filter - OntologyOccupationFilter!
|
Example
Query
query ontologyOccupations($filter: OntologyOccupationFilter!) {
ontologyOccupations(filter: $filter) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
skills {
...SkillFragment
}
}
}
Variables
{"filter": OntologyOccupationFilter}
Response
{
"data": {
"ontologyOccupations": [
{
"id": "4",
"ontologyId": "abc123",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"definition": "xyz789",
"createdDateTime": "abc123",
"modifiedDateTime": "xyz789",
"skills": [Skill]
}
]
}
}
ontologyOccupationsCategoriesServices
Description
Searches occupations categories services by list of category Uids
Return: list of categories and a map of every category and related services
Response
Returns a CategoryServicesResponse
Arguments
Name | Description |
---|---|
categoryUids - [ID!]
|
Example
Query
query ontologyOccupationsCategoriesServices($categoryUids: [ID!]) {
ontologyOccupationsCategoriesServices(categoryUids: $categoryUids) {
categories {
...OccupationFragment
}
categoryServices {
...StringMapOccupationFragment
}
}
}
Variables
{"categoryUids": ["4"]}
Response
{
"data": {
"ontologyOccupationsCategoriesServices": {
"categories": [Occupation],
"categoryServices": [StringMapOccupation]
}
}
}
ontologyOccupationsCategoriesServicesGraph
Description
Return a list of graph category services occupations for the occupation list with the uids sent in the parameter
Response
Returns [OntologyGraphNode!]
Arguments
Name | Description |
---|---|
categoryIds - [ID!]!
|
Example
Query
query ontologyOccupationsCategoriesServicesGraph($categoryIds: [ID!]!) {
ontologyOccupationsCategoriesServicesGraph(categoryIds: $categoryIds) {
id
uid
label
types
status
properties {
...PropertyStringMapFragment
}
relationships {
...StringListMapFragment
}
metadata {
...StringMapElementFragment
}
}
}
Variables
{"categoryIds": [4]}
Response
{
"data": {
"ontologyOccupationsCategoriesServicesGraph": [
{
"id": 4,
"uid": "4",
"label": "xyz789",
"types": ["xyz789"],
"status": "ACTIVE",
"properties": [PropertyStringMap],
"relationships": [StringListMap],
"metadata": [StringMapElement]
}
]
}
}
ontologyOccupationsCategoriesSubcategoriesGraph
Description
Return a list of graph category subcategories occupations
Response
Returns [OntologyGraphNode!]!
Example
Query
query ontologyOccupationsCategoriesSubcategoriesGraph {
ontologyOccupationsCategoriesSubcategoriesGraph {
id
uid
label
types
status
properties {
...PropertyStringMapFragment
}
relationships {
...StringListMapFragment
}
metadata {
...StringMapElementFragment
}
}
}
Response
{
"data": {
"ontologyOccupationsCategoriesSubcategoriesGraph": [
{
"id": 4,
"uid": "4",
"label": "xyz789",
"types": ["abc123"],
"status": "ACTIVE",
"properties": [PropertyStringMap],
"relationships": [StringListMap],
"metadata": [StringMapElement]
}
]
}
}
ontologyOccupationServices
Description
Return: list of services for a specific occupation
Response
Returns [Occupation!]!
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query ontologyOccupationServices($id: ID!) {
ontologyOccupationServices(id: $id) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
skills {
...SkillFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"ontologyOccupationServices": [
{
"id": 4,
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"definition": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"skills": [Skill]
}
]
}
}
ontologyOccupationSkillsCount
Description
Return: number of active attributes with type Skill available in the occupation
ontologyPublishedServices
Description
Return: services available for creating specialized profiles. Since all active services are published already
Response
Returns [Occupation!]!
Example
Query
query ontologyPublishedServices(
$limit: Int!,
$offset: Int
) {
ontologyPublishedServices(
limit: $limit,
offset: $offset
) {
id
ontologyId
type
entityStatus
preferredLabel
definition
createdDateTime
modifiedDateTime
skills {
...SkillFragment
}
}
}
Variables
{"limit": 123, "offset": 987}
Response
{
"data": {
"ontologyPublishedServices": [
{
"id": "4",
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"definition": "abc123",
"createdDateTime": "abc123",
"modifiedDateTime": "abc123",
"skills": [Skill]
}
]
}
}
ontologySkillNamesByServiceUid
Description
Allows search of skill names by service uid
Return: skill uid and skill pref label
Response
Returns [SkillName!]!
Arguments
Name | Description |
---|---|
uid - ID
|
Example
Query
query ontologySkillNamesByServiceUid($uid: ID) {
ontologySkillNamesByServiceUid(uid: $uid) {
id
preferredLabel
}
}
Variables
{"uid": 4}
Response
{
"data": {
"ontologySkillNamesByServiceUid": [
{"id": 4, "preferredLabel": "xyz789"}
]
}
}
ontologySkills
Description
Return: list of skills paginated with limit and offset
Example
Query
query ontologySkills(
$limit: Int!,
$offset: Int
) {
ontologySkills(
limit: $limit,
offset: $offset
) {
id
ontologyId
type
entityStatus
preferredLabel
createdDateTime
modifiedDateTime
definition
altLabel
narrower
narrowerIds
broader
broaderIds
dependsOn
dependsOnIds
splitInto
splitIntoIds
mergedInto
mergedIntoId
replacedBy
replacedById
scopeNote
externalLink
exactMatch
exactMatchIds
closeMatch
closeMatchIds
comment
attributeLevel
allowMultipleClient
allowMultipleFreelancer
allowOther
clientQuestion
clientTip
freelancerQuestion
freelancerTip
advancedClient
client
freelancer
requiredClient
requiredFreelancer
otherClientLabel
otherFreelancerLabel
presentationMode
priority
isRequiredBy
isRequiredByIds
legacySkillNid
prettyName
legacySkillId
}
}
Variables
{"limit": 987, "offset": 123}
Response
{
"data": {
"ontologySkills": [
{
"id": 4,
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"definition": "xyz789",
"altLabel": ["xyz789"],
"narrower": ["abc123"],
"narrowerIds": ["4"],
"broader": ["abc123"],
"broaderIds": [4],
"dependsOn": ["abc123"],
"dependsOnIds": [4],
"splitInto": ["xyz789"],
"splitIntoIds": ["4"],
"mergedInto": "xyz789",
"mergedIntoId": 4,
"replacedBy": "xyz789",
"replacedById": 4,
"scopeNote": "abc123",
"externalLink": ["xyz789"],
"exactMatch": ["xyz789"],
"exactMatchIds": ["4"],
"closeMatch": ["abc123"],
"closeMatchIds": ["4"],
"comment": "xyz789",
"attributeLevel": ["abc123"],
"allowMultipleClient": true,
"allowMultipleFreelancer": true,
"allowOther": true,
"clientQuestion": "abc123",
"clientTip": "xyz789",
"freelancerQuestion": "abc123",
"freelancerTip": "xyz789",
"advancedClient": true,
"client": false,
"freelancer": true,
"requiredClient": true,
"requiredFreelancer": true,
"otherClientLabel": "abc123",
"otherFreelancerLabel": "abc123",
"presentationMode": "xyz789",
"priority": 987,
"isRequiredBy": ["abc123"],
"isRequiredByIds": ["4"],
"legacySkillNid": "xyz789",
"prettyName": "xyz789",
"legacySkillId": "4"
}
]
}
}
ontologySkillsByAttributeGroup
Description
Return: list of element/skills pair by attribute group
Response
Returns [ElementSkillMap!]!
Arguments
Name | Description |
---|---|
filter - AttrGroupFilter!
|
Example
Query
query ontologySkillsByAttributeGroup($filter: AttrGroupFilter!) {
ontologySkillsByAttributeGroup(filter: $filter) {
element
skill {
...SkillFragment
}
}
}
Variables
{"filter": AttrGroupFilter}
Response
{
"data": {
"ontologySkillsByAttributeGroup": [
{
"element": "abc123",
"skill": Skill
}
]
}
}
ontologySkillsRecords
Description
fetch all enabled skills
Response
Returns [OntologySkill!]!
Arguments
Name | Description |
---|---|
filter - OntologySkillsFilter
|
|
pagination - Pagination
|
Example
Query
query ontologySkillsRecords(
$filter: OntologySkillsFilter,
$pagination: Pagination
) {
ontologySkillsRecords(
filter: $filter,
pagination: $pagination
) {
id
preferredLabel
ontologyId
}
}
Variables
{
"filter": OntologySkillsFilter,
"pagination": Pagination
}
Response
{
"data": {
"ontologySkillsRecords": [
{
"id": 4,
"preferredLabel": "xyz789",
"ontologyId": "abc123"
}
]
}
}
ontologyVisitorCategories
Description
fetch all enabled visitor categories/subcategories/services
Response
Returns [OntologyCategory!]!
Example
Query
query ontologyVisitorCategories {
ontologyVisitorCategories {
id
preferredLabel
altLabel
slug
ontologyId
subcategories {
...OntologySubcategoryFragment
}
services {
...OntologyServiceFragment
}
}
}
Response
{
"data": {
"ontologyVisitorCategories": [
{
"id": 4,
"preferredLabel": "xyz789",
"altLabel": ["abc123"],
"slug": "xyz789",
"ontologyId": "abc123",
"subcategories": [OntologySubcategory],
"services": [OntologyService]
}
]
}
}
organization
Description
Current organization
Response
Returns a CurrentOrganization
Example
Query
query organization {
organization {
id
rid
legacyId
name
type
legacyType
flag {
...OrganizationFlagFragment
}
parentOrganization {
...CurrentOrganizationFragment
}
active
hidden
childOrganizations {
...CurrentOrganizationFragment
}
childOrganization {
...CurrentOrganizationFragment
}
company {
...PrivateCompanyInfoFragment
}
photoUrl
creationDate
staffs {
...StaffsConnectionFragment
}
permissions {
...UserPermissionsFragment
}
agencyOffers {
...ContractOfferConnectionFragment
}
clientOffers {
...ContractOfferConnectionFragment
}
clientTimeReport {
...TimeReportFragment
}
clientContractTimeReport {
...TimeReportConnectionFragment
}
agencyTimeReport {
...TimeReportFragment
}
agencyContractTimeReport {
...TimeReportConnectionFragment
}
privateTalentClouds {
...PrivateTalentCloudFragment
}
jobPosting {
...JobPostingConnectionFragment
}
}
}
Response
{
"data": {
"organization": {
"id": "4",
"rid": 4,
"legacyId": 4,
"name": "xyz789",
"type": "BUSINESS",
"legacyType": "CLIENT",
"flag": OrganizationFlag,
"parentOrganization": CurrentOrganization,
"active": false,
"hidden": true,
"childOrganizations": [CurrentOrganization],
"childOrganization": CurrentOrganization,
"company": PrivateCompanyInfo,
"photoUrl": "abc123",
"creationDate": "xyz789",
"staffs": StaffsConnection,
"permissions": UserPermissions,
"agencyOffers": ContractOfferConnection,
"clientOffers": ContractOfferConnection,
"clientTimeReport": [TimeReport],
"clientContractTimeReport": TimeReportConnection,
"agencyTimeReport": [TimeReport],
"agencyContractTimeReport": TimeReportConnection,
"privateTalentClouds": [PrivateTalentCloud],
"jobPosting": JobPostingConnection
}
}
}
proposalMetadata
Description
metadata for proposals
Response
Returns a ProposalMetadata
Example
Query
query proposalMetadata {
proposalMetadata {
engagementDurationValues {
...ProposalEngagementDurationFragment
}
reasons {
...ReasonsMetadataFragment
}
}
}
Response
{
"data": {
"proposalMetadata": {
"engagementDurationValues": [
ProposalEngagementDuration
],
"reasons": [ReasonsMetadata]
}
}
}
proposalRoom
Description
Returns room associated with a vendor proposal
Example
Query
query proposalRoom($vendorProposalId: ID!) {
proposalRoom(vendorProposalId: $vendorProposalId) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"vendorProposalId": "4"}
Response
{
"data": {
"proposalRoom": {
"id": "4",
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "xyz789",
"public": true,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 123,
"roomFavoriteDateTime": "abc123",
"favorite": false,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "abc123",
"lastVisitedDateTime": "xyz789",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "abc123",
"readOnly": false,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": true,
"muted": true,
"contractId": 4,
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": false,
"offerIds": ["4"],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
publicRooms
Description
Get public rooms inside an organization
Response
Returns a RoomConnection!
Arguments
Name | Description |
---|---|
pagination - Pagination
|
Example
Query
query publicRooms($pagination: Pagination) {
publicRooms(pagination: $pagination) {
totalCount
edges {
...RoomEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{"pagination": Pagination}
Response
{
"data": {
"publicRooms": {
"totalCount": 123,
"edges": [RoomEdge],
"pageInfo": PageInfo
}
}
}
reasons
Description
Reasons for some actions. Examples - declining invitation, ending contract, withdrawing offer
Response
Returns [ReasonsMetadata!]!
Arguments
Name | Description |
---|---|
reasonType - ReasonType!
|
|
all - Boolean
|
Example
Query
query reasons(
$reasonType: ReasonType!,
$all: Boolean
) {
reasons(
reasonType: $reasonType,
all: $all
) {
id
reason
alias
}
}
Variables
{"reasonType": "PROPOSAL_DECLINE", "all": true}
Response
{
"data": {
"reasons": [
{
"id": "4",
"reason": "abc123",
"alias": "abc123"
}
]
}
}
regions
Response
Returns [Region!]
Example
Query
query regions {
regions {
id
name
parentRegion {
...RegionFragment
}
}
}
Response
{
"data": {
"regions": [
{
"id": "4",
"name": "xyz789",
"parentRegion": Region
}
]
}
}
requestMetadata
Description
Information about request - whether it is an internal requests, in sudo mode, etc
Response
Returns a RequestMetadata!
Example
Query
query requestMetadata {
requestMetadata {
sudo
internal
}
}
Response
{"data": {"requestMetadata": {"sudo": true, "internal": false}}}
room
Description
Details of a room
Example
Query
query room($id: ID!) {
room(id: $id) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"room": {
"id": 4,
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": false,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "abc123",
"favorite": false,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "abc123",
"lastVisitedDateTime": "abc123",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "abc123",
"readOnly": false,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": true,
"muted": true,
"contractId": "4",
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": false,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
roomList
Description
List of rooms based on the given filter condition
Response
Returns a RoomConnection!
Arguments
Name | Description |
---|---|
filter - RoomFilter
|
|
pagination - Pagination
|
|
sortOrder - SortOrder
|
Example
Query
query roomList(
$filter: RoomFilter,
$pagination: Pagination,
$sortOrder: SortOrder
) {
roomList(
filter: $filter,
pagination: $pagination,
sortOrder: $sortOrder
) {
totalCount
edges {
...RoomEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"filter": RoomFilter,
"pagination": Pagination,
"sortOrder": "ASC"
}
Response
{
"data": {
"roomList": {
"totalCount": 987,
"edges": [RoomEdge],
"pageInfo": PageInfo
}
}
}
roomStories
Description
Returns stories in the room
Response
Returns a RoomStoryConnection
Arguments
Name | Description |
---|---|
filter - RoomStoryFilter
|
Example
Query
query roomStories($filter: RoomStoryFilter) {
roomStories(filter: $filter) {
totalCount
edges {
...RoomStoryEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{"filter": RoomStoryFilter}
Response
{
"data": {
"roomStories": {
"totalCount": 987,
"edges": [RoomStoryEdge],
"pageInfo": PageInfo
}
}
}
roomStory
Description
Returns a particular story from a room
Example
Query
query roomStory(
$roomId: ID!,
$storyId: ID!
) {
roomStory(
roomId: $roomId,
storyId: $storyId
) {
id
room {
...RoomFragment
}
createdDateTime
updatedDateTime
user {
...GenericUserFragment
}
message
organization {
...GenericOrganizationFragment
}
roomStoryNote {
...RoomStoryNoteFragment
}
attachments {
...MessageAttachmentsFragment
}
}
}
Variables
{"roomId": "4", "storyId": 4}
Response
{
"data": {
"roomStory": {
"id": 4,
"room": Room,
"createdDateTime": "xyz789",
"updatedDateTime": "abc123",
"user": GenericUser,
"message": "abc123",
"organization": GenericOrganization,
"roomStoryNote": RoomStoryNote,
"attachments": [MessageAttachments]
}
}
}
search
Response
Returns a Search
Example
Query
query search {
search {
searchFreelancerPublicProfile {
...SemSearchV2ResponseFragment
}
}
}
Response
{
"data": {
"search": {
"searchFreelancerPublicProfile": SemSearchV2Response
}
}
}
snapshotsByContractId
Description
List all Snapshots for given contract ID and particular timestamp. timestamp are in (Unix Epoch seconds)
Response
Returns [Snapshot]
Arguments
Name | Description |
---|---|
input - SnapshotsByContractIdInput!
|
Example
Query
query snapshotsByContractId($input: SnapshotsByContractIdInput!) {
snapshotsByContractId(input: $input) {
id
time
contractId
mouseEventsCount
keyboardEventsCount
teamName
status
activeWindowTitle
memo
companyId
hasScreenshot
screenshotUrl
screenshotImage
screenshotImageLarge
screenshotImageMedium
screenshotImageThumbnail
hasWebcam
webcamUrl
webcamImage
webcamImageThumbnail
task
minutes {
...SnapshotMinutesFragment
}
}
}
Variables
{"input": SnapshotsByContractIdInput}
Response
{
"data": {
"snapshotsByContractId": [
{
"id": 4,
"time": 987,
"contractId": "abc123",
"mouseEventsCount": 123,
"keyboardEventsCount": 123,
"teamName": "xyz789",
"status": "xyz789",
"activeWindowTitle": "abc123",
"memo": "abc123",
"companyId": "xyz789",
"hasScreenshot": true,
"screenshotUrl": "abc123",
"screenshotImage": "abc123",
"screenshotImageLarge": "xyz789",
"screenshotImageMedium": "abc123",
"screenshotImageThumbnail": "abc123",
"hasWebcam": true,
"webcamUrl": "abc123",
"webcamImage": "abc123",
"webcamImageThumbnail": "abc123",
"task": "xyz789",
"minutes": SnapshotMinutes
}
]
}
}
staffsByPersonId
Description
Get Staffs by personUid @Example: { staffsByPersonId( personId: "1284199710373576704" hiddenOrg: false orgLegacyType: Vendor orgType: Business activeOrg: true eac: false hierarchy: true pagination: {after: null, first: 100} ) { edges { node { id user { id nid name } organization { id name } activationStatus owner creationDate staffType exclusiveAgencyContractor isDefault orgId } } totalCount pageInfo { hasNextPage endCursor } } }
Response
Returns a StaffsConnection!
Example
Query
query staffsByPersonId(
$personId: ID!,
$status: Int,
$staffType: String,
$affiliateContractor: Boolean,
$hierarchy: Boolean,
$orgLegacyType: OrgLegacyType,
$orgType: OrgType,
$hiddenOrg: Boolean,
$activeOrg: Boolean,
$eac: Boolean,
$pagination: Pagination
) {
staffsByPersonId(
personId: $personId,
status: $status,
staffType: $staffType,
affiliateContractor: $affiliateContractor,
hierarchy: $hierarchy,
orgLegacyType: $orgLegacyType,
orgType: $orgType,
hiddenOrg: $hiddenOrg,
activeOrg: $activeOrg,
eac: $eac,
pagination: $pagination
) {
edges {
...StaffsConnectionEdgeFragment
}
totalCount
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"personId": "4",
"status": 987,
"staffType": "xyz789",
"affiliateContractor": false,
"hierarchy": false,
"orgLegacyType": "Client",
"orgType": "Business",
"hiddenOrg": false,
"activeOrg": false,
"eac": true,
"pagination": Pagination
}
Response
{
"data": {
"staffsByPersonId": {
"edges": [StaffsConnectionEdge],
"totalCount": 123,
"pageInfo": PageInfo
}
}
}
talentCloudTasks
Description
list of task overviews for specified talent clouds
Response
Returns [TalentCloudTask]
Arguments
Name | Description |
---|---|
filter - TalentCloudTasksInputFilter!
|
Example
Query
query talentCloudTasks($filter: TalentCloudTasksInputFilter!) {
talentCloudTasks(filter: $filter) {
talentCloud {
...PrivateTalentCloudFragment
}
taskSections {
...TalentCloudTaskSectionFragment
}
}
}
Variables
{"filter": TalentCloudTasksInputFilter}
Response
{
"data": {
"talentCloudTasks": [
{
"talentCloud": PrivateTalentCloud,
"taskSections": [TalentCloudTaskSection]
}
]
}
}
talentProfileByProfileKey
Description
Primary profile by profile key
Response
Returns a TalentProfile
Arguments
Name | Description |
---|---|
profileKey - String!
|
Example
Query
query talentProfileByProfileKey($profileKey: String!) {
talentProfileByProfileKey(profileKey: $profileKey) {
personId
identity {
...TalentProfileIdentityFragment
}
personalData {
...TalentProfilePersonalDataFragment
}
preferences {
...TalentProfileUserPreferencesFragment
}
settings {
...TalentProfileSettingsFragment
}
personAvailability {
...TalentPersonAvailabilityFragment
}
projectList {
...TalentProjectListFragment
}
communityCertificates {
...TalentProfileCommunityCertificateFragment
}
profileCompleteness {
...TalentProfileCompletenessSummaryFragment
}
otherExperiences {
...TalentProfileOtherExperienceFragment
}
educationRecords {
...TalentEducationRecordFragment
}
employmentRecords {
...TalentProfileEmploymentRecordFragment
}
skills {
...TalentProfilePersonSkillFragment
}
jobCategories {
...TalentJobCategoryGroupFragment
}
profileAggregates {
...TalentProfileAggregateFragment
}
specializedProfiles {
...TalentSpecializedProfileFragment
}
specializedProfilesSkills {
...TalentSpecializedProfileSkillFragment
}
specializedProfilesProjects {
...TalentSpecializedProfilesProjectFragment
}
}
}
Variables
{"profileKey": "xyz789"}
Response
{
"data": {
"talentProfileByProfileKey": {
"personId": 4,
"identity": TalentProfileIdentity,
"personalData": TalentProfilePersonalData,
"preferences": TalentProfileUserPreferences,
"settings": TalentProfileSettings,
"personAvailability": TalentPersonAvailability,
"projectList": TalentProjectList,
"communityCertificates": [
TalentProfileCommunityCertificate
],
"profileCompleteness": TalentProfileCompletenessSummary,
"otherExperiences": [TalentProfileOtherExperience],
"educationRecords": [TalentEducationRecord],
"employmentRecords": [
TalentProfileEmploymentRecord
],
"skills": [TalentProfilePersonSkill],
"jobCategories": [TalentJobCategoryGroup],
"profileAggregates": TalentProfileAggregate,
"specializedProfiles": [TalentSpecializedProfile],
"specializedProfilesSkills": [
TalentSpecializedProfileSkill
],
"specializedProfilesProjects": [
TalentSpecializedProfilesProject
]
}
}
}
talentWorkHistory
Description
Talent Work history query
Response
Returns a TalentWorkHistoryConnection
Arguments
Name | Description |
---|---|
filter - TalentWorkHistoryFilterInput
|
Example
Query
query talentWorkHistory($filter: TalentWorkHistoryFilterInput) {
talentWorkHistory(filter: $filter) {
workHistoryList {
...TalentWorkHistoryFragment
}
totalCount
}
}
Variables
{"filter": TalentWorkHistoryFilterInput}
Response
{
"data": {
"talentWorkHistory": {
"workHistoryList": [TalentWorkHistory],
"totalCount": 987
}
}
}
teamActivities
Description
List team activities A user needs to have hiring manager privileges within the team in order to create an activity at team level Return: a flat list (with no company/user description) of all activities under the specified team
Response
Returns an ActivitiesConnection!
Arguments
Name | Description |
---|---|
orgId - ID!
|
|
teamId - ID
|
|
page - PageFilterInput
|
|
filter - ActivityFilterInput
|
Example
Query
query teamActivities(
$orgId: ID!,
$teamId: ID,
$page: PageFilterInput,
$filter: ActivityFilterInput
) {
teamActivities(
orgId: $orgId,
teamId: $teamId,
page: $page,
filter: $filter
) {
totalCount
edges {
...ActivityEdgeFragment
}
page {
...PageFragment
}
}
}
Variables
{
"orgId": "4",
"teamId": "4",
"page": PageFilterInput,
"filter": ActivityFilterInput
}
Response
{
"data": {
"teamActivities": {
"totalCount": 123,
"edges": [ActivityEdge],
"page": Page
}
}
}
timeReport
Description
Get the time report details for the given time range and a given organization
Response
Returns [TimeReport!]
Arguments
Name | Description |
---|---|
filter - TimeReportFilter
|
Example
Query
query timeReport($filter: TimeReportFilter) {
timeReport(filter: $filter) {
dateWorkedOn
weekWorkedOn
monthWorkedOn
yearWorkedOn
freelancer {
...GenericUserFragment
}
team {
...GenericOrganizationFragment
}
contractOffer {
...ContractOfferResultFragment
}
contract {
...ContractDetailsFragment
}
termId
task
taskDescription
memo
totalHoursWorked
totalCharges
totalOnlineHoursWorked
totalOnlineCharge
totalOfflineHoursWorked
totalOfflineCharge
billRate {
...BillRateFragment
}
}
}
Variables
{"filter": TimeReportFilter}
Response
{
"data": {
"timeReport": [
{
"dateWorkedOn": "abc123",
"weekWorkedOn": "abc123",
"monthWorkedOn": "abc123",
"yearWorkedOn": "xyz789",
"freelancer": GenericUser,
"team": GenericOrganization,
"contractOffer": ContractOfferResult,
"contract": ContractDetails,
"termId": "4",
"task": "abc123",
"taskDescription": "xyz789",
"memo": "abc123",
"totalHoursWorked": 123.45,
"totalCharges": 987.65,
"totalOnlineHoursWorked": 987.65,
"totalOnlineCharge": 987.65,
"totalOfflineHoursWorked": 123.45,
"totalOfflineCharge": 123.45,
"billRate": BillRate
}
]
}
}
timeZones
Description
List of all availabe time zones
Response
Returns [TimeZoneRecord!]!
Example
Query
query timeZones {
timeZones {
timeZoneName
timeZoneDescription
}
}
Response
{
"data": {
"timeZones": [
{
"timeZoneName": "xyz789",
"timeZoneDescription": "abc123"
}
]
}
}
transactionHistory
Description
Returns some total data about the entire set of transactions. Result also includes groups of pending transactions, if available.
Response
Returns a TransactionHistory
Arguments
Name | Description |
---|---|
transactionHistoryFilter - TransactionHistoryFilter
|
Example
Query
query transactionHistory($transactionHistoryFilter: TransactionHistoryFilter) {
transactionHistory(transactionHistoryFilter: $transactionHistoryFilter) {
transactionDetail {
...TransactionHistoryDetailFragment
}
}
}
Variables
{"transactionHistoryFilter": TransactionHistoryFilter}
Response
{
"data": {
"transactionHistory": {
"transactionDetail": TransactionHistoryDetail
}
}
}
user
Description
Current user
Response
Returns a CurrentUser
Example
Query
query user {
user {
id
nid
rid
email
name
permissions {
...UserPermissionsFragment
}
photoUrl
offer {
...ContractOfferConnectionFragment
}
timeReport {
...TimeReportFragment
}
contractTimeReport {
...TimeReportConnectionFragment
}
freelancerProfile {
...FreelancerProfileFragment
}
ciphertext
i18NSettings {
...I18nSettingsFragment
}
talentProfile {
...TalentProfileFragment
}
}
}
Response
{
"data": {
"user": {
"id": "4",
"nid": "4",
"rid": 4,
"email": "xyz789",
"name": "abc123",
"permissions": UserPermissions,
"photoUrl": "xyz789",
"offer": ContractOfferConnection,
"timeReport": [TimeReport],
"contractTimeReport": TimeReportConnection,
"freelancerProfile": FreelancerProfile,
"ciphertext": "xyz789",
"i18NSettings": I18nSettings,
"talentProfile": TalentProfile
}
}
}
userDetails
Description
Retrieves the user details based on their unique identifier. This query allows fetching detailed user information based on their ID. @param id: The unique identifier of the user. @returns PiiUser: The personal identifiable information (PII) of the user.
Example
Query
query userDetails($id: ID!) {
userDetails(id: $id) {
id
nid
rid
name
firstName
lastName
photoUrl
publicUrl
email
location {
...UserLocationFragment
}
ciphertext
}
}
Variables
{"id": 4}
Response
{
"data": {
"userDetails": {
"id": "4",
"nid": 4,
"rid": 4,
"name": "abc123",
"firstName": "xyz789",
"lastName": "abc123",
"photoUrl": "abc123",
"publicUrl": "abc123",
"email": "abc123",
"location": UserLocation,
"ciphertext": "abc123"
}
}
}
userIdsByEmail
Description
List of users by email
Response
Returns a UserIdsByEmailResponse
Arguments
Name | Description |
---|---|
email - String!
|
Example
Query
query userIdsByEmail($email: String!) {
userIdsByEmail(email: $email) {
totalCount
edges {
...UserIdsByEmailRecordEdgeFragment
}
}
}
Variables
{"email": "xyz789"}
Response
{
"data": {
"userIdsByEmail": {
"totalCount": 123,
"edges": [UserIdsByEmailRecordEdge]
}
}
}
vendorContracts
Description
get list of contracts associated with a specific vendor
Response
Returns a ContractSearchResults
Arguments
Name | Description |
---|---|
filter - VendorContractSearchFilter!
|
|
options - ContractOptionsInput
|
|
paging - ContractPagingInput
|
Example
Query
query vendorContracts(
$filter: VendorContractSearchFilter!,
$options: ContractOptionsInput,
$paging: ContractPagingInput
) {
vendorContracts(
filter: $filter,
options: $options,
paging: $paging
) {
paging {
...ContractPagingFragment
}
contracts {
...ContractDetailsFragment
}
}
}
Variables
{
"filter": VendorContractSearchFilter,
"options": ContractOptionsInput,
"paging": ContractPagingInput
}
Response
{
"data": {
"vendorContracts": {
"paging": ContractPaging,
"contracts": [ContractDetails]
}
}
}
vendorProposal
Description
vendor proposal by ID
Response
Returns a VendorProposal
Arguments
Name | Description |
---|---|
id - ID!
|
Example
Query
query vendorProposal($id: ID!) {
vendorProposal(id: $id) {
id
user {
...GenericUserFragment
}
organization {
...GenericOrganizationFragment
}
marketplaceJobPosting {
...MarketplaceJobPostingFragment
}
terms {
...ProposalTermsFragment
}
coverLetter
proposalCoverLetter
projectPlan {
...ProposalProjectPlanFragment
}
auditDetails {
...ProposalAuditDetailsFragment
}
status {
...VendorProposalStatusFragment
}
annotations
}
}
Variables
{"id": "4"}
Response
{
"data": {
"vendorProposal": {
"id": 4,
"user": GenericUser,
"organization": GenericOrganization,
"marketplaceJobPosting": MarketplaceJobPosting,
"terms": ProposalTerms,
"coverLetter": "abc123",
"proposalCoverLetter": "xyz789",
"projectPlan": ProposalProjectPlan,
"auditDetails": ProposalAuditDetails,
"status": VendorProposalStatus,
"annotations": ["Hidden"]
}
}
}
vendorProposals
Description
list of vendor proposals based on filters like job posting ids, vendor id, etc
Response
Returns a VendorProposalsConnection!
Arguments
Name | Description |
---|---|
filter - VendorProposalFilter!
|
|
sortAttribute - VendorProposalSortAttribute!
|
|
pagination - Pagination!
|
Example
Query
query vendorProposals(
$filter: VendorProposalFilter!,
$sortAttribute: VendorProposalSortAttribute!,
$pagination: Pagination!
) {
vendorProposals(
filter: $filter,
sortAttribute: $sortAttribute,
pagination: $pagination
) {
totalCount
edges {
...VendorProposalsEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"filter": VendorProposalFilter,
"sortAttribute": VendorProposalSortAttribute,
"pagination": Pagination
}
Response
{
"data": {
"vendorProposals": {
"totalCount": 123,
"edges": [VendorProposalsEdge],
"pageInfo": PageInfo
}
}
}
visitor
Response
Returns a Visitor
Example
Query
query visitor {
visitor {
i18n {
...VisitorI18NFragment
}
segment {
...VisitorSegmentFragment
}
}
}
Response
{
"data": {
"visitor": {
"i18n": VisitorI18N,
"segment": VisitorSegment
}
}
}
workDays
Description
list of working days for a contractId and a given time range
Response
Returns a WorkdayResult
Arguments
Name | Description |
---|---|
workdaysInput - WorkdaysInput!
|
Example
Query
query workDays($workdaysInput: WorkdaysInput!) {
workDays(workdaysInput: $workdaysInput) {
workDays
}
}
Variables
{"workdaysInput": WorkdaysInput}
Response
{
"data": {
"workDays": {"workDays": ["abc123"]}
}
}
workDiaryCellActivities
Description
user activities for a particular timecell. timecells are in (Unix Epoch seconds)
Response
Returns a WorkDiaryCellActivityByMinuteResult
Example
Query
query workDiaryCellActivities(
$contractId: ID!,
$timestamp: Int!
) {
workDiaryCellActivities(
contractId: $contractId,
timestamp: $timestamp
) {
activities {
...WorkDiaryCellActivityByMinuteFragment
}
}
}
Variables
{"contractId": 4, "timestamp": 123}
Response
{
"data": {
"workDiaryCellActivities": {
"activities": [WorkDiaryCellActivityByMinute]
}
}
}
workDiaryCompany
Description
WorkDiary information with screenshot urls for a particular company and a particular date
Response
Returns a WorkDiaryCompany
Arguments
Name | Description |
---|---|
workDiaryCompanyInput - WorkDiaryCompanyInput!
|
Example
Query
query workDiaryCompany($workDiaryCompanyInput: WorkDiaryCompanyInput!) {
workDiaryCompany(workDiaryCompanyInput: $workDiaryCompanyInput) {
total
snapshots {
...WorkDiaryCompanySnapshotFragment
}
}
}
Variables
{"workDiaryCompanyInput": WorkDiaryCompanyInput}
Response
{
"data": {
"workDiaryCompany": {
"total": 987,
"snapshots": [WorkDiaryCompanySnapshot]
}
}
}
workDiaryContract
Description
WorkDiary information with screenshot urls for a particular contract and a particular date
Response
Returns a WorkDiaryContract
Arguments
Name | Description |
---|---|
workDiaryContractInput - WorkDiaryContractInput!
|
Example
Query
query workDiaryContract($workDiaryContractInput: WorkDiaryContractInput!) {
workDiaryContract(workDiaryContractInput: $workDiaryContractInput) {
workDiaryMetadata {
...WorkDiaryMetadataFragment
}
workDiaryTimeCells {
...WorkDiaryTimeCellFragment
}
}
}
Variables
{"workDiaryContractInput": WorkDiaryContractInput}
Response
{
"data": {
"workDiaryContract": {
"workDiaryMetadata": WorkDiaryMetadata,
"workDiaryTimeCells": [WorkDiaryTimeCell]
}
}
}
workflowView
Description
Workflow encapsulates the detailed sequence of tasks or business activities needed to complete a business process. Following query allows retreival of workflow associated with a particular entityType and entityId.
Response
Returns a WorkflowView
Example
Query
query workflowView(
$entityType: String!,
$entityId: ID!
) {
workflowView(
entityType: $entityType,
entityId: $entityId
) {
id
type
onboardedStatus
totalTasks
notStartedTasksCount
inProgressTasksCount
completedTasksCount
tasksOverdue
percentComplete
startDateTime
completionDateTime
associations {
...WorkflowAssociationViewFragment
}
tasks {
...WorkflowTaskViewFragment
}
createdDateTime
modifiedDateTime
createdBy
modifiedBy
}
}
Variables
{
"entityType": "abc123",
"entityId": "4"
}
Response
{
"data": {
"workflowView": {
"id": "4",
"type": "abc123",
"onboardedStatus": "NOT_STARTED",
"totalTasks": 123,
"notStartedTasksCount": 987,
"inProgressTasksCount": 123,
"completedTasksCount": 123,
"tasksOverdue": 987,
"percentComplete": 987,
"startDateTime": "abc123",
"completionDateTime": "xyz789",
"associations": [WorkflowAssociationView],
"tasks": [WorkflowTaskView],
"createdDateTime": "xyz789",
"modifiedDateTime": "abc123",
"createdBy": "xyz789",
"modifiedBy": "abc123"
}
}
}
Mutations
activateMilestone
Description
Client activates an existing milestone Note: if the client is an enterprise, the milestone will be activated immediately. If not, the unified checkout will be created, and the activation will be done asynchronously provided that the checkout is fulfilled successfully
Response
Returns a Milestone!
Arguments
Name | Description |
---|---|
input - ActivateMilestoneInput
|
Example
Query
mutation activateMilestone($input: ActivateMilestoneInput) {
activateMilestone(input: $input) {
id
createdBy {
...GenericUserFragment
}
dueDateTime
state
description
currentEscrowAmount {
...MoneyFragment
}
depositAmount {
...MoneyFragment
}
fundedAmount {
...MoneyFragment
}
paid {
...MoneyFragment
}
overpayment {
...MoneyFragment
}
bonus {
...MoneyFragment
}
previousMilestoneUnusedDeposit {
...MoneyFragment
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
...SubmissionEventFragment
}
}
}
Variables
{"input": ActivateMilestoneInput}
Response
{
"data": {
"activateMilestone": {
"id": 4,
"createdBy": GenericUser,
"dueDateTime": "abc123",
"state": "NotFunded",
"description": "xyz789",
"currentEscrowAmount": Money,
"depositAmount": Money,
"fundedAmount": Money,
"paid": Money,
"overpayment": Money,
"bonus": Money,
"previousMilestoneUnusedDeposit": Money,
"submissionCount": 987,
"sequenceId": 987,
"payComments": "abc123",
"lastSubmissionCreatedTime": "abc123",
"createdDateTime": "abc123",
"modifiedDateTime": "abc123",
"instructions": "abc123",
"submissionEvents": [SubmissionEvent]
}
}
}
addFreelancerEmploymentRecord
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Response
Returns a FreelancerProfileEmploymentRecord
Arguments
Name | Description |
---|---|
input - CreateEmploymentRecordInput!
|
Example
Query
mutation addFreelancerEmploymentRecord($input: CreateEmploymentRecordInput!) {
addFreelancerEmploymentRecord(input: $input) {
id
user {
...GenericUserFragment
}
companyName
jobTitle
standardizedCompanyId
standardizedJobTitleId
role
startDate
endDate
description
city
country
}
}
Variables
{"input": CreateEmploymentRecordInput}
Response
{
"data": {
"addFreelancerEmploymentRecord": {
"id": 4,
"user": GenericUser,
"companyName": "abc123",
"jobTitle": "xyz789",
"standardizedCompanyId": "xyz789",
"standardizedJobTitleId": "abc123",
"role": "abc123",
"startDate": "abc123",
"endDate": "xyz789",
"description": "abc123",
"city": "abc123",
"country": "xyz789"
}
}
}
addFreelancerLanguage
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Response
Returns a FreelancerProfileLanguage
Arguments
Name | Description |
---|---|
input - FreelancerLanguageInput!
|
Example
Query
mutation addFreelancerLanguage($input: FreelancerLanguageInput!) {
addFreelancerLanguage(input: $input) {
id
language {
...LanguageFragment
}
verified
verifiedByCertificate
verifiedByFeedback
}
}
Variables
{"input": FreelancerLanguageInput}
Response
{
"data": {
"addFreelancerLanguage": {
"id": 4,
"language": Language,
"verified": false,
"verifiedByCertificate": false,
"verifiedByFeedback": false
}
}
}
addFreelancerOtherExperience
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Response
Returns a FreelancerProfileOtherExperience
Arguments
Name | Description |
---|---|
input - OtherExperienceInput!
|
Example
Query
mutation addFreelancerOtherExperience($input: OtherExperienceInput!) {
addFreelancerOtherExperience(input: $input) {
id
user {
...GenericUserFragment
}
subject
description
active
createdDateTime
updatedDateTime
}
}
Variables
{"input": OtherExperienceInput}
Response
{
"data": {
"addFreelancerOtherExperience": {
"id": "4",
"user": GenericUser,
"subject": "xyz789",
"description": "xyz789",
"active": false,
"createdDateTime": "abc123",
"updatedDateTime": "xyz789"
}
}
}
addTeamActivity
Description
Create activity at team level A user needs to have hiring manager privileges within the team in order to create an activity at team level
Response
Returns a ProcessAddResponse
Arguments
Name | Description |
---|---|
orgId - ID!
|
|
teamId - ID
|
|
request - AddTeamActivityRequest!
|
Example
Query
mutation addTeamActivity(
$orgId: ID!,
$teamId: ID,
$request: AddTeamActivityRequest!
) {
addTeamActivity(
orgId: $orgId,
teamId: $teamId,
request: $request
) {
id
success
}
}
Variables
{
"orgId": 4,
"teamId": 4,
"request": AddTeamActivityRequest
}
Response
{
"data": {
"addTeamActivity": {
"id": "4",
"success": false
}
}
}
addUserToRoom
Description
Add users to the room
Response
Returns a Boolean!
Arguments
Name | Description |
---|---|
roomId - ID!
|
|
roomUsers - [RoomUserInput!]!
|
Example
Query
mutation addUserToRoom(
$roomId: ID!,
$roomUsers: [RoomUserInput!]!
) {
addUserToRoom(
roomId: $roomId,
roomUsers: $roomUsers
)
}
Variables
{"roomId": 4, "roomUsers": [RoomUserInput]}
Response
{"data": {"addUserToRoom": false}}
approveMilestone
Description
Approves a milestone
Response
Returns a Milestone!
Arguments
Name | Description |
---|---|
input - ApproveMilestoneInput!
|
Example
Query
mutation approveMilestone($input: ApproveMilestoneInput!) {
approveMilestone(input: $input) {
id
createdBy {
...GenericUserFragment
}
dueDateTime
state
description
currentEscrowAmount {
...MoneyFragment
}
depositAmount {
...MoneyFragment
}
fundedAmount {
...MoneyFragment
}
paid {
...MoneyFragment
}
overpayment {
...MoneyFragment
}
bonus {
...MoneyFragment
}
previousMilestoneUnusedDeposit {
...MoneyFragment
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
...SubmissionEventFragment
}
}
}
Variables
{"input": ApproveMilestoneInput}
Response
{
"data": {
"approveMilestone": {
"id": 4,
"createdBy": GenericUser,
"dueDateTime": "xyz789",
"state": "NotFunded",
"description": "abc123",
"currentEscrowAmount": Money,
"depositAmount": Money,
"fundedAmount": Money,
"paid": Money,
"overpayment": Money,
"bonus": Money,
"previousMilestoneUnusedDeposit": Money,
"submissionCount": 987,
"sequenceId": 123,
"payComments": "abc123",
"lastSubmissionCreatedTime": "abc123",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"instructions": "xyz789",
"submissionEvents": [SubmissionEvent]
}
}
}
archiveRoom
Description
Archive an existing room
Example
Query
mutation archiveRoom($roomId: ID!) {
archiveRoom(roomId: $roomId) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"roomId": 4}
Response
{
"data": {
"archiveRoom": {
"id": "4",
"roomName": "xyz789",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "xyz789",
"public": false,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 123,
"roomFavoriteDateTime": "xyz789",
"favorite": true,
"numUnreadMentions": 123,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "xyz789",
"lastVisitedDateTime": "abc123",
"lastReadDateTime": "xyz789",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "abc123",
"readOnly": false,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": true,
"contractId": "4",
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "abc123",
"roomNotePresent": false,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
archiveTeamActivity
Description
Archive activities A user needs to have hiring manager privileges within the team in order to create an activity at team level
Response
Returns a ProcessUpdateResponse
Arguments
Name | Description |
---|---|
orgId - ID!
|
|
teamId - ID
|
|
codes - [String!]!
|
Example
Query
mutation archiveTeamActivity(
$orgId: ID!,
$teamId: ID,
$codes: [String!]!
) {
archiveTeamActivity(
orgId: $orgId,
teamId: $teamId,
codes: $codes
) {
success
}
}
Variables
{
"orgId": "4",
"teamId": "4",
"codes": ["abc123"]
}
Response
{"data": {"archiveTeamActivity": {"success": true}}}
assignTeamActivityToTheContract
Description
Assign and unassign contract to the list of activities A user needs to have hiring manager privileges within the team in order to create an activity at team level Activity appears in freelancer's team client only if his contract is assigned to the activity and activities are activated for the ongoing contract. This mutation overrides assigned contracts for the given activities. For example, if you pass empty list of codes
, freelancer's contract is unassigned from all the activities it is assigned to
Response
Returns a ProcessUpdateResponse
Example
Query
mutation assignTeamActivityToTheContract(
$orgId: ID!,
$teamId: ID,
$contractId: ID!,
$codes: [String]!
) {
assignTeamActivityToTheContract(
orgId: $orgId,
teamId: $teamId,
contractId: $contractId,
codes: $codes
) {
success
}
}
Variables
{
"orgId": "4",
"teamId": "4",
"contractId": "4",
"codes": ["xyz789"]
}
Response
{"data": {"assignTeamActivityToTheContract": {"success": false}}}
confirmFiles
Description
confirm files, returned is a flag indicating whether operation was successful or not
Response
Returns a Boolean
Example
Query
mutation confirmFiles(
$fileIds: [ID!]!,
$skipMissing: Boolean
) {
confirmFiles(
fileIds: $fileIds,
skipMissing: $skipMissing
)
}
Variables
{"fileIds": ["4"], "skipMissing": true}
Response
{"data": {"confirmFiles": true}}
createDirectUploadLinkForJAClientProposal
Response
Returns a FileInfo!
Arguments
Name | Description |
---|---|
input - CreateDirectUploadLinkInput!
|
Example
Query
mutation createDirectUploadLinkForJAClientProposal($input: CreateDirectUploadLinkInput!) {
createDirectUploadLinkForJAClientProposal(input: $input) {
id
uploadUrl
formKeyValues {
...StringMapElementFragment
}
}
}
Variables
{"input": CreateDirectUploadLinkInput}
Response
{
"data": {
"createDirectUploadLinkForJAClientProposal": {
"id": 4,
"uploadUrl": "abc123",
"formKeyValues": [StringMapElement]
}
}
}
createJobPosting
Description
Creates a new Job post. Required OrganizationId will be derived at fetcher side
Response
Returns a JobPostingCreateResponse
Arguments
Name | Description |
---|---|
jobPostingRequest - JobPostingCreateRequest!
|
Example
Query
mutation createJobPosting($jobPostingRequest: JobPostingCreateRequest!) {
createJobPosting(jobPostingRequest: $jobPostingRequest) {
id
qualificationsSaved
skillsSaved
questionsSaved
segmentationDataSaved
attachmentsSaved
ptcInfoSaved
jobPostingAdditional
sandsJobPostSaved
customFieldsSaved
}
}
Variables
{"jobPostingRequest": JobPostingCreateRequest}
Response
{
"data": {
"createJobPosting": {
"id": 4,
"qualificationsSaved": false,
"skillsSaved": false,
"questionsSaved": false,
"segmentationDataSaved": true,
"attachmentsSaved": false,
"ptcInfoSaved": false,
"jobPostingAdditional": false,
"sandsJobPostSaved": false,
"customFieldsSaved": true
}
}
}
createManagedProjectServices
Description
Partner create a single Managed Project Services (sync). This mutation is not generally available. It is for specific set of customers who use the Managed Project Service integration
Response
Returns a PartnerManagedProjectServicesResponse
Arguments
Name | Description |
---|---|
partnerSlug - String!
|
|
input - CreateManagedProjectServicesInput!
|
Example
Query
mutation createManagedProjectServices(
$partnerSlug: String!,
$input: CreateManagedProjectServicesInput!
) {
createManagedProjectServices(
partnerSlug: $partnerSlug,
input: $input
) {
data {
...PartnerManagedProjectServicesEntryResponseFragment
}
}
}
Variables
{
"partnerSlug": "xyz789",
"input": CreateManagedProjectServicesInput
}
Response
{
"data": {
"createManagedProjectServices": {
"data": [PartnerManagedProjectServicesEntryResponse]
}
}
}
createManagedProjectServicesBatch
Description
Partner creates multiple Managed Project Services in a row (batch). This query is not generally available. It is for specific set of customers who use the Managed Project Service integration
Response
Returns a String
Arguments
Name | Description |
---|---|
partnerSlug - String!
|
|
input - CreateManagedProjectServicesBatchInput!
|
Example
Query
mutation createManagedProjectServicesBatch(
$partnerSlug: String!,
$input: CreateManagedProjectServicesBatchInput!
) {
createManagedProjectServicesBatch(
partnerSlug: $partnerSlug,
input: $input
)
}
Variables
{
"partnerSlug": "xyz789",
"input": CreateManagedProjectServicesBatchInput
}
Response
{
"data": {
"createManagedProjectServicesBatch": "abc123"
}
}
createManagedProjectServicesMagicLink
Description
Creates a Magic Link. Partners can request a Magic Link within their logged-in area, allowing seamless interaction for their customers. This link provides a secure and frictionless authentication experience.
This mutation is not generally available. It is restricted to a specific group of clients using the Managed Project Service integration.
Goal
- Intended for partners who need to streamline customer access.
- Helps eliminate manual authentication steps by providing a pre-authenticated link.
Response
Returns a String
Example
Query
mutation createManagedProjectServicesMagicLink(
$partnerEngagementId: ID!,
$partnerSlug: String!
) {
createManagedProjectServicesMagicLink(
partnerEngagementId: $partnerEngagementId,
partnerSlug: $partnerSlug
)
}
Variables
{
"partnerEngagementId": 4,
"partnerSlug": "abc123"
}
Response
{
"data": {
"createManagedProjectServicesMagicLink": "abc123"
}
}
createMilestoneV2
Description
Client creates a new milestone (V2)
Response
Returns a Milestone
Arguments
Name | Description |
---|---|
input - CreateMilestoneInput!
|
Example
Query
mutation createMilestoneV2($input: CreateMilestoneInput!) {
createMilestoneV2(input: $input) {
id
createdBy {
...GenericUserFragment
}
dueDateTime
state
description
currentEscrowAmount {
...MoneyFragment
}
depositAmount {
...MoneyFragment
}
fundedAmount {
...MoneyFragment
}
paid {
...MoneyFragment
}
overpayment {
...MoneyFragment
}
bonus {
...MoneyFragment
}
previousMilestoneUnusedDeposit {
...MoneyFragment
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
...SubmissionEventFragment
}
}
}
Variables
{"input": CreateMilestoneInput}
Response
{
"data": {
"createMilestoneV2": {
"id": 4,
"createdBy": GenericUser,
"dueDateTime": "abc123",
"state": "NotFunded",
"description": "abc123",
"currentEscrowAmount": Money,
"depositAmount": Money,
"fundedAmount": Money,
"paid": Money,
"overpayment": Money,
"bonus": Money,
"previousMilestoneUnusedDeposit": Money,
"submissionCount": 123,
"sequenceId": 123,
"payComments": "abc123",
"lastSubmissionCreatedTime": "xyz789",
"createdDateTime": "abc123",
"modifiedDateTime": "xyz789",
"instructions": "abc123",
"submissionEvents": [SubmissionEvent]
}
}
}
createOffer
Description
Create offer mutation used for all available types of offer including Fixed price and Hourly
Response
Returns an OfferCreationResponse
Arguments
Name | Description |
---|---|
offerInput - CreationOfferInput!
|
Example
Query
mutation createOffer($offerInput: CreationOfferInput!) {
createOffer(offerInput: $offerInput) {
offer {
...ModernizedOfferFragment
}
}
}
Variables
{"offerInput": CreationOfferInput}
Response
{"data": {"createOffer": {"offer": ModernizedOffer}}}
createOrganization
Description
Create a new child organization
Response
Returns an AccountProcessInstance!
Arguments
Name | Description |
---|---|
input - CreateOrganizationInput!
|
Example
Query
mutation createOrganization($input: CreateOrganizationInput!) {
createOrganization(input: $input) {
id
success
}
}
Variables
{"input": CreateOrganizationInput}
Response
{
"data": {
"createOrganization": {
"id": "4",
"success": false
}
}
}
createRoomStoryV2
Description
Creates new story in an existing dash room
Response
Returns a RoomStory!
Arguments
Name | Description |
---|---|
input - RoomStoryCreateInputV2!
|
Example
Query
mutation createRoomStoryV2($input: RoomStoryCreateInputV2!) {
createRoomStoryV2(input: $input) {
id
room {
...RoomFragment
}
createdDateTime
updatedDateTime
user {
...GenericUserFragment
}
message
organization {
...GenericOrganizationFragment
}
roomStoryNote {
...RoomStoryNoteFragment
}
attachments {
...MessageAttachmentsFragment
}
}
}
Variables
{"input": RoomStoryCreateInputV2}
Response
{
"data": {
"createRoomStoryV2": {
"id": "4",
"room": Room,
"createdDateTime": "xyz789",
"updatedDateTime": "abc123",
"user": GenericUser,
"message": "xyz789",
"organization": GenericOrganization,
"roomStoryNote": RoomStoryNote,
"attachments": [MessageAttachments]
}
}
}
createRoomV2
Description
Create dash room based on input arguments and returns its information
Response
Returns a Room!
Arguments
Name | Description |
---|---|
input - RoomCreateInputV2!
|
Example
Query
mutation createRoomV2($input: RoomCreateInputV2!) {
createRoomV2(input: $input) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"input": RoomCreateInputV2}
Response
{
"data": {
"createRoomV2": {
"id": "4",
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": true,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "xyz789",
"favorite": false,
"numUnreadMentions": 123,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "abc123",
"lastVisitedDateTime": "abc123",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "xyz789",
"readOnly": false,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": true,
"contractId": 4,
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "abc123",
"roomNotePresent": false,
"offerIds": ["4"],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
declineClientProposal
Description
decline client proposal
Response
Returns an UpdateClientProposalResult!
Arguments
Name | Description |
---|---|
clientProposalDeclineRequest - ClientProposalDeclineRequest
|
Example
Query
mutation declineClientProposal($clientProposalDeclineRequest: ClientProposalDeclineRequest) {
declineClientProposal(clientProposalDeclineRequest: $clientProposalDeclineRequest) {
proposal {
...ClientProposalFragment
}
status
}
}
Variables
{
"clientProposalDeclineRequest": ClientProposalDeclineRequest
}
Response
{
"data": {
"declineClientProposal": {
"proposal": ClientProposal,
"status": "SUCCESS"
}
}
}
deleteMilestone
Description
Client deletes and existing milestone
Response
Returns a Boolean!
Arguments
Name | Description |
---|---|
input - DeleteMilestoneInput
|
Example
Query
mutation deleteMilestone($input: DeleteMilestoneInput) {
deleteMilestone(input: $input)
}
Variables
{"input": DeleteMilestoneInput}
Response
{"data": {"deleteMilestone": false}}
editMilestone
Description
Client edits an existing milestone
Response
Returns a Milestone!
Arguments
Name | Description |
---|---|
input - EditMilestoneInput
|
Example
Query
mutation editMilestone($input: EditMilestoneInput) {
editMilestone(input: $input) {
id
createdBy {
...GenericUserFragment
}
dueDateTime
state
description
currentEscrowAmount {
...MoneyFragment
}
depositAmount {
...MoneyFragment
}
fundedAmount {
...MoneyFragment
}
paid {
...MoneyFragment
}
overpayment {
...MoneyFragment
}
bonus {
...MoneyFragment
}
previousMilestoneUnusedDeposit {
...MoneyFragment
}
submissionCount
sequenceId
payComments
lastSubmissionCreatedTime
createdDateTime
modifiedDateTime
instructions
submissionEvents {
...SubmissionEventFragment
}
}
}
Variables
{"input": EditMilestoneInput}
Response
{
"data": {
"editMilestone": {
"id": 4,
"createdBy": GenericUser,
"dueDateTime": "xyz789",
"state": "NotFunded",
"description": "abc123",
"currentEscrowAmount": Money,
"depositAmount": Money,
"fundedAmount": Money,
"paid": Money,
"overpayment": Money,
"bonus": Money,
"previousMilestoneUnusedDeposit": Money,
"submissionCount": 987,
"sequenceId": 987,
"payComments": "abc123",
"lastSubmissionCreatedTime": "xyz789",
"createdDateTime": "abc123",
"modifiedDateTime": "abc123",
"instructions": "xyz789",
"submissionEvents": [SubmissionEvent]
}
}
}
endContractByClient
Description
End a contract by a client
Response
Returns a ContractActionResponse
Arguments
Name | Description |
---|---|
contractId - ID!
|
|
input - EndContractInput!
|
Example
Query
mutation endContractByClient(
$contractId: ID!,
$input: EndContractInput!
) {
endContractByClient(
contractId: $contractId,
input: $input
) {
success
}
}
Variables
{
"contractId": "4",
"input": EndContractInput
}
Response
{"data": {"endContractByClient": {"success": true}}}
endContractByFreelancer
Description
End a contract by a freelancer
Response
Returns a ContractActionResponse
Arguments
Name | Description |
---|---|
contractId - ID!
|
|
input - EndContractInput!
|
Example
Query
mutation endContractByFreelancer(
$contractId: ID!,
$input: EndContractInput!
) {
endContractByFreelancer(
contractId: $contractId,
input: $input
) {
success
}
}
Variables
{
"contractId": "4",
"input": EndContractInput
}
Response
{"data": {"endContractByFreelancer": {"success": true}}}
hideClientProposal
Description
toggle hide status on the client proposal.
Response
Returns an UpdateClientProposalResult!
Arguments
Name | Description |
---|---|
clientProposalHideRequest - ClientProposalHideRequest!
|
Example
Query
mutation hideClientProposal($clientProposalHideRequest: ClientProposalHideRequest!) {
hideClientProposal(clientProposalHideRequest: $clientProposalHideRequest) {
proposal {
...ClientProposalFragment
}
status
}
}
Variables
{"clientProposalHideRequest": ClientProposalHideRequest}
Response
{
"data": {
"hideClientProposal": {
"proposal": ClientProposal,
"status": "SUCCESS"
}
}
}
inviteToTeam
Description
Invite someone by email or username to an existing team @Example: mutation{ inviteToTeam(invitations:{ flow:HELP_ME_HIRE, frankoRolesToBeAssigned:["200"] inviteeEmail:"f407041458vddvcd@xagdyy2vjl.qadomain.com", emailParams:{ message:"test" } invitedToOrganizationsIds:"1808424989956608001", landingUrl:"https://developer.upwork.com/" }){ succeeded{ id token } failed{ code message invitation{ email username } } } } ...
Response
Returns an InviteToTeamResponse!
Arguments
Name | Description |
---|---|
invitations - [InvitationToTeamInput!]!
|
Example
Query
mutation inviteToTeam($invitations: [InvitationToTeamInput!]!) {
inviteToTeam(invitations: $invitations) {
succeeded {
...InviteToTeamSucceededResponseFragment
}
failed {
...InviteToTeamFailedResponseFragment
}
}
}
Variables
{"invitations": [InvitationToTeamInput]}
Response
{
"data": {
"inviteToTeam": {
"succeeded": [InviteToTeamSucceededResponse],
"failed": [InviteToTeamFailedResponse]
}
}
}
markClientProposalAsRead
Description
mark client proposal as read
Response
Returns an UpdateClientProposalResult!
Arguments
Name | Description |
---|---|
clientProposalReadRequest - ClientProposalReadRequest
|
Example
Query
mutation markClientProposalAsRead($clientProposalReadRequest: ClientProposalReadRequest) {
markClientProposalAsRead(clientProposalReadRequest: $clientProposalReadRequest) {
proposal {
...ClientProposalFragment
}
status
}
}
Variables
{"clientProposalReadRequest": ClientProposalReadRequest}
Response
{
"data": {
"markClientProposalAsRead": {
"proposal": ClientProposal,
"status": "SUCCESS"
}
}
}
messageClientProposal
Description
message client proposal
Response
Returns an UpdateClientProposalResult!
Arguments
Name | Description |
---|---|
clientProposalMessageRequest - ClientProposalMessageRequest
|
Example
Query
mutation messageClientProposal($clientProposalMessageRequest: ClientProposalMessageRequest) {
messageClientProposal(clientProposalMessageRequest: $clientProposalMessageRequest) {
proposal {
...ClientProposalFragment
}
status
}
}
Variables
{
"clientProposalMessageRequest": ClientProposalMessageRequest
}
Response
{
"data": {
"messageClientProposal": {
"proposal": ClientProposal,
"status": "SUCCESS"
}
}
}
pauseContract
Description
Pause a contract by a client
Response
Returns a ContractActionResponse
Example
Query
mutation pauseContract(
$contractId: ID!,
$message: String
) {
pauseContract(
contractId: $contractId,
message: $message
) {
success
}
}
Variables
{"contractId": 4, "message": "xyz789"}
Response
{"data": {"pauseContract": {"success": false}}}
rejectSubmittedMilestone
Description
Allows client to reject a milestone submission from a freelancer
Response
Returns a MilestoneRejectionResponse
Arguments
Name | Description |
---|---|
input - RejectMilestoneSubmissionInput
|
Example
Query
mutation rejectSubmittedMilestone($input: RejectMilestoneSubmissionInput) {
rejectSubmittedMilestone(input: $input) {
response
}
}
Variables
{"input": RejectMilestoneSubmissionInput}
Response
{"data": {"rejectSubmittedMilestone": {"response": false}}}
removeFreelancerEmploymentRecord
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Example
Query
mutation removeFreelancerEmploymentRecord(
$id: ID!,
$userId: ID!
) {
removeFreelancerEmploymentRecord(
id: $id,
userId: $userId
)
}
Variables
{"id": "4", "userId": 4}
Response
{"data": {"removeFreelancerEmploymentRecord": false}}
removeFreelancerLanguage
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Example
Query
mutation removeFreelancerLanguage(
$userId: ID!,
$iso639Code: String!
) {
removeFreelancerLanguage(
userId: $userId,
iso639Code: $iso639Code
)
}
Variables
{
"userId": "4",
"iso639Code": "xyz789"
}
Response
{"data": {"removeFreelancerLanguage": true}}
removeFreelancerOtherExperience
Description
Remove FL experience for the current user
removeRoom
Description
Removes a room
removeRoomStory
Description
Removes a story from a room
removeUserFromRoom
Description
Removes an user from a room
Example
Query
mutation removeUserFromRoom(
$roomId: ID!,
$userId: ID!,
$orgId: ID!
) {
removeUserFromRoom(
roomId: $roomId,
userId: $userId,
orgId: $orgId
)
}
Variables
{"roomId": 4, "userId": "4", "orgId": 4}
Response
{"data": {"removeUserFromRoom": false}}
restartContract
Description
Restart a contract by a client
Response
Returns a ContractActionResponse
Example
Query
mutation restartContract(
$contractId: ID!,
$message: String
) {
restartContract(
contractId: $contractId,
message: $message
) {
success
}
}
Variables
{
"contractId": "4",
"message": "abc123"
}
Response
{"data": {"restartContract": {"success": true}}}
roomCreate1on1IfNotExists
Description
Create 1on1 room if doesn't exist and get it's information
Example
Query
mutation roomCreate1on1IfNotExists(
$userId: ID!,
$orgId: ID!
) {
roomCreate1on1IfNotExists(
userId: $userId,
orgId: $orgId
) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"userId": 4, "orgId": "4"}
Response
{
"data": {
"roomCreate1on1IfNotExists": {
"id": "4",
"roomName": "xyz789",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": false,
"topic": "abc123",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "xyz789",
"favorite": false,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 987,
"joinDateTime": "abc123",
"lastVisitedDateTime": "xyz789",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "abc123",
"readOnly": true,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": true,
"contractId": "4",
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": true,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
sendCustomPayment
Description
Send custom payment
Response
Returns a CustomPaymentResponse
Arguments
Name | Description |
---|---|
input - CustomPaymentInput
|
Example
Query
mutation sendCustomPayment($input: CustomPaymentInput) {
sendCustomPayment(input: $input) {
invoiceId
}
}
Variables
{"input": CustomPaymentInput}
Response
{"data": {"sendCustomPayment": {"invoiceId": 4}}}
shortlistClientProposal
Description
shortlist client proposal
Response
Returns an UpdateClientProposalResult!
Arguments
Name | Description |
---|---|
clientProposalShortlistRequest - ClientProposalShortlistRequest
|
Example
Query
mutation shortlistClientProposal($clientProposalShortlistRequest: ClientProposalShortlistRequest) {
shortlistClientProposal(clientProposalShortlistRequest: $clientProposalShortlistRequest) {
proposal {
...ClientProposalFragment
}
status
}
}
Variables
{
"clientProposalShortlistRequest": ClientProposalShortlistRequest
}
Response
{
"data": {
"shortlistClientProposal": {
"proposal": ClientProposal,
"status": "SUCCESS"
}
}
}
unarchiveTeamActivity
Description
Unarchive activities A user needs to have hiring manager privileges within the team in order to create an activity at team level
Response
Returns a ProcessUpdateResponse
Arguments
Name | Description |
---|---|
orgId - ID!
|
|
teamId - ID
|
|
codes - [String!]!
|
Example
Query
mutation unarchiveTeamActivity(
$orgId: ID!,
$teamId: ID,
$codes: [String!]!
) {
unarchiveTeamActivity(
orgId: $orgId,
teamId: $teamId,
codes: $codes
) {
success
}
}
Variables
{
"orgId": "4",
"teamId": 4,
"codes": ["abc123"]
}
Response
{"data": {"unarchiveTeamActivity": {"success": true}}}
updateFreelancerAvailability
Description
update freelancer's availability given its id and userId
Response
Returns a FreelancerProfileAvailability
Arguments
Name | Description |
---|---|
input - FreelancerProfileAvailabilityInput!
|
Example
Query
mutation updateFreelancerAvailability($input: FreelancerProfileAvailabilityInput!) {
updateFreelancerAvailability(input: $input) {
id
user {
...GenericUserFragment
}
capacity
availabilityDateTime
name
createdDateTime
}
}
Variables
{"input": FreelancerProfileAvailabilityInput}
Response
{
"data": {
"updateFreelancerAvailability": {
"id": 4,
"user": GenericUser,
"capacity": "fullTime",
"availabilityDateTime": "abc123",
"name": "abc123",
"createdDateTime": "abc123"
}
}
}
updateFreelancerEmploymentRecord
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Response
Returns a FreelancerProfileEmploymentRecord
Arguments
Name | Description |
---|---|
input - UpdateEmploymentRecordInput!
|
Example
Query
mutation updateFreelancerEmploymentRecord($input: UpdateEmploymentRecordInput!) {
updateFreelancerEmploymentRecord(input: $input) {
id
user {
...GenericUserFragment
}
companyName
jobTitle
standardizedCompanyId
standardizedJobTitleId
role
startDate
endDate
description
city
country
}
}
Variables
{"input": UpdateEmploymentRecordInput}
Response
{
"data": {
"updateFreelancerEmploymentRecord": {
"id": 4,
"user": GenericUser,
"companyName": "xyz789",
"jobTitle": "abc123",
"standardizedCompanyId": "abc123",
"standardizedJobTitleId": "abc123",
"role": "abc123",
"startDate": "xyz789",
"endDate": "xyz789",
"description": "xyz789",
"city": "xyz789",
"country": "abc123"
}
}
}
updateFreelancerOtherExperience
Description
Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.
Response
Returns a FreelancerProfileOtherExperience
Arguments
Name | Description |
---|---|
input - UpdateOtherExperienceInput!
|
Example
Query
mutation updateFreelancerOtherExperience($input: UpdateOtherExperienceInput!) {
updateFreelancerOtherExperience(input: $input) {
id
user {
...GenericUserFragment
}
subject
description
active
createdDateTime
updatedDateTime
}
}
Variables
{"input": UpdateOtherExperienceInput}
Response
{
"data": {
"updateFreelancerOtherExperience": {
"id": 4,
"user": GenericUser,
"subject": "abc123",
"description": "xyz789",
"active": true,
"createdDateTime": "abc123",
"updatedDateTime": "abc123"
}
}
}
updateJobPosting
Description
Updates an existing Job post. Required OrganizationId will be derived at fetcher side
Response
Returns a JobPostingUpdateResponse
Arguments
Name | Description |
---|---|
id - ID!
|
|
jobPostingRequest - JobPostingUpdateRequest!
|
Example
Query
mutation updateJobPosting(
$id: ID!,
$jobPostingRequest: JobPostingUpdateRequest!
) {
updateJobPosting(
id: $id,
jobPostingRequest: $jobPostingRequest
) {
id
qualificationsSaved
skillsSaved
questionsSaved
segmentationDataSaved
attachmentsSaved
ptcInfoSaved
sandsJobPostSaved
}
}
Variables
{
"id": "4",
"jobPostingRequest": JobPostingUpdateRequest
}
Response
{
"data": {
"updateJobPosting": {
"id": 4,
"qualificationsSaved": true,
"skillsSaved": true,
"questionsSaved": true,
"segmentationDataSaved": true,
"attachmentsSaved": false,
"ptcInfoSaved": false,
"sandsJobPostSaved": true
}
}
}
updateOrganization
Description
Update organization data
Response
Returns an AccountProcessInstance!
Arguments
Name | Description |
---|---|
input - UpdateOrganizationInput!
|
Example
Query
mutation updateOrganization($input: UpdateOrganizationInput!) {
updateOrganization(input: $input) {
id
success
}
}
Variables
{"input": UpdateOrganizationInput}
Response
{
"data": {
"updateOrganization": {
"id": "4",
"success": true
}
}
}
updateRoomStoryV2
Description
Updates an existing story in a room
Response
Returns an UpdateRoomStoryResponse!
Arguments
Name | Description |
---|---|
input - RoomStoryUpdateInputV2!
|
Example
Query
mutation updateRoomStoryV2($input: RoomStoryUpdateInputV2!) {
updateRoomStoryV2(input: $input) {
status
}
}
Variables
{"input": RoomStoryUpdateInputV2}
Response
{
"data": {
"updateRoomStoryV2": {
"status": "abc123"
}
}
}
updateRoomV2
Description
Updates an existing room
Response
Returns a Room!
Arguments
Name | Description |
---|---|
input - RoomUpdateInputV2
|
Example
Query
mutation updateRoomV2($input: RoomUpdateInputV2) {
updateRoomV2(input: $input) {
id
roomName
organization {
...CurrentOrganizationFragment
}
creator {
...RoomUserFragment
}
createdAtDateTime
public
topic
owner {
...RoomUserFragment
}
numUnread
roomFavoriteDateTime
favorite
numUnreadMentions
roomUsers {
...RoomUserFragment
}
numUsers
joinDateTime
lastVisitedDateTime
lastReadDateTime
roomType
readOnlyDateTime
readOnly
blockDateTime
blockedBy {
...RoomUserFragment
}
hidden
muted
contractId
contract {
...ContractFragment
}
contractDetails {
...ContractDetailsFragment
}
vendorProposal {
...VendorProposalFragment
}
roomNote
roomNotePresent
offerIds
recruiters {
...GenericUserFragment
}
latestStory {
...RoomStoryFragment
}
story {
...RoomStoryFragment
}
stories {
...RoomStoryConnectionFragment
}
latestStoryPreRendered {
...RoomStoryFragment
}
}
}
Variables
{"input": RoomUpdateInputV2}
Response
{
"data": {
"updateRoomV2": {
"id": 4,
"roomName": "abc123",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "xyz789",
"public": false,
"topic": "abc123",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "xyz789",
"favorite": true,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 987,
"joinDateTime": "xyz789",
"lastVisitedDateTime": "xyz789",
"lastReadDateTime": "abc123",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "xyz789",
"readOnly": true,
"blockDateTime": "abc123",
"blockedBy": RoomUser,
"hidden": false,
"muted": true,
"contractId": 4,
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "xyz789",
"roomNotePresent": true,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
}
}
updateTeamActivity
Description
Update activity at team level A user needs to have hiring manager privileges within the team in order to create an activity at team level
Response
Returns a ProcessUpdateResponse
Arguments
Name | Description |
---|---|
orgId - ID!
|
|
teamId - ID
|
|
request - UpdateTeamActivityRequest!
|
Example
Query
mutation updateTeamActivity(
$orgId: ID!,
$teamId: ID,
$request: UpdateTeamActivityRequest!
) {
updateTeamActivity(
orgId: $orgId,
teamId: $teamId,
request: $request
) {
success
}
}
Variables
{
"orgId": 4,
"teamId": 4,
"request": UpdateTeamActivityRequest
}
Response
{"data": {"updateTeamActivity": {"success": false}}}
updateWorkflowTask
Description
Updates the status of the individual task associated with the workflowId and taskId
Response
Returns an UpdateWorkflowTaskResult!
Arguments
Name | Description |
---|---|
workflowId - ID
|
|
taskId - ID
|
|
updateWorkflowTaskDetailsInput - UpdateWorkflowTaskDetailsInput
|
Example
Query
mutation updateWorkflowTask(
$workflowId: ID,
$taskId: ID,
$updateWorkflowTaskDetailsInput: UpdateWorkflowTaskDetailsInput
) {
updateWorkflowTask(
workflowId: $workflowId,
taskId: $taskId,
updateWorkflowTaskDetailsInput: $updateWorkflowTaskDetailsInput
) {
workflowId
updatedTaskView {
...WorkflowTaskViewFragment
}
}
}
Variables
{
"workflowId": 4,
"taskId": 4,
"updateWorkflowTaskDetailsInput": UpdateWorkflowTaskDetailsInput
}
Response
{
"data": {
"updateWorkflowTask": {
"workflowId": 4,
"updatedTaskView": WorkflowTaskView
}
}
}
withdrawOffer
Description
Withdraws an offer through new offersCommand service. This method check permissions from logged user
Response
Returns a Boolean!
Arguments
Name | Description |
---|---|
input - WithdrawOfferInput!
|
Example
Query
mutation withdrawOffer($input: WithdrawOfferInput!) {
withdrawOffer(input: $input)
}
Variables
{"input": WithdrawOfferInput}
Response
{"data": {"withdrawOffer": true}}
Types
Proposals
ClientProposal
Description
client proposal
Fields
Field Name | Description |
---|---|
id - ID!
|
implements Proposal { id of the client proposal |
user - GenericUser!
|
connection to the vendor who will be physically working on the job if accepted |
organization - GenericOrganization!
|
connection to the organization the vendor user belongs to |
job - MarketplaceJobPosting!
|
connection to the job for which vendor has applied |
terms - ProposalTerms
|
terms on which vendor applied on |
coverLetter - String
|
cover letter to accompany the proposal |
projectPlan - ProposalProjectPlan
|
connection to the project plan which is a set of milestones defined by vendor |
auditDetails - ProposalAuditDetails!
|
information used to audit changes in proposals |
status - ClientProposalStatus!
|
status of the client proposal |
annotations - [ClientProposalAnnotation!]!
|
annotations of the client proposal |
Example
{
"id": "4",
"user": GenericUser,
"organization": GenericOrganization,
"job": MarketplaceJobPosting,
"terms": ProposalTerms,
"coverLetter": "xyz789",
"projectPlan": ProposalProjectPlan,
"auditDetails": ProposalAuditDetails,
"status": ClientProposalStatus,
"annotations": ["Recommended"]
}
ClientProposalAnnotation
Description
client proposal annotation
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Recommended"
ClientProposalDeclineRequest
Description
client proposal decline request
Example
{
"proposalId": "4",
"jobPostingId": 4,
"reason": "4",
"otherReason": "xyz789",
"message": "xyz789"
}
ClientProposalEarnedAmount
Description
earnings amount
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"ANY_AMOUNT_EARNED"
ClientProposalEnglishProficiency
Description
english proficiency level
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"ANY_LEVEL"
ClientProposalFilter
Description
client proposal filter
Fields
Input Field | Description |
---|---|
status_eq - ClientProposalStatusName
|
|
annotations_eq - ClientProposalAnnotation
|
|
freelancerId_eq - ID
|
|
chargeRate_eq - ClientProposalHourlyRate
|
|
activityDays_eq - ClientProposalLastActivity
|
|
category_eq - String
|
|
jobSuccessScore_eq - ClientProposalJobSuccessSocre
|
|
earnings_eq - ClientProposalEarnedAmount
|
|
billedHours_eq - ClientProposalHoursBilled
|
|
applierType_eq - ClientProposalTalentType
|
|
topRated_eq - ClientProposalRatedType
|
|
englishLevel_eq - ClientProposalEnglishProficiency
|
|
title_eq - String
|
|
textQuery_eq - String
|
|
country_any - [String!]
|
|
region_any - [String!]
|
|
languages_any - [String!]
|
|
occupationId - ID
|
Example
{
"status_eq": "Created",
"annotations_eq": "Recommended",
"freelancerId_eq": "4",
"chargeRate_eq": "ANY_HOURLY_RATE",
"activityDays_eq": "ANY_TIME",
"category_eq": "xyz789",
"jobSuccessScore_eq": "ANY_JOB_SUCCESS",
"earnings_eq": "ANY_AMOUNT_EARNED",
"billedHours_eq": "ANY_HOURS",
"applierType_eq": "FREELANCER",
"topRated_eq": "TOP_RATED",
"englishLevel_eq": "ANY_LEVEL",
"title_eq": "xyz789",
"textQuery_eq": "xyz789",
"country_any": ["abc123"],
"region_any": ["abc123"],
"languages_any": ["abc123"],
"occupationId": 4
}
ClientProposalHideRequest
Description
client proposal hide request
Example
{
"proposalId": "4",
"jobPostingId": 4,
"hide": true,
"hideReason": "xyz789",
"hideByClientReasonId": "4"
}
ClientProposalHourlyRate
Description
hourly rate
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"ANY_HOURLY_RATE"
ClientProposalHoursBilled
Description
hours billed
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"ANY_HOURS"
ClientProposalJobSuccessSocre
Description
job success score
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ANY_JOB_SUCCESS"
ClientProposalLastActivity
Description
last activity
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"ANY_TIME"
ClientProposalMessageRequest
ClientProposalRatedType
Description
top rated type
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"TOP_RATED"
ClientProposalReadRequest
ClientProposalsConnection
Description
connection to the client proposal list
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [ClientProposalsEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 123,
"edges": [ClientProposalsEdge],
"pageInfo": PageInfo
}
ClientProposalsEdge
Fields
Field Name | Description |
---|---|
cursor - String!
|
|
node - ClientProposal
|
Example
{
"cursor": "abc123",
"node": ClientProposal
}
ClientProposalShortlistRequest
ClientProposalSortAttribute
Fields
Input Field | Description |
---|---|
field - ClientProposalSortAttributeType!
|
|
sortOrder - SortOrder!
|
Example
{"field": "CHARGERATE", "sortOrder": "ASC"}
ClientProposalSortAttributeType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"CHARGERATE"
ClientProposalStatus
Description
client proposal status
Fields
Field Name | Description |
---|---|
status - ClientProposalStatusName!
|
Status of the proposal |
reason - ProposalReason
|
Reason for proposal to switch to current status. Applicable for declined or withdrawn proposals. |
Example
{"status": "Created", "reason": ProposalReason}
ClientProposalStatusName
Description
client proposal status name
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Created"
ClientProposalTalentType
Description
talent type
Values
Enum Value | Description |
---|---|
|
|
|
Example
"FREELANCER"
CreateDirectUploadLinkInput
Description
Input for create direct upload link
Example
{
"fileName": "abc123",
"expirationDate": "xyz789",
"maxFileSize": 123,
"contentType": "abc123",
"sslEnabled": false,
"metaData": "xyz789"
}
FileInfo
Fields
Field Name | Description |
---|---|
id - ID!
|
file uid Ex: "1120653822065278976" |
uploadUrl - String!
|
created using bucket |
formKeyValues - [StringMapElement!]!
|
formKeyValues holds following attributes ......... key Generated from UrlInfoInput- keyPrefix("api/gql/domain/") Ex: "api/gql/domain/77987***********" acl Ex: "private" Content-Disposition Generated from UrlInfoInput- "content-type,fileName,downloadBehaviour("inline | attachment")" Ex: "attachment; filename="abc.txt";filename*=utf-8''abc.txt" AWSAccessKeyId Ex: "ASI**************" policy Generated from UrlInfoInput- "bucket, key, timestamp, maxFileSize, contentType, contentDisposition" signature Generated from formKeyValues' "policy" Content-Type Ex: "application/octet-stream" |
Example
{
"id": "4",
"uploadUrl": "xyz789",
"formKeyValues": [StringMapElement]
}
ProposalAuditDetails
Description
proposal audit details
Fields
Field Name | Description |
---|---|
createdByUser - GenericUser!
|
User that created the proposal |
modifiedByUser - GenericUser
|
Last modifier. Modifiers of a proposal could be either Freelancer, Client, or System. In case of System, modifiedByUser will be null |
createdDateTime - DateTime!
|
Creation date and time, is the date when proposal is created by applying, or date when an invite to interview is accepted. |
modifiedDateTime - DateTime
|
Last modification date and time |
Example
{
"createdByUser": GenericUser,
"modifiedByUser": GenericUser,
"createdDateTime": DateTime,
"modifiedDateTime": DateTime
}
ProposalEngagementDuration
ProposalMetadata
Fields
Field Name | Description |
---|---|
engagementDurationValues - [ProposalEngagementDuration!]!
|
|
reasons - [ReasonsMetadata!]!
|
|
Arguments
|
Example
{
"engagementDurationValues": [
ProposalEngagementDuration
],
"reasons": [ReasonsMetadata]
}
ProposalMilestones
ProposalProjectPlan
Description
project plan is a set of milestones defined by vendor
Fields
Field Name | Description |
---|---|
id - ID!
|
id of the associated project plan |
milestones - [ProposalMilestones!]
|
list of milestones |
Example
{
"id": "4",
"milestones": [ProposalMilestones]
}
ProposalReason
Description
vendor or client proposal reason
Example
{
"id": "4",
"reason": "xyz789",
"description": "xyz789"
}
ProposalTerms
Description
proposal terms, vendor applied on.
Fields
Field Name | Description |
---|---|
chargeRate - Money!
|
Hourly contracts: hourly charge rate or fixed price contracts charge rate |
estimatedDuration - ProposalEngagementDuration
|
duration metadata item |
upfrontPaymentPercent - Float
|
Upfront payment percent. Is NULL in case of hourly contracts. Always 0 or more for fixed price contracts. |
Example
{
"chargeRate": Money,
"estimatedDuration": ProposalEngagementDuration,
"upfrontPaymentPercent": 987.65
}
ProposalUpdateResultStatus
Description
applications with PENDING status"will be retried again by the system
Values
Enum Value | Description |
---|---|
|
|
|
Example
"SUCCESS"
UpdateClientProposalResult
Fields
Field Name | Description |
---|---|
proposal - ClientProposal
|
|
status - ProposalUpdateResultStatus!
|
Example
{"proposal": ClientProposal, "status": "SUCCESS"}
VendorProposal
Description
vendor proposal
Fields
Field Name | Description |
---|---|
id - ID!
|
id of the vendor proposal |
user - GenericUser!
|
connection to the vendor who will be physically working on the job if accepted |
organization - GenericOrganization!
|
connection to the organization to which the vendor belongs. |
marketplaceJobPosting - MarketplaceJobPosting!
|
connection to the job for which vendor is applying to |
terms - ProposalTerms!
|
terms on which freelancer applied on |
coverLetter - String
|
cover letter to accompany the proposal use proposalCoverLetter |
proposalCoverLetter - String
|
cover letter to accompany the proposal |
projectPlan - ProposalProjectPlan
|
connection to the project plan, is a set of milestones defined by vendor |
auditDetails - ProposalAuditDetails!
|
information used to audit changes in proposals |
status - VendorProposalStatus!
|
status of the vendor proposal |
annotations - [VendorProposalAnnotation!]!
|
annotations of the vendor proposal |
Example
{
"id": "4",
"user": GenericUser,
"organization": GenericOrganization,
"marketplaceJobPosting": MarketplaceJobPosting,
"terms": ProposalTerms,
"coverLetter": "xyz789",
"proposalCoverLetter": "xyz789",
"projectPlan": ProposalProjectPlan,
"auditDetails": ProposalAuditDetails,
"status": VendorProposalStatus,
"annotations": ["Hidden"]
}
VendorProposalAnnotation
Description
vendor proposal annotation
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Hidden"
VendorProposalFilter
Description
vendor proposal related filters
Fields
Input Field | Description |
---|---|
status_eq - VendorProposalStatusFilterInput!
|
|
annotations_eq - VendorProposalAnnotation
|
|
freelancerId_eq - ID
|
|
organizationId_eq - ID
|
|
jobPostingIds_any - [ID!]
|
Example
{
"status_eq": "Accepted",
"annotations_eq": "Hidden",
"freelancerId_eq": "4",
"organizationId_eq": "4",
"jobPostingIds_any": ["4"]
}
VendorProposalsConnection
Description
connection to the vendor proposal list
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [VendorProposalsEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [VendorProposalsEdge],
"pageInfo": PageInfo
}
VendorProposalsEdge
Fields
Field Name | Description |
---|---|
cursor - String
|
|
node - VendorProposal
|
Example
{
"cursor": "xyz789",
"node": VendorProposal
}
VendorProposalSortAttribute
Fields
Input Field | Description |
---|---|
field - VendorProposalSortAttributeType!
|
|
sortOrder - SortOrder!
|
Example
{"field": "CREATEDDATETIME", "sortOrder": "ASC"}
VendorProposalSortAttributeType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"CREATEDDATETIME"
VendorProposalStatus
Description
vendor proposal status
Fields
Field Name | Description |
---|---|
status - VendorProposalStatusName!
|
Status name of the proposal |
reason - ProposalReason
|
reason for the proposal |
Example
{"status": "Created", "reason": ProposalReason}
VendorProposalStatusFilterInput
Description
Possible Status filter input for Vendor Proposal Query
Values
Enum Value | Description |
---|---|
|
Application has been created and fully validated |
|
Application has been declined by the client |
|
Application was withdrawn by the freelancer |
|
The freelancer has been sent an Offer, or the Vendor has accepted the invite |
|
Application has been created as a result of an invite accepted by a freelancer |
|
The system has archived all the active applications when the associated job posting is closed |
|
Freelancer accepted the offer, or Vendor accepted the invite with an accepted offer |
|
If the application creation failed temporarily |
Example
"Accepted"
VendorProposalStatusName
Description
vendor proposal status name
Values
Enum Value | Description |
---|---|
|
No longer supported |
|
Application has been created and fully validated. (i.e. FL has submitted a proposal). |
|
Application was declined by the client |
|
Application was wihtdrawn by the freelancer |
|
No longer supported |
|
The freelancer has been sent an Offer by the client | Vendor accepted invite with pending offer |
|
Application is created as a result of an invite accepted by freelancer. (i.e messaging has been initiated between FL and CL) |
|
When job posting is closed, SystemArchive event is called to Archive all the active applications of that jobposting |
|
No longer supported |
|
Freelancer acceped the offer | Vendor accepted invite with accepted offer |
|
When a new application is created, if there is a temp failure in any validation, the application is set with Pending status. |
|
Application which was in Pending due to temp-validation-failure possibly because of internal errors, when the validation was repeated. SOme validation failed. |
Example
"Created"
Offers and Contracts
ActivateMilestoneInput
Actor
ActorType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"System"
AgreementKind
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Offer"
ApproveMilestoneInput
Example
{
"id": 4,
"paidAmount": "xyz789",
"bonusAmount": "xyz789",
"paymentComment": "abc123",
"underpaymentReason": "xyz789",
"noteToContractor": "xyz789"
}
ClientFeedback
ClosingReason
Contract
Description
This schema represents contract data. Note: This is the legacy contract schema implementation, which has been modernized with the ContractDetails schema.
Fields
Field Name | Description |
---|---|
id - ID!
|
Primary key of the contract. Equivalent to the ID of the contract term in ContractDetails. |
title - String
|
|
contractType - ContractType
|
|
job - MarketplaceJobPosting
|
Job rid |
hasAgency - Boolean
|
Provider has agency |
offer - Offer!
|
|
clientProposal - ClientProposal
|
|
weeklyChargeAmount - Money
|
|
weeklyHoursLimit - Float
|
|
hourlyChargeRate - Money
|
|
createdDateTime - String
|
|
firstContractStartDateTime - String
|
|
modifiedDateTime - String
|
|
startDateTime - String
|
|
endDateTime - String
|
|
manualTimeAllowed - Boolean
|
|
hideScreenshots - Boolean
|
Will be removed in future release |
last - Boolean
|
|
weeklyStipendHours - Float
|
|
estimatedDuration - ProposalEngagementDuration
|
Will be removed in future release |
status - ContractState
|
|
suspended - Boolean
|
Will be removed in future release, use developerSuspended/companySuspended in place |
freelancer - FreelancerProfile
|
|
paused - Boolean
|
|
clientCompany - PublicCompanyInfo
|
Public company information |
milestones - [Milestone]
|
Milestones associated with the offer |
contractId - ID
|
|
workDays - [WorkDay!]!
|
|
Arguments
|
|
workDiaryTimeCells - [WorkDiaryTimeCell!]
|
work diary of the current contract |
feedback - Feedback
|
Example
{
"id": "4",
"title": "abc123",
"contractType": "HOURLY",
"job": MarketplaceJobPosting,
"hasAgency": true,
"offer": Offer,
"clientProposal": ClientProposal,
"weeklyChargeAmount": Money,
"weeklyHoursLimit": 987.65,
"hourlyChargeRate": Money,
"createdDateTime": "abc123",
"firstContractStartDateTime": "abc123",
"modifiedDateTime": "abc123",
"startDateTime": "abc123",
"endDateTime": "xyz789",
"manualTimeAllowed": false,
"hideScreenshots": true,
"last": false,
"weeklyStipendHours": 123.45,
"estimatedDuration": ProposalEngagementDuration,
"status": "ACTIVE",
"suspended": true,
"freelancer": FreelancerProfile,
"paused": true,
"clientCompany": PublicCompanyInfo,
"milestones": [Milestone],
"contractId": 4,
"workDays": [WorkDay],
"workDiaryTimeCells": [WorkDiaryTimeCell],
"feedback": Feedback
}
ContractDetails
Fields
Field Name | Description |
---|---|
id - ID!
|
basic contract data |
title - String
|
|
status - ContractStatus
|
|
closingReason - ClosingReason
|
|
deliveryModel - DeliveryModel
|
|
kind - ContractKind
|
|
isPtc - Boolean
|
|
createDate - String
|
dates |
modifyDate - String
|
|
startDate - String
|
|
endDate - String
|
|
offer - Offer
|
offer and opening |
offerId - ID!
|
|
job - JobPosting!
|
|
freelancer - ContractUser!
|
contract vendor/freelancer data |
vendorOrganization - GenericOrganization!
|
|
vendorTeam - GenericOrganization!
|
|
clientOrganization - GenericOrganization!
|
contract client and agency data |
clientTeam - GenericOrganization!
|
|
hiringManager - ContractUser
|
|
agencyManager - ContractUser
|
|
supervisor - ContractUser!
|
contract supervisor |
changingUserType - CreatorType
|
contract changes |
changedBy - ContractUser
|
|
endedBy - ContractUser
|
|
metadata - ContractMetadata
|
|
hourlyLimits - [HourlyLimit]
|
contract terms |
terms - ContractTerms
|
Example
{
"id": 4,
"title": "abc123",
"status": "ACTIVE",
"closingReason": ClosingReason,
"deliveryModel": "TALENT_MARKETPLACE",
"kind": "WEEKLY_RETAINER",
"isPtc": true,
"createDate": "xyz789",
"modifyDate": "abc123",
"startDate": "xyz789",
"endDate": "abc123",
"offer": Offer,
"offerId": 4,
"job": JobPosting,
"freelancer": ContractUser,
"vendorOrganization": GenericOrganization,
"vendorTeam": GenericOrganization,
"clientOrganization": GenericOrganization,
"clientTeam": GenericOrganization,
"hiringManager": ContractUser,
"agencyManager": ContractUser,
"supervisor": ContractUser,
"changingUserType": "CLIENT",
"changedBy": ContractUser,
"endedBy": ContractUser,
"metadata": ContractMetadata,
"hourlyLimits": [HourlyLimit],
"terms": ContractTerms
}
ContractKind
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"WEEKLY_RETAINER"
ContractList
Fields
Field Name | Description |
---|---|
contracts - [ContractDetails]
|
Example
{"contracts": [ContractDetails]}
ContractMetadata
Fields
Field Name | Description |
---|---|
agencyContract - Boolean
|
Example
{"agencyContract": true}
ContractOfferConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [ContractOfferEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [ContractOfferEdge],
"pageInfo": PageInfo
}
ContractOfferEdge
Fields
Field Name | Description |
---|---|
cursor - String!
|
|
node - ContractOfferResult
|
Example
{
"cursor": "abc123",
"node": ContractOfferResult
}
ContractOfferResult
Description
An intermediate search result that contains common information about contract and offer. It contains connection to respective contract / offer additional fields.
Fields
Field Name | Description |
---|---|
id - ID!
|
|
company - GenericOrganization!
|
Owner company |
team - GenericOrganization!
|
Owner team |
contactPerson - GenericUser!
|
Client side contact person for the offer |
freelancer - GenericUser!
|
Freelancer associated with the offer |
agency - GenericOrganization
|
Agency associated with the offer |
startDateTime - String!
|
ContractOffer start date time |
endDateTime - String
|
ContractOffer end date time |
type - ContractOfferType!
|
Type of the offer |
state - ContractOfferState!
|
Current state of the offer |
milestoneState - OfferMilestoneState
|
Current milestone state for fixed price offers |
escrowRefundStatus - EscrowRefundStatus
|
Status of the escrow refund |
title - String!
|
Title of the offer |
lastUpdatedDateTime - String!
|
Date Time when the offer updated for the last time |
lastPublishedDateTime - String
|
Date Time when the offer was published |
inPrivateTalentCloud - Boolean!
|
Whether in PTC |
offerCreatedDateTime - String!
|
Date Time when the offer was created |
offer - Offer
|
Details of the associated Offer |
contract - Contract
|
Details of the associated Contract. |
contractDetails - ContractDetails
|
ContractDetails of the associated Contract |
catalogProject - Boolean
|
Example
{
"id": 4,
"company": GenericOrganization,
"team": GenericOrganization,
"contactPerson": GenericUser,
"freelancer": GenericUser,
"agency": GenericOrganization,
"startDateTime": "xyz789",
"endDateTime": "xyz789",
"type": "Hourly",
"state": "Pending",
"milestoneState": "NotFunded",
"escrowRefundStatus": "Open",
"title": "abc123",
"lastUpdatedDateTime": "abc123",
"lastPublishedDateTime": "xyz789",
"inPrivateTalentCloud": false,
"offerCreatedDateTime": "xyz789",
"offer": Offer,
"contract": Contract,
"contractDetails": ContractDetails,
"catalogProject": false
}
ContractOfferState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"Pending"
ContractOfferType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Hourly"
ContractOptionsInput
ContractPaging
ContractPagingInput
ContractProposal
Description
Freelancers can propose a contract to a client
Example
{
"id": 4,
"state": "xyz789",
"updatedDateTime": "xyz789",
"createdDateTime": "xyz789",
"canClientOfferBeAccepted": false
}
ContractSearchResults
Fields
Field Name | Description |
---|---|
paging - ContractPaging
|
|
contracts - [ContractDetails]
|
Example
{
"paging": ContractPaging,
"contracts": [ContractDetails]
}
ContractState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
ContractStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ACTIVE"
ContractTerms
Fields
Field Name | Description |
---|---|
fixedPriceTerms - [FixedPriceContractTerm]
|
|
hourlyTerms - [HourlyContractTerm]
|
|
stipendTerms - [StipendContractTerm]
|
Example
{
"fixedPriceTerms": [FixedPriceContractTerm],
"hourlyTerms": [HourlyContractTerm],
"stipendTerms": [StipendContractTerm]
}
ContractUser
Example
{
"id": 4,
"rid": 4,
"name": "abc123",
"photoUrl": "xyz789",
"firstName": "abc123",
"lastName": "abc123",
"address": UserLocation,
"email": "xyz789"
}
CreateMilestoneInput
Example
{
"offerId": "4",
"contractId": "4",
"description": "abc123",
"instruction": "xyz789",
"depositAmount": "abc123",
"dueDate": "abc123",
"attachmentIds": ["4"]
}
CreatorType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLIENT"
CustomFields
Fields
Field Name | Description |
---|---|
responseId - ID
|
unique identification for the response |
id - ID
|
unique identification for the custom field |
itemId - ID
|
if the response belongs to a dropdown type, item id refers to the custom field dropdown item primary key, unique identification for the dropdown item |
typeSnap - CustomFieldsTypeSnap
|
type snap |
labelSnap - String
|
label snap |
displayValueSnap - String
|
display value snap |
creator - GenericUser
|
custom field creator |
createdDateTime - DateTime
|
creation date dime use firstContractId |
rollupAssignmentId - ID
|
|
firstContractId - ID
|
top level (first contract in chain of contracts) contract. rate changes on this contract will preserve the rollup in the new contract |
offerId - ID
|
offer id |
jobPostingId - ID
|
job posting id |
byoInvitationId - ID
|
for bringYourOwnFreelancer. since the offer doesn't exist yet at time of invite, it's stored against the byo invite and saved to the offer, then contract by the byo service when the invitation has been responded to |
buyItNowId - ID
|
for buy it now - the predefined work package |
questionnaireResponsesId - ID
|
for classif and fl/cl questionnaires which use custom fields as their storage backend |
stale - Boolean
|
stale flag |
termSectionId - ID
|
for default terms. used by the default terms system within enterprise |
aclSnap - String
|
acl Snapshot indiciating the custom field access level. Possible values are 1. COMPANY, 2. TEAM: |
Example
{
"responseId": "4",
"id": 4,
"itemId": "4",
"typeSnap": "TEXT_FIELD",
"labelSnap": "xyz789",
"displayValueSnap": "xyz789",
"creator": GenericUser,
"createdDateTime": DateTime,
"rollupAssignmentId": 4,
"firstContractId": 4,
"offerId": 4,
"jobPostingId": 4,
"byoInvitationId": "4",
"buyItNowId": 4,
"questionnaireResponsesId": "4",
"stale": false,
"termSectionId": "4",
"aclSnap": "xyz789"
}
CustomFieldsConnection
Fields
Field Name | Description |
---|---|
edges - [CustomFieldsEdge]
|
|
pageInfo - PageInfo
|
Example
{
"edges": [CustomFieldsEdge],
"pageInfo": PageInfo
}
CustomFieldsEdge
Fields
Field Name | Description |
---|---|
cursor - String!
|
|
node - CustomFields
|
Example
{
"cursor": "abc123",
"node": CustomFields
}
CustomFieldsInput
Description
custom fields input parameters
Fields
Input Field | Description |
---|---|
responseIds - [ID!]
|
each id is a unique identification for the response |
ids - [ID!]
|
each id is a unique identification for the custom field |
itemIds - [ID!]
|
for each id if the response belongs to a dropdown type, item id refers to the custom field dropdown item primary key, unique identification for the dropdown item |
rollupAssignmentIds - [ID!]
|
each id poitns to top level (first contract in chain of contracts) contract. rate changes on this contract will preserve the rollup in the new contract deprecated(reason: "use firstContractIds") |
firstContractIds - [ID!]
|
each id poitns to top level (first contract in chain of contracts) contract. rate changes on this contract will preserve the rollup in the new contract. created to be used instead of rollupAssignmentIds & take precedence of that field if specified |
offerIds - [ID!]
|
offers ids |
jobPostingIds - [ID!]
|
job posting ids |
byoInvitationIds - [ID!]
|
each id is for bringYourOwnFreelancer. since the offer doesn't exist yet at time of invite, it's stored against the byo invite and saved to the offer, then contract by the byo service when the invitation has been responded to |
buyItNowIds - [ID!]
|
each id is for buy it now - the predefined work package |
questionnaireResponsesIds - [ID!]
|
each id points to classif and fl/cl questionnaires which use custom fields as their storage backend |
organizationIds - [ID!]
|
If organizationIds are specified, only responses belonging to custom fields accessible by hiring managers in the specified teams will be returned. These organizationIds can be 'team OrganizationIds' or 'root organizationId'. Custom fields that are accessible/visible through out the COMPANY are always included in the response. |
Example
{
"responseIds": [4],
"ids": [4],
"itemIds": ["4"],
"rollupAssignmentIds": [4],
"firstContractIds": ["4"],
"offerIds": ["4"],
"jobPostingIds": [4],
"byoInvitationIds": [4],
"buyItNowIds": ["4"],
"questionnaireResponsesIds": [4],
"organizationIds": [4]
}
CustomFieldsTypeSnap
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TEXT_FIELD"
DeleteMilestoneInput
Fields
Input Field | Description |
---|---|
id - ID!
|
Example
{"id": 4}
DeliveryModel
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TALENT_MARKETPLACE"
EditMilestoneInput
Example
{
"id": 4,
"description": "abc123",
"instructions": "abc123",
"depositAmount": "abc123",
"dueDate": "xyz789",
"attachments": ["4"],
"message": "xyz789",
"sequenceId": 123
}
EscrowRefundStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"Open"
Feedback
Fields
Field Name | Description |
---|---|
clientFeedback - ClientFeedback
|
|
freelancerFeedback - FreelancerFeedback
|
Example
{
"clientFeedback": ClientFeedback,
"freelancerFeedback": FreelancerFeedback
}
FixedPriceContractTerm
Fields
Field Name | Description |
---|---|
id - ID!
|
|
fpCharge - Money
|
|
fixedAmount - Money
|
|
createDate - String
|
|
modifyDate - String
|
|
changeDate - String
|
|
createdBy - ContractUser
|
|
creatorUserType - CreatorType
|
|
changedBy - ContractUser
|
|
startDate - String
|
|
changingUserType - CreatorType
|
|
isFP2 - Boolean
|
|
endDate - String
|
|
jobType - JobType
|
|
ptcData - PtcData
|
|
milestones - [Milestone]
|
Example
{
"id": "4",
"fpCharge": Money,
"fixedAmount": Money,
"createDate": "abc123",
"modifyDate": "abc123",
"changeDate": "xyz789",
"createdBy": ContractUser,
"creatorUserType": "CLIENT",
"changedBy": ContractUser,
"startDate": "abc123",
"changingUserType": "CLIENT",
"isFP2": false,
"endDate": "xyz789",
"jobType": "FIXED",
"ptcData": PtcData,
"milestones": [Milestone]
}
FixedPriceTerm
Description
Terms for fixed priced offer
Fields
Field Name | Description |
---|---|
budget - Money
|
Example
{"budget": Money}
FreelancerFeedback
HourlyContractTerm
Fields
Field Name | Description |
---|---|
id - ID!
|
|
hourlyRate - Money
|
|
createDate - String
|
|
modifyDate - String
|
|
changeDate - String
|
|
createdBy - ContractUser
|
|
creatorUserType - CreatorType
|
|
changedBy - ContractUser
|
|
startDate - String
|
|
changingUserType - CreatorType
|
|
manualTimeAllowed - Boolean
|
|
endDate - String
|
|
jobType - JobType
|
|
ptcData - PtcData
|
Example
{
"id": 4,
"hourlyRate": Money,
"createDate": "abc123",
"modifyDate": "abc123",
"changeDate": "xyz789",
"createdBy": ContractUser,
"creatorUserType": "CLIENT",
"changedBy": ContractUser,
"startDate": "xyz789",
"changingUserType": "CLIENT",
"manualTimeAllowed": true,
"endDate": "abc123",
"jobType": "FIXED",
"ptcData": PtcData
}
HourlyLimit
Example
{
"id": 4,
"weeklyLimit": "xyz789",
"createDate": "abc123",
"modifyDate": "xyz789",
"startDate": "xyz789",
"endDate": "abc123",
"legacyId": 987
}
HourlyTerms
Description
Terms for hourly rate offer
Fields
Field Name | Description |
---|---|
rate - Money
|
Hourly rate amount |
weeklyHoursLimit - Int
|
Max hours can be worked for a week |
weeklyStipend - Money
|
Weekly stipend amount, if in stipened mode Will be removed in future release, use modernized StipendTerms |
manualTimeAllowed - Boolean
|
Flag to indicate whether manual time log is allowed |
Example
{
"rate": Money,
"weeklyHoursLimit": 123,
"weeklyStipend": Money,
"manualTimeAllowed": true
}
JobType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"FIXED"
Metadata
Fields
Field Name | Description |
---|---|
sourceType - SourceType
|
the source type |
sourceId - ID
|
source id, it could be empty according the case |
data - String
|
data in a json format |
occupationUid - ID
|
occupation uid |
Example
{
"sourceType": "JobPosting",
"sourceId": 4,
"data": "abc123",
"occupationUid": "4"
}
Milestone
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the milestone |
createdBy - GenericUser
|
User information who created the milestone |
dueDateTime - String
|
Due date time of the milestone |
state - OfferMilestoneState
|
Current state of the offer |
description - String
|
Description available with the milestone |
currentEscrowAmount - Money
|
|
depositAmount - Money
|
|
fundedAmount - Money
|
|
paid - Money
|
|
overpayment - Money
|
|
bonus - Money
|
|
previousMilestoneUnusedDeposit - Money
|
|
submissionCount - Int
|
|
sequenceId - Int
|
The sequence in which the milestone is to be executed |
payComments - String
|
|
lastSubmissionCreatedTime - String
|
|
createdDateTime - String
|
Creation date for the milestone |
modifiedDateTime - String
|
Update date for the milestone |
instructions - String
|
|
submissionEvents - [SubmissionEvent!]!
|
Example
{
"id": "4",
"createdBy": GenericUser,
"dueDateTime": "xyz789",
"state": "NotFunded",
"description": "abc123",
"currentEscrowAmount": Money,
"depositAmount": Money,
"fundedAmount": Money,
"paid": Money,
"overpayment": Money,
"bonus": Money,
"previousMilestoneUnusedDeposit": Money,
"submissionCount": 123,
"sequenceId": 123,
"payComments": "xyz789",
"lastSubmissionCreatedTime": "abc123",
"createdDateTime": "abc123",
"modifiedDateTime": "abc123",
"instructions": "abc123",
"submissionEvents": [SubmissionEvent]
}
MilestoneRejectionResponse
Fields
Field Name | Description |
---|---|
response - Boolean
|
Example
{"response": false}
MilestoneTerms
Description
Terms for milestones (AKA Fixed priced)
Fields
Field Name | Description |
---|---|
budget - Money
|
Hourly rate amount |
milestones - [Milestone!]
|
milestone list |
Example
{
"budget": Money,
"milestones": [Milestone]
}
ModernizedOffer
Fields
Field Name | Description |
---|---|
id - ID!
|
offer id |
kind - OfferKind
|
kind |
offeror - Offeror
|
who creates the offer |
clientUserId - ID!
|
client user id |
clientTeamId - ID!
|
client team uid |
clientOrgId - ID
|
client org uid |
vendorUserId - ID!
|
vendor uid |
vendorTeamId - ID
|
vendor team uid, in case of agency |
vendorOrgId - ID
|
vendor org ui, it could be the sole propriator |
actors - [Actor]
|
other participants in the offer |
metadata - Metadata
|
metadata associated to the offer |
expirationDateTime - String
|
expiration time |
title - String!
|
title |
description - String
|
offer's description |
attachments - [ID]
|
attachments |
contractStartDateTime - String
|
contract start date |
contractEndDateTime - String
|
contract end date |
hourlyRateTerms - HourlyTerms
|
hourly terms |
stipendTerms - StipendTerms
|
stipend terms |
milestoneTerms - MilestoneTerms
|
milestone terms |
deliveryModel - OfferDeliveryModel
|
Delivery model |
state - WorkflowOfferState!
|
offer state |
staffingManagerId - ID
|
staffing manager uid |
contractId - ID
|
contract id associated to the offer, once offer is accepted |
agencyRootCompanyId - ID
|
agency root organization id |
instanceId - ID
|
the current offer id |
client - GenericOrganization!
|
Connection to the client associated with the offer |
clientCompany - PublicCompanyInfo
|
Public company information |
createdDateTime - String
|
The creation date of the offer |
lastEvent - OfferLastEvent
|
Last event on offer |
Example
{
"id": 4,
"kind": "HourlyPack",
"offeror": "Client",
"clientUserId": "4",
"clientTeamId": 4,
"clientOrgId": "4",
"vendorUserId": "4",
"vendorTeamId": "4",
"vendorOrgId": 4,
"actors": [Actor],
"metadata": Metadata,
"expirationDateTime": "xyz789",
"title": "xyz789",
"description": "abc123",
"attachments": ["4"],
"contractStartDateTime": "xyz789",
"contractEndDateTime": "xyz789",
"hourlyRateTerms": HourlyTerms,
"stipendTerms": StipendTerms,
"milestoneTerms": MilestoneTerms,
"deliveryModel": "TalentMarketplace",
"state": "Submitted",
"staffingManagerId": 4,
"contractId": "4",
"agencyRootCompanyId": "4",
"instanceId": 4,
"client": GenericOrganization,
"clientCompany": PublicCompanyInfo,
"createdDateTime": "abc123",
"lastEvent": OfferLastEvent
}
Offer
Description
Details information about offer
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the offer |
title - String!
|
Title of the offer |
description - String
|
Description of the offer |
type - OfferType!
|
Type of the offer like Hourley/Fixed price etc. |
job - MarketplaceJobPosting
|
Job post associated with the offer |
vendorProposal - VendorProposal
|
Job Application associated with the offer |
closeJobPostingOnAccept - Boolean!
|
Flag to indicate whether posting will be closed when offer is accepted |
client - GenericOrganization!
|
Connection to the client associated with the offer |
offerTerms - OfferTerms!
|
|
messageToContractor - String
|
Message for the contractor |
state - OfferState
|
Current sate of the offer like, new, accepted, declined etc. |
offerFeatures - OfferFeatures
|
Different features of the enterprise related offer |
clientCompany - PublicCompanyInfo
|
Public company information |
milestones - [Milestone]
|
Milestones associated with the offer |
createdUsingBYOFlow - Boolean!
|
was this offer created via the Bring Your Own Freelancer flow |
freelancer - FreelancerProfile!
|
Freelancer profile associated to the offer |
payrollOffer - Boolean
|
Flag to indicate whether this is a payroll offer |
deliveryModel - OfferDeliveryModel
|
Delivery model |
customFields - CustomFieldsConnection
|
Custom fields attached to this particular Offer. The response can optionally be filtered by organizationIds. If organizationIds are specified, only responses of custom fields accessible by hiring managers in the specified teams will be returned. These organizationIds can be 'team OrganizationIds' or 'root organizationId'. Custom fields that are accessible/visible through out the COMPANY are always included in the response. |
Arguments
|
Example
{
"id": 4,
"title": "abc123",
"description": "xyz789",
"type": "MARKET_PLACE_HOURLY",
"job": MarketplaceJobPosting,
"vendorProposal": VendorProposal,
"closeJobPostingOnAccept": false,
"client": GenericOrganization,
"offerTerms": OfferTerms,
"messageToContractor": "abc123",
"state": "DRAFT",
"offerFeatures": OfferFeatures,
"clientCompany": PublicCompanyInfo,
"milestones": [Milestone],
"createdUsingBYOFlow": false,
"freelancer": FreelancerProfile,
"payrollOffer": false,
"deliveryModel": "TalentMarketplace",
"customFields": CustomFieldsConnection
}
OfferAddressInput
OfferByClientFilter
Fields
Input Field | Description |
---|---|
teamId_any - [ID!]
|
|
contactPersonId_any - [ID!]
|
|
offerType_any - [ContractOfferType!]
|
|
milestoneState_any - [OfferMilestoneState!]
|
|
escrowRefundStatus_any - [EscrowRefundStatus!]
|
|
freelancerId_any - [ID!]
|
|
agreementKind_any - [AgreementKind!]
|
|
commonFilter - OfferSearchCommonFilter
|
Example
{
"teamId_any": [4],
"contactPersonId_any": ["4"],
"offerType_any": ["Hourly"],
"milestoneState_any": ["NotFunded"],
"escrowRefundStatus_any": ["Open"],
"freelancerId_any": [4],
"agreementKind_any": ["Offer"],
"commonFilter": OfferSearchCommonFilter
}
OfferByRootCompanyFilter
Fields
Input Field | Description |
---|---|
freelancerId_any - [ID!]
|
|
agencyTeamOrgId_any - [ID!]
|
|
clientOrgId_any - [ID!]
|
|
commonFilter - OfferSearchCommonFilter
|
Example
{
"freelancerId_any": [4],
"agencyTeamOrgId_any": [4],
"clientOrgId_any": [4],
"commonFilter": OfferSearchCommonFilter
}
OfferDeliveryModel
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TalentMarketplace"
OfferFeatures
Description
Features associated with the enterprise related offer
Fields
Field Name | Description |
---|---|
purchaseOrder - PurchaseOrder
|
|
privateTalentCloud - PrivateTalentCloud
|
|
onSiteType - OfferWorkType
|
|
country - Country
|
|
state - String
|
|
localDescription - String
|
|
localFlexibilityDescription - String
|
|
eor - Boolean
|
"Employer of Record" referred to as the W-2 Employer of Record because they are responsible for issuing W-2s (Wage and Tax Statement) to the employee shoulders the responsibility for all the traditional employment tasks and liabilities. When the invited freelancer accepts this invitation, the freelancer is added to the specific Upwork agency entity as a contractor |
Example
{
"purchaseOrder": PurchaseOrder,
"privateTalentCloud": PrivateTalentCloud,
"onSiteType": "REMOTE",
"country": Country,
"state": "xyz789",
"localDescription": "xyz789",
"localFlexibilityDescription": "xyz789",
"eor": true
}
OfferForFreelancerFilter
Fields
Input Field | Description |
---|---|
agencyRootCompanyOrgId_any - [ID!]
|
|
agencyTeamOrgId_any - [ID!]
|
|
clientOrgId_any - [ID!]
|
|
commonFilter - OfferSearchCommonFilter
|
Example
{
"agencyRootCompanyOrgId_any": [4],
"agencyTeamOrgId_any": ["4"],
"clientOrgId_any": ["4"],
"commonFilter": OfferSearchCommonFilter
}
OfferKind
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"HourlyPack"
OfferLastEvent
OfferLegacyState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Draft"
OfferList
Fields
Field Name | Description |
---|---|
offers - [Offer]
|
list of offers |
Example
{"offers": [Offer]}
OfferLocationInput
Fields
Input Field | Description |
---|---|
workType - OfferWorkType
|
|
country - String
|
Can be retrieved by Query countries: [Country!]! |
state - String
|
Can be retrieved by Query location{state} |
description - String
|
|
flexible - Boolean
|
|
flexibilityDescription - String
|
|
city - String
|
Can be retrieved by Query location{state} |
address - OfferAddressInput
|
Example
{
"workType": "REMOTE",
"country": "abc123",
"state": "xyz789",
"description": "xyz789",
"flexible": true,
"flexibilityDescription": "xyz789",
"city": "abc123",
"address": OfferAddressInput
}
OfferMilestoneState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NotFunded"
Offeror
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Client"
OfferorInput
Values
Enum Value | Description |
---|---|
|
Example
"Client"
OfferPayrollInput
OfferSearchAttribute
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"JobApplication"
OfferSearchCommonFilter
Fields
Input Field | Description |
---|---|
text_eq - String
|
|
states_any - [ContractOfferState!]
|
|
startDatePeriod_bt - [String!]
|
|
endDatePeriod_bt - [String!]
|
|
catalogProject - Boolean
|
Example
{
"text_eq": "abc123",
"states_any": ["Pending"],
"startDatePeriod_bt": ["abc123"],
"endDatePeriod_bt": ["abc123"],
"catalogProject": true
}
OfferState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DRAFT"
OfferTerms
Description
Terms associated with the offer
Fields
Field Name | Description |
---|---|
expectedStartDate - String
|
Expected start date of offer |
expectedEndDate - String
|
Expected end date of offer |
fixedPriceTerm - FixedPriceTerm
|
Offer terms for fixed price |
hourlyTerms - HourlyTerms
|
Offer terms for hourly rate |
Example
{
"expectedStartDate": "abc123",
"expectedEndDate": "xyz789",
"fixedPriceTerm": FixedPriceTerm,
"hourlyTerms": HourlyTerms
}
OfferType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"MARKET_PLACE_HOURLY"
OfferWorkType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"REMOTE"
PeriodType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Weekly"
PtcData
PurchaseOrder
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the PO |
orderNumber - String!
|
The order number to be displayed to the user |
description - String
|
Description associated with the offer, if any |
amount - Money!
|
PO amount |
expiresAtDateTime - String
|
Time for experince of the model |
aclType - PurchaseOrderAclType!
|
Controls who can see/use this PO |
aclSpecification - String
|
|
archived - Boolean!
|
|
placeHolder - Boolean!
|
True if "I don't have it yet" is enabled and selected |
createdAtDateTime - String!
|
|
creator - GenericUser!
|
|
alertThreshold - String
|
Percentage of spend used at which point user shall be notified |
notificationAlcType - PurchaseOrderNotificationAclType
|
Controls who gets notified |
notificationAlcSpecification - String
|
Example
{
"id": 4,
"orderNumber": "abc123",
"description": "xyz789",
"amount": Money,
"expiresAtDateTime": "xyz789",
"aclType": "HMS_IN_COMPANY",
"aclSpecification": "abc123",
"archived": true,
"placeHolder": false,
"createdAtDateTime": "xyz789",
"creator": GenericUser,
"alertThreshold": "xyz789",
"notificationAlcType": "ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY",
"notificationAlcSpecification": "xyz789"
}
PurchaseOrderAclType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"HMS_IN_COMPANY"
PurchaseOrderNotificationAclType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY"
RejectMilestoneSubmissionInput
SearchOffersByAttributesInput
Fields
Input Field | Description |
---|---|
ids - [ID!]!
|
List of ids of attributes |
searchAttribute - OfferSearchAttribute!
|
attribute to search offers by |
includeAttachments - Boolean
|
indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true |
includeMilestones - Boolean
|
indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true |
Example
{
"ids": [4],
"searchAttribute": "JobApplication",
"includeAttachments": false,
"includeMilestones": true
}
SearchOffersByIdInput
Fields
Input Field | Description |
---|---|
ids - [ID!]
|
offers ids |
includeAttachments - Boolean
|
indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true |
includeMilestones - Boolean
|
indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true |
Example
{
"ids": ["4"],
"includeAttachments": true,
"includeMilestones": true
}
SearchOffersInput
Fields
Input Field | Description |
---|---|
id - ID!
|
Id of the attribute |
searchAttribute - OfferSearchAttribute!
|
attribute to search offers by |
states - [OfferLegacyState!]
|
legacy offer states to search by |
limit - Int
|
size of a single page, '0' means unlimited, default 10. Default = 10 |
page - Int
|
page number starting from '1', default 1. Default = 1 |
ascendingOrder - Boolean
|
wherever order of offers should be ascending, default true. Default = true |
includeAttachments - Boolean
|
indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true |
includeMilestones - Boolean
|
indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true |
Example
{
"id": "4",
"searchAttribute": "JobApplication",
"states": ["Draft"],
"limit": 987,
"page": 987,
"ascendingOrder": false,
"includeAttachments": true,
"includeMilestones": false
}
SourceType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"JobPosting"
StipendContractTerm
Fields
Field Name | Description |
---|---|
id - String!
|
|
createDate - String
|
|
modifyDate - String
|
|
changeDate - String
|
|
createdBy - ContractUser
|
|
creatorUserType - CreatorType
|
|
changedBy - ContractUser
|
|
minGuaranteedHours - String
|
|
stipendAmount - Money
|
|
startDate - String
|
|
changingUserType - CreatorType
|
|
endDate - String
|
|
jobType - JobType
|
|
ptcData - PtcData
|
Example
{
"id": "abc123",
"createDate": "xyz789",
"modifyDate": "xyz789",
"changeDate": "xyz789",
"createdBy": ContractUser,
"creatorUserType": "CLIENT",
"changedBy": ContractUser,
"minGuaranteedHours": "xyz789",
"stipendAmount": Money,
"startDate": "xyz789",
"changingUserType": "CLIENT",
"endDate": "xyz789",
"jobType": "FIXED",
"ptcData": PtcData
}
StipendTerms
Description
Terms for Stipend
Fields
Field Name | Description |
---|---|
stipend - Money
|
Stipend amount |
vendorRate - Money
|
Vendor hourly rate |
period - PeriodType
|
Period of time, default is weekly |
Example
{
"stipend": Money,
"vendorRate": Money,
"period": "Weekly"
}
Submission
SubmissionEvent
Fields
Field Name | Description |
---|---|
submission - Submission!
|
|
submissionMessage - SubmissionMessage
|
|
revisionMessage - SubmissionMessage
|
Example
{
"submission": Submission,
"submissionMessage": SubmissionMessage,
"revisionMessage": SubmissionMessage
}
SubmissionMessage
VendorContractSearchFilter
Description
vendorId - Vendor UID, mandatory startDateBefore - Vendor's contracts start-date must be before this value, date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd, optional endDateAfter - Vendor's contracts end-date must be after this value, date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd, optional
Example
{
"vendorId": "4",
"startDateBefore": "abc123",
"endDateAfter": "xyz789"
}
WorkflowOfferState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Submitted"
Reporting
BPAPrivateDataFilter
TransactionHistory
Fields
Field Name | Description |
---|---|
transactionDetail - TransactionHistoryDetail
|
Group of non-pending transactions |
Example
{"transactionDetail": TransactionHistoryDetail}
TransactionHistoryDetail
Fields
Field Name | Description |
---|---|
transactionHistoryRow - [TransactionHistoryRow!]
|
Example
{"transactionHistoryRow": [TransactionHistoryRow]}
TransactionHistoryFilter
Fields
Input Field | Description |
---|---|
bpaPrivateData - BPAPrivateDataFilter
|
|
aceIds_any - [ID!]!
|
List of accounting entity ids whose transactions have to be collected |
transactionDateTime_bt - DateTimeRange!
|
Minimal and Maximum date of selected transactions. Date should be in yyyy-mm-dd format. |
agencyCompanyIds_any - [ID!]
|
|
agencyCompanyUids_any - [ID!]
|
Filter transactions related to one of these agency (using Uid) |
developerIds_any - [ID!]
|
Filter transactions related to one of these developers |
trxSubtypes_any - [String!]
|
Filter transaction related to one of listed subtypes |
Example
{
"bpaPrivateData": BPAPrivateDataFilter,
"aceIds_any": [4],
"transactionDateTime_bt": DateTimeRange,
"agencyCompanyIds_any": ["4"],
"agencyCompanyUids_any": ["4"],
"developerIds_any": ["4"],
"trxSubtypes_any": ["xyz789"]
}
TransactionHistoryRow
Fields
Field Name | Description |
---|---|
rowNumber - Int
|
|
runningChargeableBalance - Money
|
|
recordId - ID
|
|
remainder - String
|
|
amountCreditedToUser - Money
|
|
transactionReviewDueDate - String
|
|
transactionCreationDate - String
|
|
relatedUserPaymentMethod - Int
|
|
accountingSubtype - String
|
|
descriptionUI - String
|
|
relatedAssignment - Int
|
|
amountSentInOrigCurrency - Money
|
|
paymentGuaranteed - Boolean
|
|
fixedPriceEARMark - Int
|
|
relatedTransactionId - ID
|
|
relatedInvoiceId - ID
|
|
fullyPaidDate - String
|
|
type - String
|
|
transactionAmount - Money
|
|
relatedAccountingEntity - Int
|
|
description - String
|
|
purchaseOrderNumber - String
|
|
assignmentAgencyName - String
|
|
assignmentCompanyName - String
|
|
assignmentDeveloperName - String
|
|
assignmentTeamCompanyId - ID
|
|
assignmentTeamCompanyReference - Int
|
|
assignmentTeamId - ID
|
|
assignmentTeamReference - Int
|
|
assignmentTeamUserId - ID
|
|
assignmentTeamUserReference - Int
|
|
payment - Money
|
|
paymentStatus - String
|
|
prefix - String
|
Example
{
"rowNumber": 987,
"runningChargeableBalance": Money,
"recordId": 4,
"remainder": "abc123",
"amountCreditedToUser": Money,
"transactionReviewDueDate": "xyz789",
"transactionCreationDate": "xyz789",
"relatedUserPaymentMethod": 987,
"accountingSubtype": "abc123",
"descriptionUI": "abc123",
"relatedAssignment": 123,
"amountSentInOrigCurrency": Money,
"paymentGuaranteed": false,
"fixedPriceEARMark": 987,
"relatedTransactionId": "4",
"relatedInvoiceId": "4",
"fullyPaidDate": "xyz789",
"type": "abc123",
"transactionAmount": Money,
"relatedAccountingEntity": 123,
"description": "abc123",
"purchaseOrderNumber": "xyz789",
"assignmentAgencyName": "abc123",
"assignmentCompanyName": "xyz789",
"assignmentDeveloperName": "abc123",
"assignmentTeamCompanyId": 4,
"assignmentTeamCompanyReference": 987,
"assignmentTeamId": 4,
"assignmentTeamReference": 123,
"assignmentTeamUserId": "4",
"assignmentTeamUserReference": 987,
"payment": Money,
"paymentStatus": "abc123",
"prefix": "xyz789"
}
Job Posts
AccessType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PUBLIC_INDEX"
ApplicationsBidStats
Area
AreaFilter
AreaType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"CITY"
AutoReviewStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"APPROVED"
CompanyJobPostingStatusAccess
Description
Filter input based on status and Access type for Job search
Fields
Input Field | Description |
---|---|
statuses_any - [JobPostingStatus!]
|
|
accesses_any - [AccessType!]
|
Example
{"statuses_any": ["REQUESTED"], "accesses_any": ["PUBLIC_INDEX"]}
ContractorType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ALL"
CustomFieldDropDown
Example
{
"id": 4,
"customFieldId": 4,
"value": "abc123",
"displayValue": "xyz789",
"orderIndex": 987,
"description": "xyz789",
"inUse": false,
"active": true,
"aclType": "COMPANY",
"teamRids": ["xyz789"]
}
CustomFieldsResponse
CustomJobPostSkill
DropdownAclType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"COMPANY"
Earning
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"ANY"
EngagementType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"FULL_TIME"
EnglishProficiency
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"ANY"
EnglishSkill
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"ANY_LEVEL"
ExperienceLevel
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ENTRY_LEVEL"
FixedPriceContractTerms
Fields
Field Name | Description |
---|---|
amount - Money!
|
|
maxAmount - Money
|
|
engagementDuration - EngagementDuration
|
Example
{
"amount": Money,
"maxAmount": Money,
"engagementDuration": EngagementDuration
}
FreelancerClientRelation
Example
{
"companyRid": "4",
"companyName": "xyz789",
"edcUserId": 4,
"lastContractPlatform": "abc123",
"lastContractRid": 4,
"lastContractTitle": "abc123"
}
HourlyContractTerms
Fields
Field Name | Description |
---|---|
engagementDuration - EngagementDuration
|
|
engagementType - EngagementType!
|
|
notSureProjectDuration - Boolean
|
|
hourlyBudgetType - JobPostingHourlyBudgetType
|
|
hourlyBudgetMin - Float
|
|
hourlyBudgetMax - Float
|
Example
{
"engagementDuration": EngagementDuration,
"engagementType": "FULL_TIME",
"notSureProjectDuration": false,
"hourlyBudgetType": "DEFAULT",
"hourlyBudgetMin": 987.65,
"hourlyBudgetMax": 123.45
}
JobActivity
Example
{
"lastClientActivity": "xyz789",
"invitesSent": 123,
"totalInvitedToInterview": 987,
"totalHired": 123,
"totalUnansweredInvites": 123,
"totalOffered": 123,
"totalRecommended": 123
}
JobDuration
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
Example
"WEEK"
JobFeaturePrediction
JobPostBillRate
Fields
Input Field | Description |
---|---|
billRateCode - String!
|
Example
{"billRateCode": "xyz789"}
JobPostEnterpriseCustomFields
JobPosting
Description
Management side JobPosting information
Fields
Field Name | Description |
---|---|
id - ID!
|
|
info - JobPostingInfo
|
|
visibility - AccessType
|
|
ownership - JobPostingOwnership
|
|
content - JobPostingContent
|
|
attachment - [JobPostingAttachment!]
|
|
classification - JobPostingClassification
|
|
segmentationData - JobPostingSegmentationData
|
|
contractTerms - JobPostingContractTerms
|
Contract information of the Posting |
contractorSelection - JobPostingContractorSelection
|
|
additionalInfo - JobPostingAdditionalInfo
|
|
ptcInfo - JobPostingPtcInfo
|
|
proposalsStatistics - ProposalsStatistics
|
|
customFields - [JobPostingCustomFields]
|
Example
{
"id": "4",
"info": JobPostingInfo,
"visibility": "PUBLIC_INDEX",
"ownership": JobPostingOwnership,
"content": JobPostingContent,
"attachment": [JobPostingAttachment],
"classification": JobPostingClassification,
"segmentationData": JobPostingSegmentationData,
"contractTerms": JobPostingContractTerms,
"contractorSelection": JobPostingContractorSelection,
"additionalInfo": JobPostingAdditionalInfo,
"ptcInfo": JobPostingPtcInfo,
"proposalsStatistics": ProposalsStatistics,
"customFields": [JobPostingCustomFields]
}
JobPostingAccess
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PUBLIC_INDEX"
JobPostingAdditionalInfo
Example
{
"clientNumberOfHiresOnCreate": 987,
"clientTotalSpentOnCreate": Money,
"directHire": true,
"invitePost": false,
"lastBuyerActivity": "xyz789"
}
JobPostingAdditionalRequest
JobPostingAdditionalSkillInput
JobPostingAnnotations
Fields
Input Field | Description |
---|---|
tags - [String]
|
|
customFields - [JobPostingAnnotationsCustomField]
|
Example
{
"tags": ["abc123"],
"customFields": [JobPostingAnnotationsCustomField]
}
JobPostingAnnotationsCustomField
JobPostingAttachment
Example
{
"id": 4,
"sequenceNumber": 987,
"fileName": "abc123",
"link": "abc123",
"afsFileLink": "abc123",
"contentLength": 987,
"contentType": "abc123",
"createdDateTime": "abc123"
}
JobPostingCategory
JobPostingClassification
Description
classification info attached with the job posting management side
Fields
Field Name | Description |
---|---|
category - JobPostingCategory
|
|
subCategory - JobSubPostingCategory
|
|
skills - [Skill!]
|
|
customSkills - [CustomJobPostSkill!]
|
|
additionalSkills - [Skill!]
|
|
occupationId - ID
|
|
customAdditionalSkills - [String!]
|
Example
{
"category": JobPostingCategory,
"subCategory": JobSubPostingCategory,
"skills": [Skill],
"customSkills": [CustomJobPostSkill],
"additionalSkills": [Skill],
"occupationId": 4,
"customAdditionalSkills": ["abc123"]
}
JobPostingConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [JobPostingEdge]!
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 123,
"edges": [JobPostingEdge],
"pageInfo": PageInfo
}
JobPostingContent
JobPostingContractorSelection
Fields
Field Name | Description |
---|---|
proposalRequirement - JobPostingProposalRequirements
|
|
qualification - JobPostingQualification
|
|
location - JobPostingLocation
|
Example
{
"proposalRequirement": JobPostingProposalRequirements,
"qualification": JobPostingQualification,
"location": JobPostingLocation
}
JobPostingContractTerms
Fields
Field Name | Description |
---|---|
contractStartDate - String
|
Start date for the contract terms formatted according to ISO-8601 |
contractEndDate - String
|
End date for the contract terms formatted according to ISO-8601 |
contractType - ContractType!
|
|
onSiteType - OnSiteType
|
|
personsToHire - Int
|
|
experienceLevel - ExperienceLevel
|
|
fixedPriceContractTerms - FixedPriceContractTerms
|
|
hourlyContractTerms - HourlyContractTerms
|
Example
{
"contractStartDate": "abc123",
"contractEndDate": "xyz789",
"contractType": "HOURLY",
"onSiteType": "REMOTE",
"personsToHire": 987,
"experienceLevel": "ENTRY_LEVEL",
"fixedPriceContractTerms": FixedPriceContractTerms,
"hourlyContractTerms": HourlyContractTerms
}
JobPostingCreateRequest
Description
Input for creating Job Post
Fields
Input Field | Description |
---|---|
organizationId - ID!
|
|
jobPostingInfo - JobPostingRequestInfo
|
|
qualifications - JobPostingQualificationRequest
|
|
questions - [JobPostingQuestionRequest!]
|
|
segmentationData - [JobPostingSegmentationRequest!]
|
|
attachmentIds - [ID!]
|
|
ptcInfo - JobPostingPtcInfoRequest
|
|
savePtcInfo - Boolean
|
|
invitePost - Boolean
|
|
jobPostingAdditionalRequest - JobPostingAdditionalRequest
|
|
sandsJobPost - SandsJobPostRequest
|
|
customFields - JobPostingCustomFieldsRequest
|
|
annotations - JobPostingAnnotations
|
|
enterpriseCustomFields - [JobPostEnterpriseCustomFields!]
|
|
billRate - JobPostBillRate
|
Example
{
"organizationId": "4",
"jobPostingInfo": JobPostingRequestInfo,
"qualifications": JobPostingQualificationRequest,
"questions": [JobPostingQuestionRequest],
"segmentationData": [JobPostingSegmentationRequest],
"attachmentIds": [4],
"ptcInfo": JobPostingPtcInfoRequest,
"savePtcInfo": false,
"invitePost": false,
"jobPostingAdditionalRequest": JobPostingAdditionalRequest,
"sandsJobPost": SandsJobPostRequest,
"customFields": JobPostingCustomFieldsRequest,
"annotations": JobPostingAnnotations,
"enterpriseCustomFields": [
JobPostEnterpriseCustomFields
],
"billRate": JobPostBillRate
}
JobPostingCreateResponse
Example
{
"id": 4,
"qualificationsSaved": false,
"skillsSaved": false,
"questionsSaved": false,
"segmentationDataSaved": false,
"attachmentsSaved": true,
"ptcInfoSaved": true,
"jobPostingAdditional": false,
"sandsJobPostSaved": false,
"customFieldsSaved": true
}
JobPostingCustomFields
JobPostingCustomFieldsRequest
Fields
Input Field | Description |
---|---|
responses - [CustomFieldsResponse]
|
|
newDropdowns - [CustomFieldDropDown]
|
Example
{
"responses": [CustomFieldsResponse],
"newDropdowns": [CustomFieldDropDown]
}
JobPostingEdge
Fields
Field Name | Description |
---|---|
cursor - String!
|
|
node - JobPosting
|
Example
{
"cursor": "abc123",
"node": JobPosting
}
JobPostingHourlyBudgetType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"DEFAULT"
JobPostingInfo
Fields
Field Name | Description |
---|---|
status - JobPostingStatus
|
|
company - CurrentOrganization
|
|
auditTime - AuditTime
|
|
hidden - Boolean
|
|
siteSource - String
|
|
keepOpenOnHire - Boolean
|
|
draftJobPostingId - ID
|
|
publishDateTime - String
|
Publish date time of the posting formatted according to ISO-8601 |
filledDateTime - String
|
|
sourcingUpdateForbidden - Boolean
|
|
sourcingUpdateCount - Int
|
|
premium - Boolean
|
|
legacyCiphertext - String
|
|
hideBudget - Boolean
|
|
categoryId - ID
|
|
groupId - ID
|
|
notSureFreelancersToHire - Boolean
|
|
notSureExperienceLevel - Boolean
|
|
hourlyBudgetType - JobPostingHourlyBudgetType
|
|
hourlyBudgetMin - Money
|
|
hourlyBudgetMax - Money
|
|
changedByUser - GenericUser
|
|
reasonId - ID
|
|
reasonName - String
|
Example
{
"status": "REQUESTED",
"company": CurrentOrganization,
"auditTime": AuditTime,
"hidden": true,
"siteSource": "abc123",
"keepOpenOnHire": false,
"draftJobPostingId": 4,
"publishDateTime": "abc123",
"filledDateTime": "abc123",
"sourcingUpdateForbidden": false,
"sourcingUpdateCount": 123,
"premium": true,
"legacyCiphertext": "xyz789",
"hideBudget": false,
"categoryId": 4,
"groupId": 4,
"notSureFreelancersToHire": true,
"notSureExperienceLevel": false,
"hourlyBudgetType": "DEFAULT",
"hourlyBudgetMin": Money,
"hourlyBudgetMax": Money,
"changedByUser": GenericUser,
"reasonId": "4",
"reasonName": "xyz789"
}
JobPostingLocation
Example
{
"countries": ["abc123"],
"states": ["abc123"],
"timezones": ["xyz789"],
"localCheckRequired": false,
"localMarket": false,
"areas": [Area],
"notSureLocationPreference": false,
"localDescription": "abc123",
"localFlexibilityDescription": "abc123",
"address": "abc123"
}
JobPostingLocationRequest
JobPostingOwnership
Description
Owner of the job
Fields
Field Name | Description |
---|---|
user - GenericUser
|
|
clientCompany - CurrentOrganization
|
|
company - GenericOrganization
|
|
team - GenericOrganization
|
Example
{
"user": GenericUser,
"clientCompany": CurrentOrganization,
"company": GenericOrganization,
"team": GenericOrganization
}
JobPostingProposalRequirements
Fields
Field Name | Description |
---|---|
coverLetterRequired - Boolean
|
|
freelancerMilestonesAllowed - Boolean
|
|
screeningQuestions - [JobPostingQuestion!]
|
Example
{
"coverLetterRequired": true,
"freelancerMilestonesAllowed": true,
"screeningQuestions": [JobPostingQuestion]
}
JobPostingPtcInfo
Fields
Field Name | Description |
---|---|
jobPostingPtcVisibility - JobPostingPtcVisibility
|
Example
{"jobPostingPtcVisibility": "ANY_USER"}
JobPostingPtcInfoRequest
Fields
Input Field | Description |
---|---|
jobReference - String
|
|
talentCloudIds - [ID!]
|
|
visibility - JobPostingPtcVisibility
|
|
employerCompanyReference - String
|
|
status - JobPostingPtcStatus
|
|
purchaseOrderId - ID
|
|
locationCheckRequired - Boolean
|
|
countries - [String!]
|
|
onSiteType - OnSiteType
|
|
onSiteCity - String
|
|
onSiteCountry - String
|
|
createDate - Int
|
|
onSiteReason - String
|
|
onSiteReasonFlexible - String
|
|
onSiteState - String
|
|
teamId - ID
|
|
travelRequired - Boolean
|
|
updatedDate - Int
|
Example
{
"jobReference": "abc123",
"talentCloudIds": ["4"],
"visibility": "ANY_USER",
"employerCompanyReference": "abc123",
"status": "OPEN",
"purchaseOrderId": "4",
"locationCheckRequired": true,
"countries": ["xyz789"],
"onSiteType": "REMOTE",
"onSiteCity": "xyz789",
"onSiteCountry": "abc123",
"createDate": 987,
"onSiteReason": "abc123",
"onSiteReasonFlexible": "abc123",
"onSiteState": "abc123",
"teamId": 4,
"travelRequired": false,
"updatedDate": 987
}
JobPostingPtcStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OPEN"
JobPostingPtcVisibility
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ANY_USER"
JobPostingQualification
Fields
Field Name | Description |
---|---|
contractorType - ContractorType
|
|
englishProficiency - EnglishProficiency
|
|
hasPortfolio - Boolean
|
|
risingTalent - Boolean
|
|
jobSuccessScore - Int
|
|
earnings - Earning
|
|
preferredGroups - [PreferredGroup!]
|
|
preferredTests - [PreferredTest]
|
Example
{
"contractorType": "ALL",
"englishProficiency": "ANY",
"hasPortfolio": true,
"risingTalent": false,
"jobSuccessScore": 987,
"earnings": "ANY",
"preferredGroups": [PreferredGroup],
"preferredTests": [PreferredTest]
}
JobPostingQualificationRequest
Description
Job Posting qualification related fields
Fields
Input Field | Description |
---|---|
oDeskHours - Int
|
|
testId - ID
|
|
locationRegionId - ID
|
|
hasPortfolio - Boolean
|
|
contractorType - ContractorType
|
|
jobSuccessScore - Int
|
|
englishProficiency - EnglishProficiency
|
|
risingTalent - Boolean
|
|
countries - [String!]
|
|
regions - [String!]
|
|
locationCheckRequired - Boolean
|
|
states - [String!]
|
|
timezones - [String!]
|
|
earnings - Earning
|
|
localMarket - Boolean
|
|
onSiteType - OnSiteType
|
|
locations - [JobPostingLocationRequest!]
|
|
localDescription - String
|
|
localFlexibilityDescription - String
|
|
ctime - String
|
|
englishSkill - EnglishSkill
|
|
groupRid - ID
|
|
languages - [String]
|
|
mtime - String
|
|
openingId - String
|
Example
{
"oDeskHours": 123,
"testId": 4,
"locationRegionId": 4,
"hasPortfolio": false,
"contractorType": "ALL",
"jobSuccessScore": 123,
"englishProficiency": "ANY",
"risingTalent": true,
"countries": ["abc123"],
"regions": ["abc123"],
"locationCheckRequired": true,
"states": ["xyz789"],
"timezones": ["abc123"],
"earnings": "ANY",
"localMarket": true,
"onSiteType": "REMOTE",
"locations": [JobPostingLocationRequest],
"localDescription": "xyz789",
"localFlexibilityDescription": "xyz789",
"ctime": "xyz789",
"englishSkill": "ANY_LEVEL",
"groupRid": "4",
"languages": ["xyz789"],
"mtime": "xyz789",
"openingId": "abc123"
}
JobPostingQuestion
Fields
Field Name | Description |
---|---|
id - ID!
|
|
question - String
|
|
user - GenericUser
|
|
questionType - QuestionType
|
|
auditTime - AuditTime
|
Example
{
"id": "4",
"question": "abc123",
"user": GenericUser,
"questionType": "EXPERIENCE",
"auditTime": AuditTime
}
JobPostingQuestionRequest
Fields
Input Field | Description |
---|---|
question - String!
|
|
type - QuestionType
|
Example
{"question": "xyz789", "type": "EXPERIENCE"}
JobPostingRequestInfo
Description
Basic input attributes
Fields
Input Field | Description |
---|---|
title - String
|
|
description - String
|
|
engagementType - EngagementType
|
|
durationId - ID
|
Consumers can use the following query for the duration ID proposalMetadata{ engagementDurationValues{ id label } } |
status - JobPostingStatus
|
|
type - JobPostType
|
|
amount - String
|
Amount as string containing exact value with dot symbol (".") is used to separate integer and fractional parts |
coverLetterRequired - Boolean
|
|
access - AccessType
|
|
experienceLevel - ExperienceLevel
|
|
freelancersToHire - Int
|
|
categoryId - ID
|
Consumers can use the following query for category and group ID ontologyCategories { id preferredLabel subcategories { id preferredLabel } It's equal to subcategories.id (eg Web Development) |
groupId - ID
|
Equal to ontologyCategories.id (eg Web, Mobile & Software Dev) (see example in categoryId ) |
endDate - String
|
End date for the Posting formatted according to ISO-8601 |
startDate - String
|
Start date for the Posting formatted according to ISO-8601 |
siteSource - String
|
|
maxAmount - String
|
Amount as string containing exact value with dot symbol (".") is used to separate integer and fractional parts |
keepOpenOnHire - Boolean
|
|
draftJobPostingId - ID
|
|
freelancerMilestonesAllowed - Boolean
|
|
premium - Boolean
|
|
hideBudget - Boolean
|
|
notSureFreelancersToHire - Boolean
|
|
notSureProjectDuration - Boolean
|
|
notSureExperienceLevel - Boolean
|
|
notSureLocationPreference - Boolean
|
|
hourlyBudgetType - JobPostingHourlyBudgetType
|
|
hourlyBudgetMin - String
|
Hourly min budget as string containing exact value with dot symbol (".") is used to separate integer and fractional parts |
hourlyBudgetMax - String
|
Hourly max budget as string containing exact value with dot symbol (".") is used to separate integer and fractional parts |
autoReviewStatus - AutoReviewStatus
|
|
autoReviewTs - String
|
|
changedById - ID
|
|
ciphertext - String
|
|
closeTime - String
|
|
companyName - String
|
|
companyId - ID
|
|
createdByFirstName - String
|
|
createdByLastName - String
|
|
createdById - ID
|
|
ctime - String
|
|
deletedReason - String
|
|
filledDate - String
|
|
ghostPost - Boolean
|
|
hidden - Boolean
|
|
hourPackId - ID
|
|
lastOboAgentActionTs - String
|
|
lastOboAgentUserId - ID
|
|
legacyCiphertext - String
|
|
legacyRid - ID
|
|
manualReviewStatus - ManualReviewStatus
|
|
mtime - String
|
|
offTheNetwork - Boolean
|
|
publishTime - String
|
|
reasonRid - ID
|
|
sourcingTime - String
|
|
sourcingUpdateCount - Int
|
|
sourcingUpdateForbidden - Boolean
|
|
staffAugDuplicate - Boolean
|
|
staffAugJob - Boolean
|
|
uid - String
|
|
weeklyRetainerBudget - Float
|
Example
{
"title": "xyz789",
"description": "abc123",
"engagementType": "FULL_TIME",
"durationId": 4,
"status": "REQUESTED",
"type": "HOURLY",
"amount": "abc123",
"coverLetterRequired": false,
"access": "PUBLIC_INDEX",
"experienceLevel": "ENTRY_LEVEL",
"freelancersToHire": 987,
"categoryId": "4",
"groupId": "4",
"endDate": "abc123",
"startDate": "abc123",
"siteSource": "xyz789",
"maxAmount": "abc123",
"keepOpenOnHire": true,
"draftJobPostingId": "4",
"freelancerMilestonesAllowed": false,
"premium": false,
"hideBudget": true,
"notSureFreelancersToHire": false,
"notSureProjectDuration": false,
"notSureExperienceLevel": false,
"notSureLocationPreference": false,
"hourlyBudgetType": "DEFAULT",
"hourlyBudgetMin": "xyz789",
"hourlyBudgetMax": "xyz789",
"autoReviewStatus": "APPROVED",
"autoReviewTs": "abc123",
"changedById": "4",
"ciphertext": "abc123",
"closeTime": "xyz789",
"companyName": "abc123",
"companyId": 4,
"createdByFirstName": "xyz789",
"createdByLastName": "xyz789",
"createdById": 4,
"ctime": "abc123",
"deletedReason": "xyz789",
"filledDate": "abc123",
"ghostPost": false,
"hidden": true,
"hourPackId": "4",
"lastOboAgentActionTs": "abc123",
"lastOboAgentUserId": 4,
"legacyCiphertext": "xyz789",
"legacyRid": 4,
"manualReviewStatus": "APPROVED",
"mtime": "abc123",
"offTheNetwork": true,
"publishTime": "abc123",
"reasonRid": 4,
"sourcingTime": "xyz789",
"sourcingUpdateCount": 123,
"sourcingUpdateForbidden": true,
"staffAugDuplicate": false,
"staffAugJob": false,
"uid": "abc123",
"weeklyRetainerBudget": 987.65
}
JobPostingSegmentationData
Fields
Field Name | Description |
---|---|
segmentationValues - [JobPostingSegmentationValue!]
|
Example
{"segmentationValues": [JobPostingSegmentationValue]}
JobPostingSegmentationRequest
JobPostingSegmentationValue
Example
{
"id": "4",
"label": "abc123",
"referenceName": "abc123",
"sortOrder": 987,
"segmentationType": SegmentationType,
"auditTime": AuditTime,
"skill": Skill
}
JobPostingsFilter
Description
Input filter for searching Job Posting for a given organization
Fields
Input Field | Description |
---|---|
pagination_eq - Pagination
|
|
title_eq - String
|
Title of the Job to be searched |
postByTeamIds_any - [ID!]
|
Collection of the Team's Id for which result to be filtered |
postByPersonIds_any - [ID!]
|
Collection of the Person's Id for which result to be filtered |
statusAndAccess_any - [CompanyJobPostingStatusAccess!]
|
Status and success pairs for filtering |
excludePostByPersonIds_any - [ID!]
|
Jobs to be excluded posted by the persons |
categoryGroupIds_any - [ID!]
|
Jobs to be filtered based for the groups |
contractType_eq - ContractType
|
Jobs to be filtered based on the contract type |
createdDateTimeFrom_eq - String
|
Jobs to be filtered based on created after date, date in ISO format yyyy-MM-ddThh:mm:ss.SSS+HHmm or yyyy-MM-dd |
createdDateTimeTo_eq - String
|
Jobs to be filtered based on created before date, date in ISO format yyyy-MM-ddThh:mm:ss.SSS+HHmm or yyyy-MM-dd |
Example
{
"pagination_eq": Pagination,
"title_eq": "abc123",
"postByTeamIds_any": [4],
"postByPersonIds_any": [4],
"statusAndAccess_any": [CompanyJobPostingStatusAccess],
"excludePostByPersonIds_any": ["4"],
"categoryGroupIds_any": [4],
"contractType_eq": "HOURLY",
"createdDateTimeFrom_eq": "xyz789",
"createdDateTimeTo_eq": "xyz789"
}
JobPostingSkillInput
JobPostingStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"REQUESTED"
JobPostingUpdateRequest
Description
Input for updating Job Post
Fields
Input Field | Description |
---|---|
organizationId - ID!
|
|
jobPostingInfo - JobPostingRequestInfo
|
|
qualifications - JobPostingQualificationRequest
|
|
questions - [JobPostingQuestionRequest!]
|
|
segmentationData - [JobPostingSegmentationRequest!]
|
|
attachmentIds - [ID!]
|
|
ptcInfo - JobPostingPtcInfoRequest
|
|
savePtcInfo - Boolean
|
|
invitePost - Boolean
|
|
jobPostingAdditionalRequest - JobPostingAdditionalRequest
|
|
sandsJobPost - SandsJobPostRequest
|
|
customFields - JobPostingCustomFieldsRequest
|
|
annotations - JobPostingAnnotations
|
|
enterpriseCustomFields - [JobPostEnterpriseCustomFields!]
|
|
billRate - JobPostBillRate
|
Example
{
"organizationId": 4,
"jobPostingInfo": JobPostingRequestInfo,
"qualifications": JobPostingQualificationRequest,
"questions": [JobPostingQuestionRequest],
"segmentationData": [JobPostingSegmentationRequest],
"attachmentIds": ["4"],
"ptcInfo": JobPostingPtcInfoRequest,
"savePtcInfo": false,
"invitePost": true,
"jobPostingAdditionalRequest": JobPostingAdditionalRequest,
"sandsJobPost": SandsJobPostRequest,
"customFields": JobPostingCustomFieldsRequest,
"annotations": JobPostingAnnotations,
"enterpriseCustomFields": [
JobPostEnterpriseCustomFields
],
"billRate": JobPostBillRate
}
JobPostingUpdateResponse
Example
{
"id": 4,
"qualificationsSaved": true,
"skillsSaved": true,
"questionsSaved": true,
"segmentationDataSaved": true,
"attachmentsSaved": true,
"ptcInfoSaved": true,
"sandsJobPostSaved": false
}
JobPostsFilter
Fields
Input Field | Description |
---|---|
teamIds - [ID!]
|
If specified, only job posts belonging to these teams will be fetched |
statuses - [String!]
|
Job post status list. Default value is ALL. |
excludeHidden - Boolean
|
Whether to exclude hidden openings from result. Default is true. |
fields - [String!]
|
Job posts projection fields |
Example
{
"teamIds": ["4"],
"statuses": ["abc123"],
"excludeHidden": true,
"fields": ["xyz789"]
}
JobPostType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"HOURLY"
JobSubPostingCategory
MarketplaceAdditionalSearchInfo
Fields
Field Name | Description |
---|---|
highlightTitle - String
|
Example
{"highlightTitle": "abc123"}
MarketplaceContractorSelection
Fields
Field Name | Description |
---|---|
proposalRequirement - MarketplaceProposalRequirements
|
|
qualification - MarketplaceQualification
|
|
location - MarketplaceLocation
|
Example
{
"proposalRequirement": MarketplaceProposalRequirements,
"qualification": MarketplaceQualification,
"location": MarketplaceLocation
}
MarketplaceContractTerms
Fields
Field Name | Description |
---|---|
contractStartDate - String
|
Start date for the contract terms formatted according to ISO-8601 |
contractEndDate - String
|
End date for the contract terms formatted according to ISO-8601 |
contractType - ContractType!
|
|
onSiteType - OnSiteType
|
|
personsToHire - Int!
|
|
experienceLevel - ExperienceLevel
|
|
fixedPriceContractTerms - FixedPriceContractTerms
|
|
hourlyContractTerms - HourlyContractTerms
|
|
notSurePersonsToHire - Boolean
|
|
notSureExperiencelevel - Boolean
|
Example
{
"contractStartDate": "abc123",
"contractEndDate": "abc123",
"contractType": "HOURLY",
"onSiteType": "REMOTE",
"personsToHire": 123,
"experienceLevel": "ENTRY_LEVEL",
"fixedPriceContractTerms": FixedPriceContractTerms,
"hourlyContractTerms": HourlyContractTerms,
"notSurePersonsToHire": false,
"notSureExperiencelevel": false
}
MarketplaceJobFilter
Fields
Input Field | Description |
---|---|
searchExpression_eq - String
|
Generic search filter supports partial Lucene syntax |
skillExpression_eq - String
|
Generic skills filter supports partial Lucene syntax |
titleExpression_eq - String
|
Generic title filter supports partial Lucene syntax |
searchTerm_eq - SearchTerm
|
Provides additional search terms to check, ignored if searchExpression_eq used |
categoryIds_any - [ID!]
|
The id of category of the returned jobs. Parameter works with OR behavior |
subcategoryIds_any - [ID!]
|
The id of subcategory of the returned jobs. Parameter works with OR behavior |
occupationIds_any - [ID!]
|
The occupationUID of the jobs to return. UIDs should be taken from Ontology and values will be handled with OR |
ontologySkillIds_all - [ID!]
|
The ontology skill element uid of the jobs to return. UIDs should be taken from Ontology and values will be handled with AND |
sinceId_eq - String
|
Multiple values of skills to filter on. It makes text match on skills rather than exact match skillsFilter_any: [String!] Deprecated! Use ontology_skill_uid instead! Constrains the search to jobs with id (posting id) higher than sinceId |
maxId_eq - String
|
Constrains the search to jobs with id (posting id) less than maxId |
jobType_eq - ContractType
|
Constrains the search to jobs of the provided job type |
duration_any - [JobDuration!]
|
Duration of the hourly jobs. Fixed price jobs will be returned no matter they do not have duration |
workload_eq - EngagementType
|
Workload of the hourly jobs. Fixed price jobs will be returned no matter they do not have workload |
clientHiresRange_eq - IntRange
|
Constrains the search to jobs from clients with the number of past hires to feet the specified range or value |
clientFeedBackRange_eq - FloatRange
|
Constrains the search to jobs from clients with the rating to feet the specified range or value |
budgetRange_eq - IntRange
|
Constrains the search to jobs from clients with the budget. Hourly jobs will be returned no matter they do not have budget |
verifiedPaymentOnly_eq - Boolean
|
Whether to only return jobs of clients with verified payment method |
previousClients_eq - Boolean
|
Return jobs of the clients user worked with (applies to freelancer/agency user site jobs search/jobs feed only) |
experienceLevel_eq - ExperienceLevel
|
Return only jobs with the specified contractor tier |
locations_any - [String!]
|
Country or city of the client that posted a job |
cityId_any - [String!]
|
Returns jobs located within 100 miles radius around the city with the uid specified in search parameter. Note that other Global Location Jobs Filters are also applied |
zipCodeId_any - [String!]
|
Returns jobs located within 100 miles radius around zipcode with the uid specified in search parameter. Note that other Global Location Jobs Filters are also applied |
radius_eq - Int
|
Is used in pair with city_id or zipcode_id to use another search radius than default (100 miles) |
areaId_any - [String!]
|
Returns jobs within specified area or subarea. Note that other Global Location Jobs Filters are also applied |
timezone_eq - String
|
Returns jobs posted by client to the specified timezone. Note that other Global Location Jobs Filters are also applied |
usState_eq - String
|
Returns jobs posted by client to the specified USA state. Note that other Global Location Jobs Filters are also applied |
daysPosted_eq - Int
|
Constrains the search to jobs posted to the specified group. The source of the value is ODR op_pref_group_id field groupId_eq: String deprecated Number of days. Constrains the search to jobs posted within last N days |
jobPostingAccess - JobPostingAccess
|
Constrains the search to jobs in particular access realm |
ptcIds_any - [ID!]
|
List of Talent Clouds UIDs freelancer is allowed to see jobs in |
ptcOnly_eq - Boolean
|
|
enterpriseOnly_eq - Boolean
|
|
proposalRange_eq - IntRange
|
|
pagination_eq - Pagination
|
Pagination, e.g. { after: "0", first: 30 } will return first 30 records, starting from the very first element |
area_eq - AreaFilter
|
|
preserveFacet_eq - String
|
|
userLocationMatch_eq - Boolean
|
|
visitorCountry_eq - String
|
Example
{
"searchExpression_eq": "abc123",
"skillExpression_eq": "abc123",
"titleExpression_eq": "abc123",
"searchTerm_eq": SearchTerm,
"categoryIds_any": [4],
"subcategoryIds_any": ["4"],
"occupationIds_any": ["4"],
"ontologySkillIds_all": [4],
"sinceId_eq": "xyz789",
"maxId_eq": "abc123",
"jobType_eq": "HOURLY",
"duration_any": ["WEEK"],
"workload_eq": "FULL_TIME",
"clientHiresRange_eq": IntRange,
"clientFeedBackRange_eq": FloatRange,
"budgetRange_eq": IntRange,
"verifiedPaymentOnly_eq": false,
"previousClients_eq": false,
"experienceLevel_eq": "ENTRY_LEVEL",
"locations_any": ["xyz789"],
"cityId_any": ["xyz789"],
"zipCodeId_any": ["abc123"],
"radius_eq": 123,
"areaId_any": ["abc123"],
"timezone_eq": "xyz789",
"usState_eq": "abc123",
"daysPosted_eq": 123,
"jobPostingAccess": "PUBLIC_INDEX",
"ptcIds_any": ["4"],
"ptcOnly_eq": false,
"enterpriseOnly_eq": false,
"proposalRange_eq": IntRange,
"pagination_eq": Pagination,
"area_eq": AreaFilter,
"preserveFacet_eq": "abc123",
"userLocationMatch_eq": false,
"visitorCountry_eq": "abc123"
}
MarketplaceJobPosting
Fields
Field Name | Description |
---|---|
id - ID!
|
|
workFlowState - MarketplacePostingWorkFlowState
|
|
ownership - MarketplacePostingOwnership
|
|
annotations - MarketplacePostingAnnotations
|
|
activityStat - MarketplacePostingActivityStat
|
|
content - MarketplaceJobPostingContent
|
|
attachments - [MarketplacePostingAttachment!]
|
|
classification - MarketplacePostingClassification
|
|
segmentationData - MarketplaceSegmentationData
|
|
contractTerms - MarketplaceContractTerms
|
|
contractorSelection - MarketplaceContractorSelection
|
|
additionalSearchInfo - MarketplaceAdditionalSearchInfo
|
|
clientCompany - PrivateCompanyInfo
|
Company profile of the client Use clientCompanyPublic for company information |
clientCompanyPublic - MarketplacePublicCompanyInfo
|
|
canClientReceiveContractProposal - Boolean!
|
Indicates whether there is something that would prevent client from receiving contract proposal |
clientProposals - ClientProposalsConnection!
|
list of client proposals |
Arguments |
|
customFields - CustomFieldsConnection
|
Custom fields attached to this particular JobPostiingId. The response can optionally be filtered by organizationIds. If organizationIds are specified, only responses of custom fields accessible by hiring managers in the specified teams will be returned. These organizationIds can be 'team OrganizationIds' or 'root organizationId'. Custom fields that are accessible/visible through out the COMPANY are always included in the response. |
Arguments
|
Example
{
"id": "4",
"workFlowState": MarketplacePostingWorkFlowState,
"ownership": MarketplacePostingOwnership,
"annotations": MarketplacePostingAnnotations,
"activityStat": MarketplacePostingActivityStat,
"content": MarketplaceJobPostingContent,
"attachments": [MarketplacePostingAttachment],
"classification": MarketplacePostingClassification,
"segmentationData": MarketplaceSegmentationData,
"contractTerms": MarketplaceContractTerms,
"contractorSelection": MarketplaceContractorSelection,
"additionalSearchInfo": MarketplaceAdditionalSearchInfo,
"clientCompany": PrivateCompanyInfo,
"clientCompanyPublic": MarketplacePublicCompanyInfo,
"canClientReceiveContractProposal": true,
"clientProposals": ClientProposalsConnection,
"customFields": CustomFieldsConnection
}
MarketplaceJobPostingContent
MarketplaceJobPostingsContents
Example
{
"id": "4",
"ciphertext": "xyz789",
"title": "abc123",
"description": "xyz789",
"publishedDateTime": "xyz789",
"annotations": MarketplacePostingAnnotations
}
MarketplaceJobPostingSearchClientInfo
Fields
Field Name | Description |
---|---|
memberSinceDateTime - String
|
Deprecated legacy field |
totalHires - Int!
|
|
totalPostedJobs - Int!
|
past_hires |
totalSpent - Money
|
jobs_posted |
verificationStatus - ClientVerificationStatus
|
total_spent |
location - MarketPlaceJobSearchLocation
|
payment_verification_status |
totalReviews - Int!
|
|
totalFeedback - Float!
|
reviews_count |
companyRid - ID!
|
feedback |
companyName - String
|
|
edcUserId - ID!
|
|
lastContractPlatform - String
|
|
lastContractRid - ID
|
|
lastContractTitle - String
|
|
companyOrgUid - ID!
|
|
hasFinancialPrivacy - Boolean!
|
Example
{
"memberSinceDateTime": "xyz789",
"totalHires": 123,
"totalPostedJobs": 987,
"totalSpent": Money,
"verificationStatus": "VERIFIED",
"location": MarketPlaceJobSearchLocation,
"totalReviews": 987,
"totalFeedback": 987.65,
"companyRid": 4,
"companyName": "abc123",
"edcUserId": 4,
"lastContractPlatform": "abc123",
"lastContractRid": 4,
"lastContractTitle": "abc123",
"companyOrgUid": "4",
"hasFinancialPrivacy": true
}
MarketplaceJobPostingSearchConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [MarketplaceJobpostingSearchEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 123,
"edges": [MarketplaceJobpostingSearchEdge],
"pageInfo": PageInfo
}
MarketplaceJobpostingSearchEdge
Fields
Field Name | Description |
---|---|
cursor - String!
|
|
node - MarketplaceJobPostingSearchResult!
|
Example
{
"cursor": "abc123",
"node": MarketplaceJobPostingSearchResult
}
MarketplaceJobPostingSearchOccupation
MarketplaceJobPostingSearchOccupations
Fields
Field Name | Description |
---|---|
category - MarketplaceJobPostingSearchOccupation!
|
|
subCategories - [MarketplaceJobPostingSearchOccupation]
|
|
occupationService - MarketplaceJobPostingSearchOccupation
|
Example
{
"category": MarketplaceJobPostingSearchOccupation,
"subCategories": [
MarketplaceJobPostingSearchOccupation
],
"occupationService": MarketplaceJobPostingSearchOccupation
}
MarketplaceJobPostingSearchRelevance
Example
{
"id": 4,
"effectiveCandidates": 987,
"recommendedEffectiveCandidates": 987,
"uniqueImpressions": 987,
"publishTime": "abc123",
"hoursInactive": 987
}
MarketplaceJobPostingSearchResult
Fields
Field Name | Description |
---|---|
id - ID!
|
|
job - MarketplaceJobPosting
|
|
title - String!
|
|
description - String!
|
|
ciphertext - String!
|
|
duration - JobDuration
|
|
durationLabel - String
|
|
engagement - String
|
|
amount - Money!
|
|
recordNumber - String!
|
|
experienceLevel - FreelancerProfileExperienceLevel!
|
|
category - String
|
contractorTier |
subcategory - String
|
|
freelancersToHire - Int!
|
|
relevance - MarketplaceJobPostingSearchRelevance!
|
|
enterprise - Boolean!
|
|
relevanceEncoded - String!
|
|
totalApplicants - Int!
|
|
preferredFreelancerLocation - [String]
|
|
preferredFreelancerLocationMandatory - Boolean
|
|
premium - Boolean!
|
|
clientNotSureFields - [String]
|
|
clientPrivateFields - [String]
|
|
applied - Boolean!
|
|
createdDateTime - String!
|
|
publishedDateTime - String!
|
|
renewedDateTime - String
|
|
client - MarketplaceJobPostingSearchClientInfo!
|
|
skills - [MarketplaceJobPostingSearchSkill]!
|
|
occupations - MarketplaceJobPostingSearchOccupations
|
|
hourlyBudgetType - JobPostingHourlyBudgetType
|
|
hourlyBudgetMin - Money
|
|
hourlyBudgetMax - Money
|
|
localJobUserDistance - String
|
|
weeklyBudget - Money
|
|
engagementDuration - EngagementDuration
|
The value of weeks inside of engagementDuration is deprecated , you can get the right value by using either job->contractTerms->fixedPriceContractTerms->engagementDuration or job->contractTerms->hourlyContractTerms->engagementDuration based on contract type. |
totalFreelancersToHire - Int
|
|
teamId - ID
|
|
freelancerClientRelation - FreelancerClientRelation
|
Example
{
"id": "4",
"job": MarketplaceJobPosting,
"title": "xyz789",
"description": "abc123",
"ciphertext": "xyz789",
"duration": "WEEK",
"durationLabel": "abc123",
"engagement": "xyz789",
"amount": Money,
"recordNumber": "abc123",
"experienceLevel": "NONE",
"category": "xyz789",
"subcategory": "abc123",
"freelancersToHire": 123,
"relevance": MarketplaceJobPostingSearchRelevance,
"enterprise": false,
"relevanceEncoded": "xyz789",
"totalApplicants": 987,
"preferredFreelancerLocation": ["abc123"],
"preferredFreelancerLocationMandatory": false,
"premium": true,
"clientNotSureFields": ["xyz789"],
"clientPrivateFields": ["xyz789"],
"applied": true,
"createdDateTime": "xyz789",
"publishedDateTime": "abc123",
"renewedDateTime": "xyz789",
"client": MarketplaceJobPostingSearchClientInfo,
"skills": [MarketplaceJobPostingSearchSkill],
"occupations": MarketplaceJobPostingSearchOccupations,
"hourlyBudgetType": "DEFAULT",
"hourlyBudgetMin": Money,
"hourlyBudgetMax": Money,
"localJobUserDistance": "xyz789",
"weeklyBudget": Money,
"engagementDuration": EngagementDuration,
"totalFreelancersToHire": 987,
"teamId": "4",
"freelancerClientRelation": FreelancerClientRelation
}
MarketplaceJobPostingSearchSkill
MarketplaceJobPostingSearchSortAttribute
Fields
Input Field | Description |
---|---|
field - MarketplaceJobPostingSearchSortField!
|
Example
{"field": "RECENCY"}
MarketplaceJobPostingSearchSortField
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"RECENCY"
MarketplaceJobPostingSearchType
Description
context and method of the job search being executed
Values
Enum Value | Description |
---|---|
|
default search, will be always utilized when performing a user-initiated job search, any other value will be ignored |
|
retrieve saved searches No longer supported |
|
retrieve values in RSS feed integration intended format No longer supported |
Example
"USER_JOBS_SEARCH"
MarketplaceJobPostingsSearchFilter
Fields
Input Field | Description |
---|---|
searchExpression_eq - String
|
Generic search filter supports partial Lucene syntax |
skillExpression_eq - String
|
Supports multiple skills separated by commas (,). When specifying multiple skills, a Boolean OR is applied between them. Ex: skillExpression_eq:"crm-software,proofreading" |
titleExpression_eq - String
|
Searches for any words within the job title field.Ex: titleExpression_eq:"Data" |
searchTerm_eq - SearchTerm
|
Provides additional search terms to check, ignored if searchExpression_eq used. Ex: searchTerm_eq:{ exactTerms_any:["penatibus"] excludeTerms_any:["elit","Donec","Pellentesque"] orTerms_any:["sociis"] andTerms_all:["penatibus"] } |
categoryIds_any - [ID!]
|
The id of category of the returned jobs. Parameter works with OR behavior |
subcategoryIds_any - [ID!]
|
The id of subcategory of the returned jobs. Parameter works with OR behavior |
occupationIds_any - [ID!]
|
The occupationUID of the jobs to return. UIDs should be taken from Ontology and values will be handled with OR |
ontologySkillIds_all - [ID!]
|
The ontology skill element uid of the jobs to return. UIDs should be taken from Ontology and values will be handled with AND |
jobType_eq - ContractType
|
Constrains the search to jobs of the provided job type |
workload_eq - EngagementType
|
Workload of the hourly jobs. Fixed price jobs will be returned no matter they do not have workload |
clientHiresRange_eq - IntRange
|
Constrains the search to jobs from clients with the number of past hires to feet the specified range or value |
budgetRange_eq - IntRange
|
Constrains the search to jobs from clients with the budget. Hourly jobs will be returned no matter they do not have budget |
hourlyRate_eq - IntRange
|
Constrains the search to jobs from clients with the budget. Hourly jobs will be returned no matter they do not have budget |
verifiedPaymentOnly_eq - Boolean
|
Whether to only return jobs of clients with verified payment method |
previousClients_eq - Boolean
|
Return jobs of the clients user worked with (applies to freelancer/agency user site jobs search/jobs feed only) |
experienceLevel_eq - ExperienceLevel
|
Return only jobs with the specified contractor tier |
locations_any - [String!]
|
Country or city of the client that posted a job |
timezone_eq - String
|
Returns jobs posted by client to the specified timezone. Note that other Global Location Jobs Filters are also applied |
ptcIds_any - [ID!]
|
List of Talent Clouds UIDs freelancer is allowed to see jobs in |
ptcOnly_eq - Boolean
|
|
enterpriseOnly_eq - Boolean
|
|
proposalRange_eq - IntRange
|
|
pagination_eq - Pagination
|
|
area_eq - AreaFilter
|
|
preserveFacet_eq - String
|
|
userLocationMatch_eq - Boolean
|
|
visitorCountry_eq - String
|
Example
{
"searchExpression_eq": "abc123",
"skillExpression_eq": "xyz789",
"titleExpression_eq": "xyz789",
"searchTerm_eq": SearchTerm,
"categoryIds_any": [4],
"subcategoryIds_any": ["4"],
"occupationIds_any": [4],
"ontologySkillIds_all": ["4"],
"jobType_eq": "HOURLY",
"workload_eq": "FULL_TIME",
"clientHiresRange_eq": IntRange,
"budgetRange_eq": IntRange,
"hourlyRate_eq": IntRange,
"verifiedPaymentOnly_eq": true,
"previousClients_eq": false,
"experienceLevel_eq": "ENTRY_LEVEL",
"locations_any": ["abc123"],
"timezone_eq": "xyz789",
"ptcIds_any": [4],
"ptcOnly_eq": true,
"enterpriseOnly_eq": false,
"proposalRange_eq": IntRange,
"pagination_eq": Pagination,
"area_eq": AreaFilter,
"preserveFacet_eq": "xyz789",
"userLocationMatch_eq": false,
"visitorCountry_eq": "abc123"
}
MarketPlaceJobSearchLocation
MarketplaceLocation
Example
{
"countries": ["abc123"],
"states": ["xyz789"],
"timezones": ["xyz789"],
"localCheckRequired": true,
"localMarket": true,
"areas": [Area],
"notSureLocationPreference": false,
"localDescription": "abc123",
"localFlexibilityDescription": "xyz789"
}
MarketplacePostingActivityStat
Fields
Field Name | Description |
---|---|
applicationsBidStats - ApplicationsBidStats
|
|
jobActivity - JobActivity
|
Example
{
"applicationsBidStats": ApplicationsBidStats,
"jobActivity": JobActivity
}
MarketplacePostingAnnotations
Fields
Field Name | Description |
---|---|
tags - [String!]
|
|
customFields - [StringMapElement!]
|
Example
{
"tags": ["abc123"],
"customFields": [StringMapElement]
}
MarketplacePostingAttachment
MarketplacePostingClassification
Fields
Field Name | Description |
---|---|
category - JobCategory
|
|
subCategory - JobCategory
|
|
occupation - Occupation
|
|
skills - [Skill!]
|
|
additionalSkills - [Skill!]
|
Example
{
"category": JobCategory,
"subCategory": JobCategory,
"occupation": Occupation,
"skills": [Skill],
"additionalSkills": [Skill]
}
MarketplacePostingOwnership
Fields
Field Name | Description |
---|---|
company - GenericOrganization
|
|
team - GenericOrganization
|
Example
{
"company": GenericOrganization,
"team": GenericOrganization
}
MarketplacePostingWorkFlowState
Fields
Field Name | Description |
---|---|
closeResult - String
|
|
status - WorkFlowStateStatus!
|
Example
{
"closeResult": "abc123",
"status": "CLOSED"
}
MarketplaceProposalRequirements
Fields
Field Name | Description |
---|---|
coverLetterRequired - Boolean
|
|
freelancerMilestonesAllowed - Boolean
|
|
screeningQuestions - [MarketplaceQuestion!]
|
Example
{
"coverLetterRequired": true,
"freelancerMilestonesAllowed": false,
"screeningQuestions": [MarketplaceQuestion]
}
MarketplacePublicCompanyInfo
Fields
Field Name | Description |
---|---|
id - ID!
|
|
legacyType - OrganizationLegacyType
|
|
teamsEnabled - Boolean
|
|
canHire - Boolean
|
|
hidden - Boolean
|
|
includeInStats - Boolean
|
No longer available for orgs |
country - Country
|
|
state - String
|
|
city - String
|
|
timezone - String
|
|
accountingEntity - String
|
|
billingType - BillingType
|
|
paymentVerification - PaymentVerificationResult
|
|
agencyDetails - AgencyDetails
|
Example
{
"id": 4,
"legacyType": "CLIENT",
"teamsEnabled": false,
"canHire": true,
"hidden": false,
"includeInStats": false,
"country": Country,
"state": "abc123",
"city": "abc123",
"timezone": "abc123",
"accountingEntity": "abc123",
"billingType": "BILL",
"paymentVerification": PaymentVerificationResult,
"agencyDetails": AgencyDetails
}
MarketplaceQualification
Fields
Field Name | Description |
---|---|
contractorType - ContractorType
|
|
englishProficiency - EnglishProficiency
|
|
hasPortfolio - Boolean
|
|
hoursWorked - Int
|
|
risingTalent - Boolean
|
|
jobSuccessScore - Int
|
|
minEarning - Earning
|
|
preferredGroups - [PreferredGroup!]
|
|
preferenceTests - [PreferredTest]
|
Example
{
"contractorType": "ALL",
"englishProficiency": "ANY",
"hasPortfolio": true,
"hoursWorked": 123,
"risingTalent": false,
"jobSuccessScore": 987,
"minEarning": "ANY",
"preferredGroups": [PreferredGroup],
"preferenceTests": [PreferredTest]
}
MarketplaceQuestion
MarketplaceSegmentationData
Fields
Field Name | Description |
---|---|
segmentationValues - [MarketplaceSegmentationValue!]
|
Example
{"segmentationValues": [MarketplaceSegmentationValue]}
MarketplaceSegmentationInfo
MarketplaceSegmentationValue
Fields
Field Name | Description |
---|---|
customValue - String
|
|
segmentationInfo - MarketplaceSegmentationInfo
|
Example
{
"customValue": "abc123",
"segmentationInfo": MarketplaceSegmentationInfo
}
OnSiteType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"REMOTE"
PreferredGroup
PreferredTest
ProposalsStatistics
Fields
Field Name | Description |
---|---|
totalProposals - Int!
|
|
totalMessaged - Int!
|
|
totalHired - Int!
|
|
totalInvitesSent - Int!
|
|
totalApplicantsWithAutoHidden - Int!
|
|
totalArchived - Int!
|
|
totalAutoHidden - Int!
|
|
totalDeclined - Int!
|
|
totalHidden - Int!
|
|
totalOffered - Int!
|
|
totalShortlisted - Int!
|
|
totalWithdrawn - Int!
|
Example
{
"totalProposals": 987,
"totalMessaged": 987,
"totalHired": 987,
"totalInvitesSent": 123,
"totalApplicantsWithAutoHidden": 123,
"totalArchived": 123,
"totalAutoHidden": 987,
"totalDeclined": 123,
"totalHidden": 123,
"totalOffered": 987,
"totalShortlisted": 123,
"totalWithdrawn": 987
}
QuestionType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"EXPERIENCE"
SandsJobPostRequest
Fields
Input Field | Description |
---|---|
occupationId - String
|
jobPostId: ID # the correct id will be provided by upstream Equal to services.id (eg Front-End Development) |
skills - [JobPostingSkillInput!]
|
|
status - SandsJobPostStatus
|
|
freetextOccupation - String
|
|
tags - [String!]
|
|
additionalSkills - [JobPostingAdditionalSkillInput!]
|
|
occupations - [ID!]
|
Example
{
"occupationId": "abc123",
"skills": [JobPostingSkillInput],
"status": "DRAFT",
"freetextOccupation": "xyz789",
"tags": ["xyz789"],
"additionalSkills": [JobPostingAdditionalSkillInput],
"occupations": [4]
}
SandsJobPostStatus
Values
Enum Value | Description |
---|---|
|
|
|
Example
"DRAFT"
SearchTerm
Fields
Input Field | Description |
---|---|
andTerms_all - [String!]
|
Provides additional search terms to check for in a job detailed description. Results must contain all of the additional search terms |
orTerms_any - [String!]
|
Provides additional search terms to check for in a job detailed description. Results must contain at least one of the search terms |
exactTerms_any - [String!]
|
Identifies a phrase that all jobs in the search results must contain |
excludeTerms_any - [String!]
|
Identifies a word or phrase that should not appear in any job in the search results |
Example
{
"andTerms_all": ["xyz789"],
"orTerms_any": ["xyz789"],
"exactTerms_any": ["xyz789"],
"excludeTerms_any": ["abc123"]
}
SegmentationType
WorkFlowStateStatus
Values
Enum Value | Description |
---|---|
|
|
|
Example
"CLOSED"
Users and teams
AccessRestictionReason
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ROLES_MISMATCH"
AgencyDetails
BillingType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"BILL"
ClientVerificationStatus
Values
Enum Value | Description |
---|---|
|
|
|
1 |
|
2 |
|
3 |
|
4 |
Example
"VERIFIED"
CompanyInfo
Fields
Field Name | Description |
---|---|
public - PublicCompanyInfo
|
|
private - PrivateCompanyInfo
|
Example
{
"public": PublicCompanyInfo,
"private": PrivateCompanyInfo
}
CurrentOrganization
Description
Information about current Organization
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the current organization |
rid - ID
|
Record ID of the organization |
legacyId - ID
|
|
name - String
|
Name of the current organization |
type - OrganizationType
|
Type of the Organization. Possible values are BUSINESS / SOLE_PROPRIETOR |
legacyType - OrganizationLegacyType
|
LEgacy type of the Organization. Posibble values are CLIENT / VENDOR |
flag - OrganizationFlag
|
Flag associated with the Organization |
parentOrganization - CurrentOrganization
|
Information about the parent Organization, if any |
active - Boolean
|
Indicates whether this organization is active. Applicable to a team organization. |
hidden - Boolean
|
Indicates whether this organization/team is hidden. Applicable to a team organization. |
childOrganizations - [CurrentOrganization]
|
list of teams within the root organization. Available only for the root organization ( where parentOrganization is NULL ) if userId is not provided by default will be used current user |
Arguments
|
|
childOrganization - CurrentOrganization
|
specific team within the root organization. Available only for the root organization ( where parentOrganization is NULL ) if userId is not provided by default will be used current user |
company - PrivateCompanyInfo
|
Private information about current company |
photoUrl - String
|
|
creationDate - String
|
|
staffs - StaffsConnection!
|
List of organization's staff, Offset is the UID of staff to start search from. Leave it blank or null when querying the first page. Use the UID of last returned staff for next page request. limit is the page size. If empty then default page limit (100 entries) would be applied. |
Arguments
|
|
permissions - UserPermissions
|
Get user permissions under organization |
Arguments
|
|
agencyOffers - ContractOfferConnection
|
List of offers for root agency organization |
Arguments
|
|
clientOffers - ContractOfferConnection
|
List of offers for the client organization The maximum page size is 50 |
Arguments |
|
clientTimeReport - [TimeReport!]
|
List of client time reports for the given date time range, both inclusive use clientContractTimeReport instead |
Arguments
|
|
clientContractTimeReport - TimeReportConnection!
|
|
Arguments
|
|
agencyTimeReport - [TimeReport!]
|
List of agency time reports for the given date time range, both inclusive use agencyContractTimeReport instead |
Arguments
|
|
agencyContractTimeReport - TimeReportConnection
|
|
Arguments
|
|
privateTalentClouds - [PrivateTalentCloud!]
|
|
jobPosting - JobPostingConnection
|
|
Arguments
|
Example
{
"id": "4",
"rid": 4,
"legacyId": 4,
"name": "xyz789",
"type": "BUSINESS",
"legacyType": "CLIENT",
"flag": OrganizationFlag,
"parentOrganization": CurrentOrganization,
"active": true,
"hidden": false,
"childOrganizations": [CurrentOrganization],
"childOrganization": CurrentOrganization,
"company": PrivateCompanyInfo,
"photoUrl": "abc123",
"creationDate": "xyz789",
"staffs": StaffsConnection,
"permissions": UserPermissions,
"agencyOffers": ContractOfferConnection,
"clientOffers": ContractOfferConnection,
"clientTimeReport": [TimeReport],
"clientContractTimeReport": TimeReportConnection,
"agencyTimeReport": [TimeReport],
"agencyContractTimeReport": TimeReportConnection,
"privateTalentClouds": [PrivateTalentCloud],
"jobPosting": JobPostingConnection
}
CurrentUser
Description
Information about a user as an entity
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique user identifier Example: 1181921839933591552 |
nid - ID!
|
Nickname ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: foofreelancer |
rid - ID!
|
Record ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: 2366358 |
email - String
|
Email of user. |
name - String
|
First name + abbreviated last name, e.g. John Smith -> John S. |
permissions - UserPermissions
|
|
Arguments
|
|
photoUrl - String
|
photo url of the user. |
offer - ContractOfferConnection
|
List of Offers available to the current user/freelancer Sort options: Team, StartDate, EndDate, ContractName, FreelancerName, ClientCompanyName, ClientName, State |
Arguments
|
|
timeReport - [TimeReport!]
|
List of time reports for the current user(freelancer) and given date range, both inclusive use contractTimeReport instead |
Arguments
|
|
contractTimeReport - TimeReportConnection!
|
|
Arguments
|
|
freelancerProfile - FreelancerProfile
|
|
ciphertext - String
|
|
i18NSettings - I18nSettings!
|
User's i18n settings The input argument companyReferenceId is used in different checks for agencies, companies and independent contractors; For freelancers, the value shouldn't be provided. |
Arguments
|
|
talentProfile - TalentProfile
|
Current user's primary freelancer profile data |
Example
{
"id": 4,
"nid": 4,
"rid": 4,
"email": "xyz789",
"name": "xyz789",
"permissions": UserPermissions,
"photoUrl": "abc123",
"offer": ContractOfferConnection,
"timeReport": [TimeReport],
"contractTimeReport": TimeReportConnection,
"freelancerProfile": FreelancerProfile,
"ciphertext": "abc123",
"i18NSettings": I18nSettings,
"talentProfile": TalentProfile
}
GenericOrganization
Description
Information about regular organization
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the current organization |
rid - ID
|
Record ID of the organization |
legacyId - ID
|
|
name - String
|
Name of the current organization |
type - OrganizationType
|
Type of the Organization. Possible values are BUSINESS / SOLE_PROPRIETOR |
legacyType - OrganizationLegacyType
|
LEgacy type of the Organization. Posibble values are CLIENT / VENDOR |
flag - OrganizationFlag
|
Flag associated with the Organization |
parentOrganization - GenericOrganization
|
Information about the parent Organization, if any |
active - Boolean
|
Indicates whether this organization is active. Applicable to a team organization. |
hidden - Boolean
|
Indicates whether this organization/team is hidden. Applicable to a team organization. |
company - PrivateCompanyInfo
|
Private information about current company |
photoUrl - String
|
Photo URL/Logo for the organization , if any and if user has access to it , other wise null |
creationDate - String
|
|
agencyOffers - ContractOfferConnection
|
List of offers for root agency organization |
Arguments
|
|
clientOffers - ContractOfferConnection
|
List of offers for the client organization The maximum page size is 50 |
Arguments |
|
jobPosting - JobPostingConnection
|
|
Arguments
|
Example
{
"id": "4",
"rid": "4",
"legacyId": "4",
"name": "abc123",
"type": "BUSINESS",
"legacyType": "CLIENT",
"flag": OrganizationFlag,
"parentOrganization": GenericOrganization,
"active": false,
"hidden": false,
"company": PrivateCompanyInfo,
"photoUrl": "abc123",
"creationDate": "abc123",
"agencyOffers": ContractOfferConnection,
"clientOffers": ContractOfferConnection,
"jobPosting": JobPostingConnection
}
GenericUser
Description
Information about regular user
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique user identifier Example: 1181921839933591552 |
nid - ID!
|
Nickname ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: foofreelancer |
rid - ID!
|
Record ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: 2366358 |
name - String
|
First name + abbreviated last name, e.g. John Smith -> John S. |
firstName - String
|
First name of the user. |
lastName - String
|
Last name of the user. |
photoUrl - String
|
photo url of the user. |
publicUrl - String
|
The public user url |
email - String
|
email of user |
location - UserLocation
|
|
freelancerProfile - FreelancerProfile
|
|
ciphertext - String
|
|
talentProfile - TalentProfile
|
FreelancerProfile from ORPC is being deprecated We should transition general profile to use TalentProfile instead |
Example
{
"id": "4",
"nid": "4",
"rid": 4,
"name": "abc123",
"firstName": "xyz789",
"lastName": "abc123",
"photoUrl": "xyz789",
"publicUrl": "xyz789",
"email": "abc123",
"location": UserLocation,
"freelancerProfile": FreelancerProfile,
"ciphertext": "abc123",
"talentProfile": TalentProfile
}
Organization
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the current organization |
rid - ID
|
Record ID of the organization |
legacyId - ID
|
|
name - String
|
Name of the current organization |
type - OrganizationType
|
Type of the Organization. Possible values are BUSINESS / SOLE_PROPRIETOR |
legacyType - OrganizationLegacyType
|
LEgacy type of the Organization. Posibble values are CLIENT / VENDOR |
flag - OrganizationFlag
|
Flag associated with the Organization |
active - Boolean
|
Indicates whether this organization is active. Applicable to a team organization. |
hidden - Boolean
|
Indicates whether this organization/team is hidden. Applicable to a team organization. |
company - PrivateCompanyInfo
|
Private information about current company |
photoUrl - String
|
|
creationDate - String
|
Possible Types
Organization Types |
---|
Example
{
"id": 4,
"rid": 4,
"legacyId": 4,
"name": "abc123",
"type": "BUSINESS",
"legacyType": "CLIENT",
"flag": OrganizationFlag,
"active": true,
"hidden": true,
"company": PrivateCompanyInfo,
"photoUrl": "xyz789",
"creationDate": "xyz789"
}
OrganizationFlag
OrganizationLegacyType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"CLIENT"
OrganizationType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"BUSINESS"
OrgLegacyType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Client"
OrgType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Business"
OrgUserPermissionFilter
Fields
Input Field | Description |
---|---|
userId - String
|
|
resourceType_eq - ResourceType!
|
|
actions_any - [String!]!
|
|
limit - Int
|
|
offset - String
|
|
performExternalChecks_eq - Boolean
|
|
teamOrgIds_any - [ID!]
|
the teamOrgIds in which the permissions for the resourceType and action are needed |
returnAllTeams - Boolean
|
return all teams if teamOrgIds is not specified, else only parent organization is returned. Default = false |
Example
{
"userId": "xyz789",
"resourceType_eq": "OPENING",
"actions_any": ["xyz789"],
"limit": 987,
"offset": "xyz789",
"performExternalChecks_eq": false,
"teamOrgIds_any": [4],
"returnAllTeams": true
}
PaymentVerificationResult
Fields
Field Name | Description |
---|---|
status - PaymentVerificationStatus
|
|
paymentVerified - Boolean
|
A flag that indicates whether the payment method is verified or not |
Example
{"status": "DEPOSIT_UNSUPPORTED", "paymentVerified": true}
PaymentVerificationStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEPOSIT_UNSUPPORTED"
PiiUser
Description
The personal identifiable information (PII) of the user. This model is used when personal information needs to be exposed to public and enterprise clients.
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique user identifier Example: 1181921839933591552 |
nid - ID!
|
Nickname ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: foofreelancer |
rid - ID!
|
Record ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: 2366358 |
name - String
|
First name + abbreviated last name, e.g. John Smith -> John S. |
firstName - String
|
First name of the user. |
lastName - String
|
Last name of the user. |
photoUrl - String
|
photo url of the user. |
publicUrl - String
|
The public user url |
email - String
|
email of user |
location - UserLocation
|
|
ciphertext - String
|
Example
{
"id": "4",
"nid": 4,
"rid": 4,
"name": "xyz789",
"firstName": "xyz789",
"lastName": "abc123",
"photoUrl": "abc123",
"publicUrl": "abc123",
"email": "abc123",
"location": UserLocation,
"ciphertext": "xyz789"
}
PrivateCompanyInfo
Fields
Field Name | Description |
---|---|
id - ID!
|
|
name - String
|
|
description - String
|
|
legacyType - PrivateCompanyLegacyType
|
|
logoURL - String
|
|
contactUser - GenericUser
|
|
phone - String
|
|
displayName - String
|
|
teamsEnabled - Boolean
|
|
canHire - Boolean
|
|
hidden - Boolean
|
|
includeInStats - Boolean
|
No longer available for orgs |
companyName - String
|
|
country - Country
|
|
state - String
|
|
city - String
|
|
address - String
|
|
zip - String
|
|
timezone - String
|
|
accountingEntity - String
|
|
billingType - BillingType
|
|
summary - String
|
|
paymentVerificationStatus - PaymentVerificationStatus
|
use paymentVerification instead |
paymentVerification - PaymentVerificationResult
|
|
agencyDetails - AgencyDetails
|
|
jobPosts - JobPostingConnection!
|
Job posts of the company |
Arguments
|
Example
{
"id": 4,
"name": "xyz789",
"description": "xyz789",
"legacyType": "CLIENT",
"logoURL": "abc123",
"contactUser": GenericUser,
"phone": "xyz789",
"displayName": "xyz789",
"teamsEnabled": true,
"canHire": false,
"hidden": false,
"includeInStats": false,
"companyName": "xyz789",
"country": Country,
"state": "abc123",
"city": "xyz789",
"address": "xyz789",
"zip": "abc123",
"timezone": "abc123",
"accountingEntity": "xyz789",
"billingType": "BILL",
"summary": "abc123",
"paymentVerificationStatus": "DEPOSIT_UNSUPPORTED",
"paymentVerification": PaymentVerificationResult,
"agencyDetails": AgencyDetails,
"jobPosts": JobPostingConnection
}
PrivateCompanyLegacyType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"CLIENT"
PublicCompanyInfo
Fields
Field Name | Description |
---|---|
id - ID!
|
|
name - String
|
|
description - String
|
|
legacyType - OrganizationLegacyType
|
|
logoURL - String
|
Example
{
"id": 4,
"name": "xyz789",
"description": "abc123",
"legacyType": "CLIENT",
"logoURL": "abc123"
}
ResourceType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OPENING"
Staff
Fields
Field Name | Description |
---|---|
id - ID
|
|
user - GenericUser
|
|
activationStatus - Int
|
Enum representing the activation status
|
creationDate - String
|
|
staffType - Int
|
Enum representing the type of staff within the organization.
|
Example
{
"id": "4",
"user": GenericUser,
"activationStatus": 123,
"creationDate": "xyz789",
"staffType": 123
}
StaffsConnection
Fields
Field Name | Description |
---|---|
edges - [StaffsConnectionEdge]!
|
|
totalCount - Int
|
|
pageInfo - PageInfo
|
Example
{
"edges": [StaffsConnectionEdge],
"totalCount": 987,
"pageInfo": PageInfo
}
StaffsConnectionEdge
Fields
Field Name | Description |
---|---|
node - Staff
|
Example
{"node": Staff}
User
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique user identifier Example: 1181921839933591552 |
nid - ID!
|
Nickname ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: foofreelancer |
rid - ID!
|
Record ID of a user. Please, only use if really needed. Unique ID should be used when possible. Example: 2366358 |
ciphertext - String
|
Possible Types
User Types |
---|
Example
{
"id": "4",
"nid": "4",
"rid": "4",
"ciphertext": "abc123"
}
UserIdsByEmailRecordEdge
Fields
Field Name | Description |
---|---|
cursor - String
|
|
node - UserIdsByEmailRecordNode
|
Example
{
"cursor": "abc123",
"node": UserIdsByEmailRecordNode
}
UserIdsByEmailRecordNode
Fields
Field Name | Description |
---|---|
id - ID
|
|
email - String
|
|
visibilityLevel - FreelancerProfileVisibility
|
|
title - String
|
|
user - GenericUser
|
Example
{
"id": "4",
"email": "abc123",
"visibilityLevel": "PUBLIC",
"title": "abc123",
"user": GenericUser
}
UserIdsByEmailResponse
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [UserIdsByEmailRecordEdge!]
|
Example
{"totalCount": 987, "edges": [UserIdsByEmailRecordEdge]}
UserLocation
Description
Location of the user
Example
{
"countryName": "xyz789",
"cityName": "xyz789",
"zip": "abc123",
"timezone": "abc123",
"timezoneName": "abc123",
"street": "abc123",
"stateCode": "xyz789",
"offsetToUTC": 987
}
UserPermissionAccess
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ACCESS_DENIED"
UserPermissionEdge
Fields
Field Name | Description |
---|---|
node - UserPermissionNode
|
Example
{"node": UserPermissionNode}
UserPermissionFilter
Description
Filter to load specific user's permissions
Fields
Input Field | Description |
---|---|
resourceType_eq - ResourceType!
|
|
actions_any - [String!]!
|
|
limit - Int
|
|
offset - String
|
|
performExternalChecks_eq - Boolean
|
|
teamOrgIds_any - [ID!]
|
the teamOrgIds in which the permissions for the resourceType and action are needed |
returnAllTeams - Boolean
|
return all teams if teamOrgIds is not specified, else only parent organization is returned. Default = false |
returnFirstGrantedResult_eq - Boolean
|
return first granted result. Default = false |
Example
{
"resourceType_eq": "OPENING",
"actions_any": ["abc123"],
"limit": 987,
"offset": "abc123",
"performExternalChecks_eq": false,
"teamOrgIds_any": [4],
"returnAllTeams": true,
"returnFirstGrantedResult_eq": true
}
UserPermissionNode
Fields
Field Name | Description |
---|---|
organization - CurrentOrganization
|
top level organization in which the current user is logged in |
team - GenericOrganization
|
team or child organization in which permissions are listed. NULL indicates the permissions are applicable to the root organization |
action - String!
|
|
access - UserPermissionAccess!
|
|
reason - AccessRestictionReason
|
Example
{
"organization": CurrentOrganization,
"team": GenericOrganization,
"action": "abc123",
"access": "ACCESS_DENIED",
"reason": "ROLES_MISMATCH"
}
UserPermissions
Fields
Field Name | Description |
---|---|
edges - [UserPermissionEdge]
|
|
offset - String
|
Example
{
"edges": [UserPermissionEdge],
"offset": "abc123"
}
Other
AccountAuditRecord
Fields
Field Name | Description |
---|---|
processInstanceId - ID!
|
|
status - String
|
|
metadata - [StringMapElement!]!
|
Example
{
"processInstanceId": 4,
"status": "xyz789",
"metadata": [StringMapElement]
}
AccountingEntity
Fields
Field Name | Description |
---|---|
id - ID!
|
Example
{"id": "4"}
AccountProcessInstance
ActivitiesConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
Defines total amount of activities |
edges - [ActivityEdge!]
|
Defines list of activities |
page - Page
|
Defines page information |
Example
{
"totalCount": 987,
"edges": [ActivityEdge],
"page": Page
}
Activity
Fields
Field Name | Description |
---|---|
totalContracts - Int!
|
Defines the total number of associated contracts Example: "0" |
url - String
|
Defines associated URL |
codeOrder - String
|
Defines code order Example: "team_task_01" |
status - String!
|
Defines activity status Example: "active" |
level - String
|
Defines activity level Example: "team" |
contracts - [ActivityContract]
|
Defines list of related contracts Example: "[12345, 67890]" |
userId - ID
|
Defines the user, which the activity is assigned to |
code - String!
|
Defines activity code |
createdTime - String
|
Defines the exact time when the activity was created Example: "2023-01-16 09:12:57" |
companyId - String
|
Defines the company ID, which the activity belongs to Example: "mycompanyid" |
recordId - ID!
|
Defines unique record ID |
teamId - ID
|
Defines the team ID, which the activity belongs to Example: "myteamid" |
description - String
|
Defines activity description Example: "my test activity" |
Example
{
"totalContracts": 987,
"url": "xyz789",
"codeOrder": "xyz789",
"status": "xyz789",
"level": "xyz789",
"contracts": [ActivityContract],
"userId": 4,
"code": "xyz789",
"createdTime": "xyz789",
"companyId": "xyz789",
"recordId": 4,
"teamId": "4",
"description": "abc123"
}
ActivityContract
Fields
Field Name | Description |
---|---|
contractId - ID!
|
Defines contract ID Example: "12345" |
Example
{"contractId": 4}
ActivityEdge
Fields
Field Name | Description |
---|---|
node - Activity
|
Defines activity node |
Example
{"node": Activity}
ActivityFilterInput
AddTeamActivityRequest
Fields
Input Field | Description |
---|---|
code - String!
|
An activity tracking code (this defines the activity tracking code) |
description - String!
|
The description of the code being added |
contractIds - [ID!]
|
List of associated contracts |
budget - Float
|
The budget for the activity |
batchAssignment - BatchAssignmentOptions
|
The level of the activity |
Example
{
"code": "abc123",
"description": "xyz789",
"contractIds": ["4"],
"budget": 987.65,
"batchAssignment": "selectedContracts"
}
AttrGroupFilter
Example
{
"attributeGroupId": "4",
"metadataContext": "abc123",
"metadataCategoryId": "4",
"metadataSubCategoryId": "4",
"metadataVersion": "abc123"
}
AttributeSkillsMap
AuditTime
Description
Type to represent both entity creation and modified time
Example
{
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789"
}
AvailabilitySource
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"st_assgn_e"
AvailableScope
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"INTERNAL"
BatchAssignmentOptions
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"selectedContracts"
BillRate
Boolean
Description
Built-in Boolean
BroaderOccupationMap
Fields
Field Name | Description |
---|---|
broader - String!
|
|
occupation - Occupation
|
Example
{
"broader": "xyz789",
"occupation": Occupation
}
CategoryServicesResponse
Fields
Field Name | Description |
---|---|
categories - [Occupation!]!
|
|
categoryServices - [StringMapOccupation!]!
|
Example
{
"categories": [Occupation],
"categoryServices": [StringMapOccupation]
}
CategorySubcategory
Fields
Field Name | Description |
---|---|
category - Occupation!
|
|
subcategory - Occupation!
|
Example
{
"category": Occupation,
"subcategory": Occupation
}
Cell
CompanySelector
Description
Company selector provides information on companies that user can select
Fields
Field Name | Description |
---|---|
items - [CompanySelectorItem!]!
|
List of items available in company selector for the current user |
Example
{"items": [CompanySelectorItem]}
CompanySelectorItem
Description
Item available in company selector. Please, note that this structure uses terms that might be similar to terms used in other cases. However, fields of this structure are only used to build company selector and are not meant to be used otherwise.
Fields
Field Name | Description |
---|---|
title - String!
|
The title of this item. May or may not be the same as the organization"s name. |
photoUrl - String
|
The URL of the thumbnail image for this item. May or may not be the same as the organization"s photo URL. |
organizationId - String!
|
The UID of the organization this item refers to. Only used to construct links on UI |
organizationRid - String
|
The RID of the organization. Used to construct links on the UI. |
organizationType - CompanySelectorOrganizationType
|
The type of the organization. |
organizationLegacyType - CompanySelectorOrganizationLegacyType
|
The legacy type of the organization |
organizationEnterpriseType - CompanySelectorOrganizationEnterpriseType
|
The enterprise type of the organization |
legacyEnterpriseOrganization - Boolean
|
Is the organization a legacy enterprise organization. |
typeTitle - String
|
Contains organization type like Agency or Client |
Example
{
"title": "abc123",
"photoUrl": "xyz789",
"organizationId": "abc123",
"organizationRid": "abc123",
"organizationType": "Business",
"organizationLegacyType": "Client",
"organizationEnterpriseType": "Standard",
"legacyEnterpriseOrganization": true,
"typeTitle": "xyz789"
}
CompanySelectorOrganizationEnterpriseType
Description
The enterprise type of the organization
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Standard"
CompanySelectorOrganizationLegacyType
Description
The legacy type of the organization
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Client"
CompanySelectorOrganizationType
Description
The type of the organization
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Business"
ContractActionResponse
Fields
Field Name | Description |
---|---|
success - Boolean!
|
Defines success status |
Example
{"success": true}
ContractOfferLastEvent
ContractOfferLegacyState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Draft"
ContractOfferTermsVersion
Values
Enum Value | Description |
---|---|
|
|
|
Example
"V1"
ContractOfferVendorType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"FREELANCER"
ContractType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"HOURLY"
Country
Description
Information about a country
Fields
Field Name | Description |
---|---|
id - ID
|
|
name - String
|
Geographical name of a country |
twoLetterAbbreviation - String
|
Official two-letter abbrevation of a country. i.e. iso2Code |
threeLetterAbbreviation - String
|
Official three-letter abbreviation of a country, i.e. iso3Code |
region - CountryRegion!
|
Region that country belongs to. Currently only EU is recognized |
phoneCode - String
|
|
relatedRegion - Region
|
|
relatedSubRegion - Region
|
|
active - Boolean
|
|
registrationAllowed - Boolean
|
Example
{
"id": "4",
"name": "abc123",
"twoLetterAbbreviation": "abc123",
"threeLetterAbbreviation": "abc123",
"region": "EU",
"phoneCode": "xyz789",
"relatedRegion": Region,
"relatedSubRegion": Region,
"active": true,
"registrationAllowed": false
}
CountryRegion
Values
Enum Value | Description |
---|---|
|
|
|
Example
"EU"
CreateEmploymentRecordInput
Description
Profile Mutation: create employment record input
Fields
Input Field | Description |
---|---|
userId - ID
|
|
companyName - String!
|
|
jobTitle - String!
|
|
standardizedCompanyId - String
|
|
standardizedJobTitleId - String
|
|
role - String!
|
|
startDate - String!
|
start date - e.g: "1999-01-01" |
endDate - String
|
end date - e.g: "2002-01-01" |
description - String
|
|
city - String!
|
|
country - String!
|
Example
{
"userId": "4",
"companyName": "abc123",
"jobTitle": "xyz789",
"standardizedCompanyId": "xyz789",
"standardizedJobTitleId": "xyz789",
"role": "xyz789",
"startDate": "abc123",
"endDate": "xyz789",
"description": "xyz789",
"city": "xyz789",
"country": "abc123"
}
CreateManagedProjectServicesBatchInput
Description
Input definitions
Fields
Input Field | Description |
---|---|
batchId - ID!
|
your own unique identifier |
batchData - [CreateManagedProjectServicesInput]!
|
list of key value pairs to be processed |
Example
{
"batchId": "4",
"batchData": [CreateManagedProjectServicesInput]
}
CreateManagedProjectServicesEntryInput
Description
Key value pair to be processed. Refer to the Supported keys:
- key=skuSlug, The SKU identifier, provided during partner onboarding. Required field
- key=partnerPurchaseId, The partner purchase unique identifier. Required field.
- key=orderTimestamp, The order's timestamp. Must be in ISO 8601 format: YYYY-MM-DDTHH:MM:SS (e.g., 2024-08-23T15:45:30), required field.
- key=email, A valid customer email address. This email address will be used to send the magic link to the customer. Required field.
- key=firstName, Customer's first name. Required field.
- key=lastName, Customer's last name. Required field.
- key=skuCurrency, Currency used for the transaction. Supported values (USD and EUR). Required field.
- key=skuAmountPaid, Must be a string representation of a number greater than or equal to 0. Required field.
- key=customerCountry, Customer's Country Code. Optional field. Must follow the ISO 3166-1 alpha-2 standard (e.g., "US" for the United States).
- key=customerState, State/Province Code where applicable. Optional field. Must follow ISO 3166-2 standard where applicable (e.g., "CA" for California).
- key=customerCity, Customer's city name. Optional field. Must be a non-empty string.
- key=customerPostalCode, Customer's postal code. Optional field. Must not include any special characters.
- key=UAT, Boolean indicator. Optional field. True if the engagement does not activate the workflow, false otherwise. Used for client onboarding only with Partner Management Team
Example
{
"key": "xyz789",
"value": "xyz789"
}
CreateManagedProjectServicesInput
Fields
Input Field | Description |
---|---|
data - [CreateManagedProjectServicesEntryInput]!
|
Example
{"data": [CreateManagedProjectServicesEntryInput]}
CreateOfferDeliveryModelInput
Values
Enum Value | Description |
---|---|
|
Example
"TalentMarketplace"
CreateOrganizationInput
Fields
Input Field | Description |
---|---|
parentOrganizationId - ID!
|
|
organizationName - String!
|
|
aceRid - String
|
|
country - String
|
|
type - OrganizationRequestType
|
Example
{
"parentOrganizationId": "4",
"organizationName": "xyz789",
"aceRid": "xyz789",
"country": "abc123",
"type": "AGENCY"
}
CreationOfferInput
Fields
Input Field | Description |
---|---|
interactive - Boolean
|
|
idempotencyKey - String
|
|
ignoreTestAccount - Boolean
|
|
kind - OfferKindInput!
|
|
offeror - OfferorInput!
|
|
clientTeamId - ID!
|
|
vendorUser - VendorUserInput!
|
|
metadata - OfferMetadataInput!
|
|
attachments - [String!]
|
|
title - String!
|
|
description - String
|
|
contractStartDateTime - String
|
required for Enterprise offers, optional for marketplace offers |
contractEndDateTime - String
|
required for Enterprise Compliance offers (and must not be more than 180 days into the future from the start date); optional (and ignored) for others |
hourlyRateTerms - OfferHourlyRateTerms
|
|
stipendTerms - OfferStipendTerms
|
|
milestoneTerms - OfferMilestoneTerms
|
|
deliveryModel - CreateOfferDeliveryModelInput!
|
|
closeOnAccept - Boolean
|
False by default. Default = false |
scheduledRateIncrease - OfferScheduledRateIncreaseInput
|
only allowed for Marketplace offers |
customFields - [StringMapElementInput]
|
|
offerLocation - OfferLocationInput
|
|
offerPayroll - OfferPayrollInput
|
Example
{
"interactive": true,
"idempotencyKey": "xyz789",
"ignoreTestAccount": true,
"kind": "Vanilla",
"offeror": "Client",
"clientTeamId": "4",
"vendorUser": VendorUserInput,
"metadata": OfferMetadataInput,
"attachments": ["xyz789"],
"title": "xyz789",
"description": "xyz789",
"contractStartDateTime": "xyz789",
"contractEndDateTime": "xyz789",
"hourlyRateTerms": OfferHourlyRateTerms,
"stipendTerms": OfferStipendTerms,
"milestoneTerms": OfferMilestoneTerms,
"deliveryModel": "TalentMarketplace",
"closeOnAccept": true,
"scheduledRateIncrease": OfferScheduledRateIncreaseInput,
"customFields": [StringMapElementInput],
"offerLocation": OfferLocationInput,
"offerPayroll": OfferPayrollInput
}
CustomPaymentInput
CustomPaymentResponse
Fields
Field Name | Description |
---|---|
invoiceId - ID!
|
Invoice ID |
Example
{"invoiceId": "4"}
CustomPaymentType
Values
Enum Value | Description |
---|---|
|
Example
"BONUS"
DateTime
DateTimeRange
Day
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MONDAY"
Deliverable
Fields
Field Name | Description |
---|---|
id - ID!
|
|
ontologyId - String!
|
ontologyId is a semantic identifier that uniquely identifies an ontology element Its value doesn't depend on the environment (same for dev, staging, prod) Example: upwork:AdministrationSoftware |
type - [OntologyEntityType]!
|
|
entityStatus - OntologyEntityStatus!
|
Defines the status of an occupation.
|
preferredLabel - String!
|
Defines the label of the entity that is displayed across Upwork. It must be a unique value. |
definition - String
|
|
createdDateTime - String
|
Defines (when available) the date (timestamp) of creation for the entity. |
modifiedDateTime - String
|
Defines (when available) the date (timestamp) of update for the entity. |
Example
{
"id": 4,
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"definition": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "abc123"
}
ElementSkillMap
EndContractInput
Fields
Input Field | Description |
---|---|
endDate - String
|
End contract date (timestamp) defaults to the current day |
feedbackInfo - FeedbackInfoInput
|
Feedback provided as part of end-of-contract action |
reasonRef - String!
|
Contract end reason ID. Optional. See Query.reasons(reasonType: CONTRACT_END_HOURLY) and Query.reasons(reasonType: CONTRACT_END_FIXED) for the list of possible reasons. |
Example
{
"endDate": "xyz789",
"feedbackInfo": FeedbackInfoInput,
"reasonRef": "abc123"
}
EngagementDuration
FailedInvitation
FeedbackInfoInput
Example
{
"availabilityScore": 987,
"comment": "xyz789",
"communicationScore": 123,
"cooperationScore": 123,
"deadlinesScore": 987,
"qualityScore": 987,
"skillsScore": 123
}
File
Example
{
"name": "abc123",
"uri": "abc123",
"encoding": "abc123",
"size": 123,
"createdDateTime": "xyz789"
}
Float
Description
Built-in Float
Example
123.45
FloatRange
FreelancerLanguageInput
Description
Profile Mutation: create freelancer language input
Fields
Input Field | Description |
---|---|
userId - ID
|
|
iso639Code - String
|
|
language - LanguageDataInput!
|
Example
{
"userId": 4,
"iso639Code": "abc123",
"language": LanguageDataInput
}
FreelancerLocation
FreelancerProfile
Description
Freelancer Profile details.
Fields
Field Name | Description |
---|---|
user - CurrentUser!
|
the user (freelancer) who owns this profile |
personalData - FreelancerProfilePersonalData!
|
personal data of the profile.(firstName, lastName, etc) |
userPreferences - FreelancerProfileUserPreferences!
|
user preferences of the profile.(Eg: profileAccess, hideEarnings, etc) |
otherExperiences - FreelancerProfileOtherExperiencesConnection!
|
list of otherExperiences. Eg: otherExperiences with subject eq 'Web Development' |
Arguments
|
|
languages - FreelancerProfileLanguagesConnection!
|
list of languages that freelancer can speak |
educationRecords - [FreelancerProfileEducationRecord!]!
|
list of educationRecords. eg: educationRecords where areaOfStudy eq Computer Engineering |
Arguments
|
|
certificates - [FreelancerProfileCertificate]
|
list of certificates earned by freelancer. |
employmentRecords - [FreelancerProfileEmploymentRecord!]!
|
list of employmentRecords. Eg: employmentRecords where country eq US |
availability - FreelancerProfileAvailability
|
freelancer's availability |
committedResponseTime - FreelancerProfileCommittedResponseTime
|
response times committed by Freelancer. Currently they can be immediate, soon or never. |
project - FreelancerProfileProject
|
project of the profile by it's ID |
Arguments
|
|
skills - FreelancerSkillsConnection!
|
list of freelancer skills. |
aggregates - FreelancerProfileAggregates!
|
freelancer profile aggregates |
jobCategories - FreelancerProfileJobCategoriesConnection
|
job categories selected by the freelancer on their profile. |
profileCompletenessSummary - FreelancerProfileCompletenessSummary
|
profile completeness summary |
linkedExternalAccountsList - FreelancerProfileLinkedExternalAccountsConnection!
|
list of external social network accounts |
verifications - FreelancerProfileVerifications
|
verification data ( phone verified, webcam verified) of the profile. |
fullName - String!
|
Freelancer first name + last name |
firstName - String!
|
Freelancer first name |
lastName - String!
|
Freelancer last name |
countryDetails - Country
|
|
email - String
|
|
portrait - Portrait
|
|
phoneNumber - PhoneNumber
|
phone number visible only for the current user |
privateTalentCloud - PrivateTalentCloudConnection!
|
talent clouds that the freelancer is part of |
Example
{
"user": CurrentUser,
"personalData": FreelancerProfilePersonalData,
"userPreferences": FreelancerProfileUserPreferences,
"otherExperiences": FreelancerProfileOtherExperiencesConnection,
"languages": FreelancerProfileLanguagesConnection,
"educationRecords": [FreelancerProfileEducationRecord],
"certificates": [FreelancerProfileCertificate],
"employmentRecords": [
FreelancerProfileEmploymentRecord
],
"availability": FreelancerProfileAvailability,
"committedResponseTime": FreelancerProfileCommittedResponseTime,
"project": FreelancerProfileProject,
"skills": FreelancerSkillsConnection,
"aggregates": FreelancerProfileAggregates,
"jobCategories": FreelancerProfileJobCategoriesConnection,
"profileCompletenessSummary": FreelancerProfileCompletenessSummary,
"linkedExternalAccountsList": FreelancerProfileLinkedExternalAccountsConnection,
"verifications": FreelancerProfileVerifications,
"fullName": "xyz789",
"firstName": "xyz789",
"lastName": "xyz789",
"countryDetails": Country,
"email": "xyz789",
"portrait": Portrait,
"phoneNumber": PhoneNumber,
"privateTalentCloud": PrivateTalentCloudConnection
}
FreelancerProfileAggregates
Description
End ProfilePart: Freelancer's ProjectList ProfilePart: ProfileAggregates TODO: More details on Aggregate attributes
Fields
Field Name | Description |
---|---|
user - GenericUser!
|
|
lastWorkedDateTime - String
|
It's the latest timestamp between the worked hours logged and the last payment date from the most recent contract. |
lastApplicationDate - String
|
Date when the user applied last time for a job |
totalHourlyJobs - Int
|
Total hourly jobs. |
totalHourlyJobsRecent - Int
|
Total hourly jobs done for last 180 days |
totalFixedJobs - Int
|
Total fixed price jobs. |
totalFixedJobsRecent - Int
|
Total fixed price jobs performed in the last 180 days |
responsiveness - String
|
Freelancer's responsiveness to client's invites |
totalRevenue - Money
|
Total Revenue. The actual amount, freelancer has received. |
activeInterviews - Int
|
Total no of interviews in progress. |
currentContracts - Int
|
Total no of active contracts. |
jobSuccessScore - Float
|
Job Success Score calculated Biweekly |
topRatedStatus - String
|
Top rated status |
topRatedPlusStatus - String
|
Top rated plus status |
vetted - Boolean
|
Flag that indicates if freelancer is expert-vetted |
totalHoursActual - Float
|
Total hours calculated by total charges divided by hourly rate |
totalHours - Float
|
Total Billed Hours. A summation of billed hours with total charges >= $1. |
totalHoursRecent - Float
|
Total Hours worked for last 180 days |
totalFeedback - Float
|
Total Feedback score received |
totalFeedbackRecent - Float
|
Total Feedback score received for last 180 days |
billedContracts - Int
|
Number of contracts with total charges >= $1. |
billedContractsRecent - Int
|
Number of contracts with total charges >= $1 for last 180 days |
adjustedFeedbackScore - Float
|
freelancer Adjusted Score. A 5-star rating score the platform gives to each freelancer based on the feedback scores received in each completed contract. |
adjustedFeedbackScoreRecent - Float
|
freelancer adjusted average feedback score for the last 180 days |
profileStats - FreelancerProfileStats
|
|
lastActivityDateTime - String
|
Last Activity Timestamp captured by the platform from these activities: last job application submitted, last exam taken, last date worked, last date being hired, last payment date |
totalEarnings - Money
|
Life time Total Freelancer Earnings. The same value as Total Charge. |
topRatedStatusDatetime - String
|
The most recent timestamp when a freelancer being granted with a Top Rated status. |
recentEarnings - Money
|
|
averageRecentEarnings - Money
|
|
recentCharge - Money
|
|
averageRecentCharge - Money
|
|
qualityScore - Float
|
|
totalHoursRounded - Int
|
Total hours from Assignment table's "Hours" column |
Example
{
"user": GenericUser,
"lastWorkedDateTime": "xyz789",
"lastApplicationDate": "xyz789",
"totalHourlyJobs": 987,
"totalHourlyJobsRecent": 987,
"totalFixedJobs": 987,
"totalFixedJobsRecent": 123,
"responsiveness": "abc123",
"totalRevenue": Money,
"activeInterviews": 123,
"currentContracts": 987,
"jobSuccessScore": 123.45,
"topRatedStatus": "xyz789",
"topRatedPlusStatus": "abc123",
"vetted": true,
"totalHoursActual": 987.65,
"totalHours": 987.65,
"totalHoursRecent": 123.45,
"totalFeedback": 987.65,
"totalFeedbackRecent": 123.45,
"billedContracts": 123,
"billedContractsRecent": 987,
"adjustedFeedbackScore": 123.45,
"adjustedFeedbackScoreRecent": 987.65,
"profileStats": FreelancerProfileStats,
"lastActivityDateTime": "abc123",
"totalEarnings": Money,
"topRatedStatusDatetime": "xyz789",
"recentEarnings": Money,
"averageRecentEarnings": Money,
"recentCharge": Money,
"averageRecentCharge": Money,
"qualityScore": 123.45,
"totalHoursRounded": 123
}
FreelancerProfileAvailability
Description
End ProfilePart: Freelancer's Employment Record ProfilePart: Freelancer's Availability
Fields
Field Name | Description |
---|---|
id - ID!
|
|
user - GenericUser!
|
|
capacity - FreelancerProfileAvailabilityCapacity
|
availability capacity: eg: More than 30 hours/week, less than 30 hours/ As needed -Open to Offers. |
availabilityDateTime - String
|
if freelancer's not available, their next availability date. |
name - String!
|
|
createdDateTime - String!
|
Example
{
"id": 4,
"user": GenericUser,
"capacity": "fullTime",
"availabilityDateTime": "abc123",
"name": "abc123",
"createdDateTime": "abc123"
}
FreelancerProfileAvailabilityCapacity
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"fullTime"
FreelancerProfileAvailabilityInput
Description
Profile Mutation: create freelancer availability input
Fields
Input Field | Description |
---|---|
userId - ID!
|
This field must be deprecated(@unused) id will be extracted from current user context |
availability - FreelancerProfileCapacityInput!
|
Example
{
"userId": "4",
"availability": FreelancerProfileCapacityInput
}
FreelancerProfileCapacityInput
Fields
Input Field | Description |
---|---|
capacity - FreelancerProfileAvailabilityCapacity
|
|
availabilityDateTime - String
|
|
creationDateTime - String!
|
|
sourceInput - AvailabilitySource
|
Example
{
"capacity": "fullTime",
"availabilityDateTime": "abc123",
"creationDateTime": "xyz789",
"sourceInput": "st_assgn_e"
}
FreelancerProfileCertificate
Description
End ProfilePart: Freelancer's Education Records ProfilePart: Freelancer's Certificates
Example
{
"id": 4,
"earnedDate": "abc123",
"submissionCode": "abc123",
"notes": "xyz789",
"score": "abc123",
"active": true,
"verified": false,
"url": "abc123",
"createdDateTime": "abc123",
"lastUpdatedDateTime": "xyz789",
"expirationDate": "xyz789",
"externalId": "abc123"
}
FreelancerProfileCommittedResponseTime
Description
End ProfilePart: Freelancer's Availability ProfilePart: Freelancer's CommittedResponseTime
Fields
Field Name | Description |
---|---|
id - ID!
|
|
committedResponseTime - FreelancerProfileResponseTime
|
response times committed by Freelancer. Currently they can be immediate, soon or never. |
name - String
|
display name: Immediate (30 min) or Soon (12 hours) or Never |
createdDateTime - String!
|
|
updatedDateTime - String
|
Example
{
"id": "4",
"committedResponseTime": "NEVER",
"name": "xyz789",
"createdDateTime": "abc123",
"updatedDateTime": "abc123"
}
FreelancerProfileCompletenessSummary
Description
ProfilePart: Pci ( Profile Completeness Summary )
Fields
Field Name | Description |
---|---|
user - GenericUser!
|
|
actual - Int!
|
actual percentage completed |
display - Int!
|
display value of percentage complete |
action - String
|
action Message that needs to be displayed |
actionCredit - Int
|
percentage that gets added to the total percent complete , if action is taken |
actionForEmptySection - String
|
|
skillsCount - Int!
|
|
employmentRecordCount - Int!
|
no of employment experiences |
portraitRecordCount - Int!
|
no of portraits in the profile |
overviewRecordCount - Int!
|
no of overviews in the profile |
videoRecordCount - Int!
|
no of videos in the profile |
educationRecordCount - Int!
|
no of education records entered in the profile |
certificatesCount - Int!
|
no of certificates added against this profile. |
otherExperiencesCount - Int!
|
count of other experiences |
portfolioCount - Int!
|
count of portfolio project items. |
linkedExternalAccountsCount - Int!
|
no of external accounts that have been linked to this profile. |
createdDateTime - String!
|
Example
{
"user": GenericUser,
"actual": 987,
"display": 123,
"action": "abc123",
"actionCredit": 987,
"actionForEmptySection": "abc123",
"skillsCount": 987,
"employmentRecordCount": 123,
"portraitRecordCount": 123,
"overviewRecordCount": 987,
"videoRecordCount": 123,
"educationRecordCount": 123,
"certificatesCount": 123,
"otherExperiencesCount": 987,
"portfolioCount": 987,
"linkedExternalAccountsCount": 123,
"createdDateTime": "xyz789"
}
FreelancerProfileContract
Description
End ProfilePart: ProfileAggregates
Fields
Field Name | Description |
---|---|
id - ID!
|
|
description - String
|
|
title - String!
|
|
clientOrganization - GenericOrganization!
|
the client organization involved in this contract. |
type - FreelancerProfileContractType!
|
fixed or hourly contract. |
accessType - FreelancerProfileContractAccessType!
|
public or private |
private - Boolean!
|
|
job - JobPosting!
|
the job opening/posting that is associated with the contract. |
startDateTime - String!
|
when did the contract start |
endDateTime - String
|
when will the contract end |
totalCharges - Money
|
total money that was invoiced in this contract. |
totalHours - Float
|
no of total hours spent on this contract. |
hourlyRate - Money
|
hourly rate used by the freelancer for this contract. |
initialAmount - Money
|
|
feedbackToTheClient - FreelancerProfileContractFeedback
|
feedback provided by the freelancer when the contract ended. |
feedbackToTheFreelancer - FreelancerProfileContractFeedback
|
feedback provided by the client to the freelancer when the contract ended. |
isFromElance - Boolean
|
TODO: Probably Legacy: clarification required - this flag determines where this contract is from ; either Elance or ODesk ? |
Example
{
"id": "4",
"description": "xyz789",
"title": "abc123",
"clientOrganization": GenericOrganization,
"type": "Fixed",
"accessType": "PublicAccess",
"private": true,
"job": JobPosting,
"startDateTime": "abc123",
"endDateTime": "xyz789",
"totalCharges": Money,
"totalHours": 123.45,
"hourlyRate": Money,
"initialAmount": Money,
"feedbackToTheClient": FreelancerProfileContractFeedback,
"feedbackToTheFreelancer": FreelancerProfileContractFeedback,
"isFromElance": false
}
FreelancerProfileContractAccessType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PublicAccess"
FreelancerProfileContractFeedback
Fields
Field Name | Description |
---|---|
score - Float!
|
|
comment - String
|
|
publicComment - Boolean!
|
|
response - String
|
|
scoreDetails - [FreelancerProfileContractFeedbackScore!]
|
Example
{
"score": 123.45,
"comment": "abc123",
"publicComment": true,
"response": "abc123",
"scoreDetails": [FreelancerProfileContractFeedbackScore]
}
FreelancerProfileContractFeedbackScore
FreelancerProfileContractType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Fixed"
FreelancerProfileEducationRecord
Description
End ProfilePart: Freelancer's Languages ProfilePart: Freelancer's Education Records
Fields
Field Name | Description |
---|---|
id - ID!
|
|
user - GenericUser
|
|
institutionName - String!
|
|
standardizedInstitutionId - ID
|
|
areaOfStudy - String
|
|
standardizedAreaOfStudyId - ID
|
|
degree - String
|
|
standardizedDegreeId - ID
|
|
startDate - String
|
start date - formatted according to ISO-8601 |
endDate - String
|
end date - formatted according to ISO-8601 |
description - String
|
Example
{
"id": "4",
"user": GenericUser,
"institutionName": "xyz789",
"standardizedInstitutionId": "4",
"areaOfStudy": "xyz789",
"standardizedAreaOfStudyId": "4",
"degree": "abc123",
"standardizedDegreeId": "4",
"startDate": "xyz789",
"endDate": "abc123",
"description": "xyz789"
}
FreelancerProfileEducationRecordsFilter
FreelancerProfileEmploymentRecord
Description
End ProfilePart: Freelancer's Certificates ProfilePart: Freelancer's Employment Record
Fields
Field Name | Description |
---|---|
id - ID!
|
|
user - GenericUser!
|
|
companyName - String!
|
|
jobTitle - String!
|
|
standardizedCompanyId - String
|
|
standardizedJobTitleId - String
|
|
role - String
|
|
startDate - String!
|
start date formatted according to ISO-8601 |
endDate - String
|
end date - e.g: "2002-01-01" |
description - String
|
|
city - String!
|
|
country - String!
|
Example
{
"id": 4,
"user": GenericUser,
"companyName": "abc123",
"jobTitle": "xyz789",
"standardizedCompanyId": "abc123",
"standardizedJobTitleId": "abc123",
"role": "abc123",
"startDate": "abc123",
"endDate": "xyz789",
"description": "xyz789",
"city": "xyz789",
"country": "abc123"
}
FreelancerProfileExperienceLevel
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"NONE"
FreelancerProfileJobCategoriesConnection
Description
End ProfilePart: Freelancer's Contracts ProfilePart: Job Categories
Fields
Field Name | Description |
---|---|
edges - [FreelancerProfileJobCategoryEdge!]
|
Example
{"edges": [FreelancerProfileJobCategoryEdge]}
FreelancerProfileJobCategory
Fields
Field Name | Description |
---|---|
category - JobCategory
|
|
selectedSubCategories - [JobCategory!]!
|
Example
{
"category": JobCategory,
"selectedSubCategories": [JobCategory]
}
FreelancerProfileJobCategoryEdge
Fields
Field Name | Description |
---|---|
node - FreelancerProfileJobCategory!
|
Example
{"node": FreelancerProfileJobCategory}
FreelancerProfileLanguage
FreelancerProfileLanguageEdge
Fields
Field Name | Description |
---|---|
node - FreelancerProfileLanguage!
|
Example
{"node": FreelancerProfileLanguage}
FreelancerProfileLanguageProficiencyTitle
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"BASIC"
FreelancerProfileLanguagesConnection
Description
End ProfilePart: Other Experiences of the the freelancer ProfilePart: Freelancer's Languages Connection to the FreelancerLanguages list
Fields
Field Name | Description |
---|---|
edges - [FreelancerProfileLanguageEdge!]
|
Example
{"edges": [FreelancerProfileLanguageEdge]}
FreelancerProfileLinkedExternalAccounts
Fields
Field Name | Description |
---|---|
id - ID!
|
|
name - String!
|
name of the social network, eg: facebook, github, twitter etc |
expiryDateTime - String
|
expires on |
revokedDateTime - String
|
Revoked on |
authorizedDateTime - String!
|
Authorization done on |
userProfile - String!
|
link to the user profile on that social network |
Example
{
"id": 4,
"name": "xyz789",
"expiryDateTime": "abc123",
"revokedDateTime": "xyz789",
"authorizedDateTime": "xyz789",
"userProfile": "xyz789"
}
FreelancerProfileLinkedExternalAccountsConnection
Description
End ProfilePart: Pci ProfilePart: Linked External Accounts Connection to the Linked External Accounts
Fields
Field Name | Description |
---|---|
edges - [FreelancerProfileLinkedExternalAccountsEdge!]
|
Example
{"edges": [FreelancerProfileLinkedExternalAccountsEdge]}
FreelancerProfileLinkedExternalAccountsEdge
Fields
Field Name | Description |
---|---|
node - FreelancerProfileLinkedExternalAccounts!
|
Example
{"node": FreelancerProfileLinkedExternalAccounts}
FreelancerProfileOtherExperience
Fields
Field Name | Description |
---|---|
id - ID!
|
|
user - GenericUser!
|
|
subject - String!
|
subject of experience |
description - String!
|
description of experience |
active - Boolean
|
if this experience is still active |
createdDateTime - String!
|
date time formatted according to ISO-8601 |
updatedDateTime - String!
|
date time formatted according to ISO-8601 |
Example
{
"id": 4,
"user": GenericUser,
"subject": "xyz789",
"description": "xyz789",
"active": false,
"createdDateTime": "abc123",
"updatedDateTime": "abc123"
}
FreelancerProfileOtherExperienceEdge
Fields
Field Name | Description |
---|---|
node - FreelancerProfileOtherExperience!
|
|
cursor - String!
|
Example
{
"node": FreelancerProfileOtherExperience,
"cursor": "xyz789"
}
FreelancerProfileOtherExperiencesConnection
Description
End ProfilePart: Freelancer Profile UserPreferences ProfilePart: Other Experiences of the the freelancer Connection to the Other Experiences list
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [FreelancerProfileOtherExperienceEdge!]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 123,
"edges": [FreelancerProfileOtherExperienceEdge],
"pageInfo": PageInfo
}
FreelancerProfileOtherExperiencesFilter
Description
OtherExperiences related filters
Fields
Input Field | Description |
---|---|
subject_eq - String
|
Example
{"subject_eq": "xyz789"}
FreelancerProfilePersonalData
Description
ProfilePart: Personal data of the freelancer attributes of personal data.
Fields
Field Name | Description |
---|---|
firstName - String!
|
|
lastName - String!
|
|
portrait - Portrait
|
|
title - String
|
Profile Title |
description - String
|
Profile Description |
address - FreelancerLocation
|
freelancer address |
chargeRate - Money!
|
Freelancer's typical billing rate |
workPhone - String
|
|
profileUrl - String
|
link to the freelancer's profile |
profileState - PersonalDataProfileState
|
under Review, auto rejected, rejected, accepted etc. |
Example
{
"firstName": "xyz789",
"lastName": "xyz789",
"portrait": Portrait,
"title": "abc123",
"description": "abc123",
"address": FreelancerLocation,
"chargeRate": Money,
"workPhone": "xyz789",
"profileUrl": "xyz789",
"profileState": "IN_PROGRESS"
}
FreelancerProfileProject
Description
Portfolio projects of the Freelancer
Fields
Field Name | Description |
---|---|
id - ID!
|
|
title - String
|
portfolio project title |
description - String
|
description of the portfolio project |
contractLink - FreelancerProfileProjectContractLink
|
connection to the upwork contract if the project is done on upwork |
thumbnailId - String
|
pointer to the thumbnail |
thumbnailOriginalId - String
|
pointer to the thumbnail in original |
thumbnail - String
|
link to the thumbnail |
thumbnailOriginal - String
|
link to the original thumbnail |
projectUrl - String
|
url if exists for the portfolio project |
completionDateTime - String
|
the date when this project was completed |
public - Boolean
|
if this project is visible for upwork users or publically |
rank - Int
|
order of this portfolio project in all of the portfolio projects. |
attachments - [FreelancerProfileProjectAttachment!]
|
filtered list of project attachments. eg: type eq JPG |
skills - FreelancerSkillsConnection
|
list of skills associated with this freelancer's project. |
category - JobCategory
|
the top Level category associated to this portfolio project |
subCategory - JobCategory
|
level 2 category associated with this portfolio project. |
occupationId - String
|
associated occupation from the ontology, for this portfolio project. |
projectType - FreelancerProfileProjectType
|
case study, gallery or general. |
role - String
|
role played by the freelancer on this project. |
projectGoal - String
|
|
solution - String
|
project solution in case study for example. |
primaryImageId - String
|
|
createdDateTime - String!
|
Example
{
"id": 4,
"title": "abc123",
"description": "abc123",
"contractLink": FreelancerProfileProjectContractLink,
"thumbnailId": "xyz789",
"thumbnailOriginalId": "abc123",
"thumbnail": "abc123",
"thumbnailOriginal": "xyz789",
"projectUrl": "xyz789",
"completionDateTime": "xyz789",
"public": true,
"rank": 123,
"attachments": [FreelancerProfileProjectAttachment],
"skills": FreelancerSkillsConnection,
"category": JobCategory,
"subCategory": JobCategory,
"occupationId": "abc123",
"projectType": "CLASSIC_VIEW",
"role": "abc123",
"projectGoal": "abc123",
"solution": "xyz789",
"primaryImageId": "xyz789",
"createdDateTime": "abc123"
}
FreelancerProfileProjectAttachment
Example
{
"id": "4",
"link": "abc123",
"fileName": "xyz789",
"fileSize": 987,
"rank": 987,
"videoUrl": "xyz789",
"type": "xyz789",
"title": "abc123",
"description": "xyz789",
"imageSmall": "xyz789",
"imageMiddle": "xyz789",
"imageLarge": "xyz789"
}
FreelancerProfileProjectContractLink
Fields
Field Name | Description |
---|---|
id - ID!
|
|
contract - FreelancerProfileContract
|
|
state - String
|
|
project - FreelancerProfileProject
|
|
client - GenericUser
|
|
freelancer - GenericUser
|
|
notificationDateTime - String
|
|
createdDateTime - String!
|
Example
{
"id": "4",
"contract": FreelancerProfileContract,
"state": "xyz789",
"project": FreelancerProfileProject,
"client": GenericUser,
"freelancer": GenericUser,
"notificationDateTime": "xyz789",
"createdDateTime": "xyz789"
}
FreelancerProfileProjectType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"CLASSIC_VIEW"
FreelancerProfileResponseTime
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"NEVER"
FreelancerProfileSearchAreaInput
FreelancerProfileSearchFilter
Fields
Input Field | Description |
---|---|
userType - FreelancerProfileSearchUserTypeEnum!
|
|
weightedOntologyIds - [FreelancerProfileSearchWeightedOntologyIdInput]
|
weighted ontology ids |
keyword - String
|
modifier which provides a boost to the search |
occupationIds - [String]
|
Occupation Ids that need to be selected |
location - FreelancerProfileSearchLocationInput
|
location of the freelancer |
Example
{
"userType": "Freelancer",
"weightedOntologyIds": [
FreelancerProfileSearchWeightedOntologyIdInput
],
"keyword": "abc123",
"occupationIds": ["abc123"],
"location": FreelancerProfileSearchLocationInput
}
FreelancerProfileSearchLocationInput
Fields
Input Field | Description |
---|---|
country - String
|
|
state - String
|
|
city - String
|
|
area - FreelancerProfileSearchAreaInput
|
Example
{
"country": "abc123",
"state": "xyz789",
"city": "xyz789",
"area": FreelancerProfileSearchAreaInput
}
FreelancerProfileSearchUserTypeEnum
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Freelancer"
FreelancerProfileSearchWeightedOntologyIdInput
FreelancerProfilesSearchRecord
Fields
Field Name | Description |
---|---|
id - ID
|
Record Id |
title - String
|
title of the freelancer profile |
description - String
|
description of the freelancer's profile |
shortName - String
|
shortName of the freelancer |
ciphertext - String
|
freelancer's ciphertext |
portrait - String
|
portrait url of the freelancer |
lastActiveDateTime - String
|
DateTime when the freelancer was last active on the platform |
totalHourlyJobs - Int
|
total count of hourly jobs |
totalFixedPriceJobs - Int
|
total count of fixed price jobs |
skills - [Skill]
|
skills of the freelancer |
hourlyRate - Money
|
hourly rate of the freelancer |
topRatedStatus - String
|
Top rated status |
avgFeedbackScore - Float
|
average feedback score across all contracts |
hideEarnings - Boolean
|
boolean indicating if the earnings are hidden from the profile |
freelancer - CurrentUser
|
user details of the freelancer |
location - FreelancerSearchResultLocation
|
Freelancer's location |
contracts - [FreelancerSearchResultContractSummary]
|
Contracts executed by the freelancer |
Example
{
"id": "4",
"title": "abc123",
"description": "xyz789",
"shortName": "xyz789",
"ciphertext": "abc123",
"portrait": "xyz789",
"lastActiveDateTime": "abc123",
"totalHourlyJobs": 987,
"totalFixedPriceJobs": 987,
"skills": [Skill],
"hourlyRate": Money,
"topRatedStatus": "xyz789",
"avgFeedbackScore": 123.45,
"hideEarnings": false,
"freelancer": CurrentUser,
"location": FreelancerSearchResultLocation,
"contracts": [FreelancerSearchResultContractSummary]
}
FreelancerProfilesSearchRecordInterface
FreelancerProfilesSearchRecordsConnection
Description
The connection type for SearchResult.
Fields
Field Name | Description |
---|---|
edges - [FreelancerProfilesSearchResultEdge!]
|
list of edges |
pageInfo - PageInfo
|
Information that aids in pagination. |
totalCount - Int
|
Example
{
"edges": [FreelancerProfilesSearchResultEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
FreelancerProfilesSearchRecordType
Types
Union Types |
---|
Example
FreelancerProfilesSearchRecord
FreelancerProfilesSearchResultEdge
Description
An edge in a connection.
Fields
Field Name | Description |
---|---|
node - FreelancerProfilesSearchRecordType
|
The item at the end of the edge. |
cursor - String!
|
A cursor for use in pagination. |
Example
{
"node": FreelancerProfilesSearchRecord,
"cursor": "abc123"
}
FreelancerProfileStats
Fields
Field Name | Description |
---|---|
totalCharge360 - Money
|
The sum of total charges from the last 360 days |
totalCharge360NoAgency - Money
|
The sum of total charges from the last 360 days, excluding agency contracts |
adjustedScore360 - Float
|
This is the feedback score calculated using the contracts completed in the last 360 days |
longTermClients - Int
|
|
suspensions - Int
|
The total suspension count |
suspensions360 - Int
|
The total suspension count recorded in last 360 days |
suspensions90limited - Int
|
Recent account holds |
topLevelJobCategoryApplied90Days - String
|
The main job category (Level-1 job category) a freelancer has applied to in the last 90 days. |
proposalsCount90Days - Int
|
The count of job applications a freelancer has submitted in last 90 days |
medianProposalsForTheTopLevelCategory365 - Int
|
The median for the number of job applications in the main category prior to the first hire for the last 365 days |
fitProposalsViewRatio90Days - Float
|
Ratio of number of fit job applications viewed over number of job applications submitted in last 90 days |
hiddenProposalsViewedRatio90Days - Float
|
Ratio of number of hidden job applications viewed over number of job applications submitted in last 90 days |
totalProposalsViewedRatio90Days - Float
|
Ratio of number of job applications viewed over number of job applications submitted in last 90 days |
proposalInterviewedRation90Days - Float
|
Ratio of number of job applications that were interviewed by client over number of job applications submitted in last 90 days. |
proposalsHiredRatio90Days - Float
|
Ratio of number of hired over number of job applications submitted in last 90 days |
hideReasonsForProposals - [String]
|
3 most commonly cited reasons for clients hiding the application |
totalInvites90Days - Int
|
The number of invitations received in last 90 days |
totalInviteResponses90Days - Int
|
The number of responses of invitations received in last 90 days |
inviteResponsesPerDay90Days - Int
|
The count on how many invitations a contractor had responded within a day in last 90 days. |
totalCharge365NoPending - Money
|
12-month earnings, based on earnings in the last 365 days including today |
totalCharge90 - Money
|
3-month earnings |
weeksEligibleWithin16wks - Float
|
Top Rated eligible weeks for the last 16 weeks. |
Example
{
"totalCharge360": Money,
"totalCharge360NoAgency": Money,
"adjustedScore360": 123.45,
"longTermClients": 987,
"suspensions": 123,
"suspensions360": 123,
"suspensions90limited": 987,
"topLevelJobCategoryApplied90Days": "abc123",
"proposalsCount90Days": 987,
"medianProposalsForTheTopLevelCategory365": 987,
"fitProposalsViewRatio90Days": 123.45,
"hiddenProposalsViewedRatio90Days": 123.45,
"totalProposalsViewedRatio90Days": 123.45,
"proposalInterviewedRation90Days": 987.65,
"proposalsHiredRatio90Days": 987.65,
"hideReasonsForProposals": ["abc123"],
"totalInvites90Days": 123,
"totalInviteResponses90Days": 987,
"inviteResponsesPerDay90Days": 123,
"totalCharge365NoPending": Money,
"totalCharge90": Money,
"weeksEligibleWithin16wks": 123.45
}
FreelancerProfileUserPreferences
Description
End ProfilePart: Skills data of the freelancer ProfilePart: Freelancer Profile UserPreferences
Fields
Field Name | Description |
---|---|
visibilityLevel - FreelancerProfileVisibility!
|
public, private or Upwork only |
hideAgencyEarnings - Boolean
|
should the agency earnings be displayed on the freelancer's profile |
hideEarnings - Boolean
|
should the freelancer earnings on their profile be hidden |
exposeFullName - Boolean!
|
are both first and last name displayed ? |
clientFeedbackOptional - Boolean
|
do we force the client to provide feedback ? |
projectTypePreference - FreelancerProjectTypePreference
|
project type preference |
hideJss - Boolean!
|
Is the Job Success Score hidden on the freelancer's profile? |
Example
{
"visibilityLevel": "PUBLIC",
"hideAgencyEarnings": false,
"hideEarnings": true,
"exposeFullName": true,
"clientFeedbackOptional": false,
"projectTypePreference": "BOTH_LONGTERM_AND_ONETIME",
"hideJss": false
}
FreelancerProfileVerifications
Description
End ProfilePart: Linked External Accounts ProfilePart: Verifications
Example
{
"idVerified": true,
"phoneVerified": false,
"webcamVerified": true,
"idBadgeStatus": "abc123"
}
FreelancerProfileVisibility
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"PUBLIC"
FreelancerProjectTypePreference
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"BOTH_LONGTERM_AND_ONETIME"
FreelancerSearchResultContractFeedbackSummary
FreelancerSearchResultContractSummary
Description
Summary of the each contract executed by the freelancer
Fields
Field Name | Description |
---|---|
description - String
|
description of the contract |
feedback - FreelancerSearchResultContractFeedbackSummary
|
feedback given at the end of the contrat by the client |
title - String
|
title of the contract |
hourlyRate - Money
|
hourly rate on the this contract |
totalHours - Int
|
total number of hours spent on this contract |
totalCharges - Money
|
total charges incurred on this contract |
startedDateTime - String
|
start date of the contract |
endDateTime - String
|
end date of the contract |
Example
{
"description": "abc123",
"feedback": FreelancerSearchResultContractFeedbackSummary,
"title": "xyz789",
"hourlyRate": Money,
"totalHours": 123,
"totalCharges": Money,
"startedDateTime": "abc123",
"endDateTime": "abc123"
}
FreelancerSearchResultLocation
FreeLancerSkillEdge
Fields
Field Name | Description |
---|---|
node - Skill!
|
Example
{"node": Skill}
FreelancerSkillsConnection
Description
End ProfilePart: Personal data of the freelancer ProfilePart: Skills data of the freelancer
Fields
Field Name | Description |
---|---|
edges - [FreeLancerSkillEdge!]
|
Example
{"edges": [FreeLancerSkillEdge]}
FreelancerType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"Agency"
FreelancerVisibility
I18nLocation
Description
Contains location information used in i18n settings
Fields
Field Name | Description |
---|---|
country - Country
|
Example
{"country": Country}
I18nSettings
Description
User's i18n entity
Fields
Field Name | Description |
---|---|
countrySupported - Boolean
|
|
location - I18nLocation
|
|
status - I18nSettingsStatus
|
|
locationViewType - LocationViewType
|
|
userPreferredLocationType - UserPreferredLocationType
|
|
settingsFlags - I18nSettingsFlags
|
Example
{
"countrySupported": false,
"location": I18nLocation,
"status": "ELIGIBLE",
"locationViewType": "COUNTRY",
"userPreferredLocationType": "WORLD",
"settingsFlags": I18nSettingsFlags
}
I18nSettingsFlags
Description
A set of i18n flags/checks
Fields
Field Name | Description |
---|---|
showDomesticLocationFilterOnFLSearch - Boolean
|
|
showJobSearch - Boolean
|
|
showPhoneVerification - Boolean
|
|
showSmfToUpdateAddress - Boolean
|
|
showPersonalAddressAutocomplete - Boolean
|
|
showMessageContainer - Boolean
|
|
showLocationPreferenceOnJobPost - Boolean
|
|
defaultDomesticEnabled - Boolean
|
|
jobSearchDefaultedToON - Boolean
|
|
showLocationVerificationOnFWH - Boolean
|
|
domesticEnabledForFreelancersOnFLSearch - Boolean
|
Example
{
"showDomesticLocationFilterOnFLSearch": true,
"showJobSearch": false,
"showPhoneVerification": true,
"showSmfToUpdateAddress": false,
"showPersonalAddressAutocomplete": false,
"showMessageContainer": false,
"showLocationPreferenceOnJobPost": true,
"defaultDomesticEnabled": true,
"jobSearchDefaultedToON": true,
"showLocationVerificationOnFWH": true,
"domesticEnabledForFreelancersOnFLSearch": false
}
I18nSettingsStatus
Description
I18n status values
Values
Enum Value | Description |
---|---|
|
|
|
Example
"ELIGIBLE"
ID
Description
Built-in ID
Example
4
Int
Description
Built-in Int
Example
987
IntRange
InvitationToTeamInput
Fields
Input Field | Description |
---|---|
flow - InviteToTeamFlow!
|
inviteFlow |
inviteeEmail - String
|
username of the invitee (either this or email must be specified, not both) |
inviteeUsername - String
|
list of roles to be granted to invitee (optional, can be inferred from config of the flow) |
invitedToTopLevelOrganizationId - ID
|
top level org ID to which invitee is invited Deprecated: Argument is not used anymore and going to be dropped |
invitedToOrganizationsIds - [ID!]
|
list of team IDs to which invitee is invited (optional, invitedToTopLevelOrganizationId could be enough) |
inviterUserId - ID
|
inviter user ID (personUid) |
landingUrl - String!
|
landing URL (to which user will be redirected after accepting invitation) |
emailParams - InviteToTeamEmailParams
|
parameters that will be attached to email template |
metadata - [StringMapElementInput!]
|
map of metadata |
frankoRolesToBeAssigned - [String]
|
list of roles to be granted to invitee |
hierarchical - Boolean
|
flag to assign roles to org and all its descendant teams |
includeFirstOrgIdAsParticipant - Boolean
|
flag to include first org uid from invitedToOrganizationsIds as participant in IDBC check |
Example
{
"flow": "HELP_ME_HIRE",
"inviteeEmail": "xyz789",
"inviteeUsername": "xyz789",
"invitedToTopLevelOrganizationId": 4,
"invitedToOrganizationsIds": ["4"],
"inviterUserId": "4",
"landingUrl": "abc123",
"emailParams": InviteToTeamEmailParams,
"metadata": [StringMapElementInput],
"frankoRolesToBeAssigned": ["xyz789"],
"hierarchical": false,
"includeFirstOrgIdAsParticipant": false
}
InviteToTeamEmailParams
Fields
Input Field | Description |
---|---|
message - String!
|
message to be sent to invitee |
Example
{"message": "xyz789"}
InviteToTeamFailedResponse
Fields
Field Name | Description |
---|---|
code - String
|
|
message - String
|
|
invitation - FailedInvitation
|
Example
{
"code": "abc123",
"message": "abc123",
"invitation": FailedInvitation
}
InviteToTeamFlow
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"HELP_ME_HIRE"
InviteToTeamResponse
Fields
Field Name | Description |
---|---|
succeeded - [InviteToTeamSucceededResponse]!
|
|
failed - [InviteToTeamFailedResponse]!
|
Example
{
"succeeded": [InviteToTeamSucceededResponse],
"failed": [InviteToTeamFailedResponse]
}
InviteToTeamSucceededResponse
JobCategory
Fields
Field Name | Description |
---|---|
id - ID!
|
|
ontologyId - String!
|
ontologyId is a semantic identifier that unqiuely identifies an ontology element Its value doesn't depend on the environment (same for dev, staging, prod) Example: upwork:AdministrationSoftware |
type - [OntologyEntityType]!
|
|
entityStatus - OntologyEntityStatus!
|
Defines the status of an occupation.
|
preferredLabel - String!
|
Defines the label of the entity that is displayed across Upwork. It must be a unique value. |
definition - String
|
|
createdDateTime - String
|
Defines (when available) the date (timestamp) of creation for the entity. |
modifiedDateTime - String
|
Defines (when available) the date (timestamp) of update for the entity. |
Example
{
"id": 4,
"ontologyId": "abc123",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"definition": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "abc123"
}
Language
Fields
Field Name | Description |
---|---|
iso639Code - String!
|
ISO 639 standards - https://en.wikipedia.org/wiki/ISO_639(example: en) |
active - Boolean!
|
|
englishName - String!
|
Example
{
"iso639Code": "abc123",
"active": true,
"englishName": "abc123"
}
LanguageDataInput
Description
language input
Fields
Input Field | Description |
---|---|
id - ID
|
|
personRid - ID
|
|
verified - Boolean
|
|
verifiedByCertificate - Boolean
|
|
verifiedByFeedback - Boolean
|
|
language - LanguageInput!
|
|
proficiencyLevel - LanguageProficiencyLevelInput!
|
Example
{
"id": 4,
"personRid": "4",
"verified": true,
"verifiedByCertificate": true,
"verifiedByFeedback": true,
"language": LanguageInput,
"proficiencyLevel": LanguageProficiencyLevelInput
}
LanguageInput
LanguageProficiencyLevelInput
Description
Profile Mutation: proficiency level input
Example
{
"code": "xyz789",
"rank": 987,
"active": true,
"description": "abc123",
"type": "xyz789",
"proficiencyTitle": "BASIC"
}
LocationViewType
Description
User's i18n location view type values
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"COUNTRY"
ManagedProjectServicesBatchResponse
Fields
Field Name | Description |
---|---|
batchData - [PartnerManagedProjectServicesBatchDataResponse]
|
Example
{
"batchData": [
PartnerManagedProjectServicesBatchDataResponse
]
}
ManualReviewStatus
Values
Enum Value | Description |
---|---|
|
|
|
Example
"APPROVED"
MessageAttachments
Fields
Field Name | Description |
---|---|
objectReferenceId - ID
|
|
objectType - String
|
|
metadata - [StringMapElement!]
|
|
createdDateTime - String
|
|
author - RoomUser
|
Example
{
"objectReferenceId": "4",
"objectType": "xyz789",
"metadata": [StringMapElement],
"createdDateTime": "xyz789",
"author": RoomUser
}
ModernizedContractOffer
Fields
Field Name | Description |
---|---|
id - ID!
|
offer id |
kind - OfferKind
|
kind |
offeror - Offeror
|
who creates the offer |
clientUserId - ID!
|
client user id |
clientTeamId - ID!
|
client team uid |
clientOrgId - ID
|
client org uid |
vendorUserId - ID!
|
vendor uid |
vendorTeamId - ID
|
vendor team uid, in case of agency |
vendorOrgId - ID
|
vendor org ui, it could be the sole propriator |
actors - [Actor]
|
other participants in the offer |
metadata - Metadata
|
metadata associated to the offer |
expirationDateTime - String
|
expiration time |
title - String!
|
title |
description - String
|
offer's description |
attachments - [ID]
|
attachments |
contractStartDateTime - String
|
contract start date |
contractEndDateTime - String
|
contract end date |
hourlyRateTerms - HourlyTerms
|
hourly terms |
stipendTerms - StipendTerms
|
stipend terms |
milestoneTerms - MilestoneTerms
|
milestone terms |
deliveryModel - OfferDeliveryModel
|
Delivery model |
state - WorkflowOfferState!
|
offer state |
instanceId - ID
|
the current offer id |
staffingManagerId - ID
|
staffing manager uid |
contractId - ID
|
contract id associated to the offer, once offer is accepted |
agencyRootCompanyId - ID
|
agency root organization id |
type - ContractOfferType
|
Type of the offer |
vendorType - ContractOfferVendorType
|
Vendor type of offer |
termsVersion - ContractOfferTermsVersion
|
Term Version of offer |
legacyState - ContractOfferLegacyState
|
legacy State of offer |
previousOfferId - ID
|
Previous offer id |
newOfferId - ID
|
New Offer Id |
closePostingUponAccept - Boolean
|
Close Posting upon to Accept |
lastEvent - ContractOfferLastEvent
|
Last event on offer |
createdDateTime - String
|
The creation date of the offer |
Example
{
"id": "4",
"kind": "HourlyPack",
"offeror": "Client",
"clientUserId": 4,
"clientTeamId": 4,
"clientOrgId": 4,
"vendorUserId": "4",
"vendorTeamId": "4",
"vendorOrgId": 4,
"actors": [Actor],
"metadata": Metadata,
"expirationDateTime": "abc123",
"title": "abc123",
"description": "abc123",
"attachments": [4],
"contractStartDateTime": "xyz789",
"contractEndDateTime": "xyz789",
"hourlyRateTerms": HourlyTerms,
"stipendTerms": StipendTerms,
"milestoneTerms": MilestoneTerms,
"deliveryModel": "TalentMarketplace",
"state": "Submitted",
"instanceId": "4",
"staffingManagerId": "4",
"contractId": 4,
"agencyRootCompanyId": "4",
"type": "Hourly",
"vendorType": "FREELANCER",
"termsVersion": "V1",
"legacyState": "Draft",
"previousOfferId": "4",
"newOfferId": "4",
"closePostingUponAccept": false,
"lastEvent": ContractOfferLastEvent,
"createdDateTime": "xyz789"
}
ModernizedContractOfferList
Fields
Field Name | Description |
---|---|
offers - [ModernizedContractOffer]
|
list of offers |
Example
{"offers": [ModernizedContractOffer]}
Money
Fields
Field Name | Description |
---|---|
rawValue - String!
|
float point as a string, for example "1.23" |
currency - String!
|
ISO currency code, see https://en.wikipedia.org/wiki/ISO_4217 (for example, USD) |
displayValue - String!
|
display representation, for example, "$1.23" |
Example
{
"rawValue": "xyz789",
"currency": "xyz789",
"displayValue": "abc123"
}
MoneyInput
Fields
Input Field | Description |
---|---|
amount - String!
|
float point as a string, for example "1.23" |
currency - String!
|
ISO currency code, see https://en.wikipedia.org/wiki/ISO_4217 (for example, USD) |
Example
{
"amount": "xyz789",
"currency": "xyz789"
}
Occupation
Fields
Field Name | Description |
---|---|
id - ID!
|
|
ontologyId - String!
|
ontologyId is a semantic identifier that unqiuely identifies an ontology element Its value doesn't depend on the environment (same for dev, staging, prod) Example: upwork:AdministrationSoftware |
type - [OntologyEntityType]!
|
|
entityStatus - OntologyEntityStatus!
|
Defines the status of an occupation.
|
preferredLabel - String!
|
Defines the label of the entity that is displayed across Upwork. It must be a unique value. |
definition - String
|
|
createdDateTime - String
|
Defines (when available) the date (timestamp) of creation for the entity. |
modifiedDateTime - String
|
Defines (when available) the date (timestamp) of update for the entity. |
skills - [Skill]
|
Example
{
"id": 4,
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"definition": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"skills": [Skill]
}
OccupationAttrGroupFilter
OccupationAttrGroupsResponse
Fields
Field Name | Description |
---|---|
occupation - Occupation!
|
|
broaderOccupations - [BroaderOccupationMap!]
|
|
attributeGroups - [Skill!]
|
|
attributes - [AttributeSkillsMap!]
|
Example
{
"occupation": Occupation,
"broaderOccupations": [BroaderOccupationMap],
"attributeGroups": [Skill],
"attributes": [AttributeSkillsMap]
}
OfferCreationResponse
Fields
Field Name | Description |
---|---|
offer - ModernizedOffer
|
Example
{"offer": ModernizedOffer}
OfferHourlyRateTerms
Fields
Input Field | Description |
---|---|
vendorRate - MoneyInput!
|
Hourly rate associated with the offer, currency amount in the lowest currency denominations (so USD 49.12 would be 4912) |
weeklyLimit - String
|
Max hour can be logged per week, note: "0" and null/"not set" has different meanings, |
manualTimeAllowed - Boolean
|
Example
{
"vendorRate": MoneyInput,
"weeklyLimit": "xyz789",
"manualTimeAllowed": true
}
OfferKindInput
Values
Enum Value | Description |
---|---|
|
Standard marketplace offer |
|
Enterprise |
Example
"Vanilla"
OfferMetadataInput
Fields
Input Field | Description |
---|---|
sourceType - SourceTypeInput!
|
|
sourceId - ID
|
Following options available:
|
occupationId - ID
|
Required for Direct offer |
jobPostingId - ID
|
|
data - String
|
|
checkoutId - ID
|
Example
{
"sourceType": "JobPosting",
"sourceId": 4,
"occupationId": 4,
"jobPostingId": 4,
"data": "xyz789",
"checkoutId": 4
}
OfferMilestoneTerms
Fields
Input Field | Description |
---|---|
budget - MoneyInput!
|
milestone amount in the lowest currency denominations (so USD 49.12 would be 4912) |
milestoneList - [OfferTermsMilestoneInput!]!
|
Example
{
"budget": MoneyInput,
"milestoneList": [OfferTermsMilestoneInput]
}
OfferPeriodTypeInput
Values
Enum Value | Description |
---|---|
|
Example
"Weekly"
OfferScheduledRateIncreaseInput
OfferStipendTerms
Fields
Input Field | Description |
---|---|
stipend - MoneyInput!
|
periodic stipend |
vendorRate - MoneyInput!
|
|
period - OfferPeriodTypeInput!
|
Example
{
"stipend": MoneyInput,
"vendorRate": MoneyInput,
"period": "Weekly"
}
OfferTermsMilestoneInput
Fields
Input Field | Description |
---|---|
amount - MoneyInput!
|
milestone amount in the lowest currency denominations (so USD 49.12 would be 4912) |
description - String!
|
|
dueDate - String
|
milestone due date in yyyy-MM-dd format |
instructions - String
|
|
attachments - [String!]
|
Example
{
"amount": MoneyInput,
"description": "xyz789",
"dueDate": "xyz789",
"instructions": "abc123",
"attachments": ["abc123"]
}
OntologyCategory
Description
A simplified representation of Marketplace ontology's 'category' (level 1 of hierarchy)
Fields
Field Name | Description |
---|---|
id - ID!
|
UID of an entity |
preferredLabel - String
|
A label of an entity that is displayed across Upwork. It must be a unique value. |
altLabel - [String]
|
Defines alternative labels for an entity. |
slug - String
|
A human-understandable string that is used as the last of URLs built to refer the given entity. Example: 'accounting-consulting' (for 'Accounting & Consulting' category) |
ontologyId - String
|
A semantic identifier that uniquely identifies an ontology element. Its value doesn't depend on the environment, unlike a UID identifier. Example: upwork:AdministrationSoftware |
subcategories - [OntologySubcategory!]!
|
A list of simplified 'subcategory' entities which ara children of the given category |
services - [OntologyService!]!
|
A list of simplified 'service' entities which descendants (indirect children) of the given category - or, put another way, a list of all 'services' whose top parent is the current 'category' |
Example
{
"id": 4,
"preferredLabel": "xyz789",
"altLabel": ["xyz789"],
"slug": "xyz789",
"ontologyId": "abc123",
"subcategories": [OntologySubcategory],
"services": [OntologyService]
}
OntologyConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [OntologyEntityEdge!]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [OntologyEntityEdge],
"pageInfo": PageInfo
}
OntologyDeliverablesFilter
OntologyElementsSearchByPrefLabelFilter
Fields
Input Field | Description |
---|---|
preferredLabel_any - String!
|
string to search in prefLabel, up to 100 characters Example: "Jav" |
type - OntologyEntityType
|
type of element to search, one of OntologyEntityType |
entityStatus_eq - OntologyEntityStatus
|
status of element to search, one of OntologyEntityStatus default ACTIVE. Default = ACTIVE |
sortOrder - String
|
optional parameter to specify ordering of results. If no value provided ordering is random. 'alphabet' to order results alphabetically by prefLabel 'match-start' (Default) to order results by index of filter string in prefLabel. I.e. results starting with filter will appear first. Default = |
limit - Int
|
Max number of responses. 10 by default. Default = 10 |
includeAttributeGroups - Boolean
|
if true, it includes attribute group nodes. Default: false. Default = false |
Example
{
"preferredLabel_any": "xyz789",
"type": "OCCUPATION",
"entityStatus_eq": "ACTIVE",
"sortOrder": "xyz789",
"limit": 123,
"includeAttributeGroups": true
}
OntologyEntity
Description
An ontology is a set of concepts and categories in a domain that shows their properties and the relations between them.
Conceptually, the ontology is a "knowledge graph".
Currently the ontology model describes Occupations, Skills, Deliverables and Descriptors.
However, ONLY Occupations and Skills are supported. Deliverables and Deliverable Descriptors are currently supported as Skills, forming what we refer to as Attributes.
Occupations describe what we know, in the Upwork universe, as Categories, Subcategories and Services or L1s, L2s and L3s.
Fields
Field Name | Description |
---|---|
id - ID!
|
|
ontologyId - String!
|
ontologyId is a semantic identifier that unqiuely identifies an ontology element Its value doesn't depend on the environment (same for dev, staging, prod) Example: upwork:AdministrationSoftware |
type - [OntologyEntityType]!
|
|
entityStatus - OntologyEntityStatus!
|
Defines the status of an occupation.
|
preferredLabel - String!
|
Defines the label of the entity that is displayed across Upwork. It must be a unique value. |
definition - String
|
|
createdDateTime - String
|
Defines (when available) the date (timestamp) of creation for the entity. |
modifiedDateTime - String
|
Defines (when available) the date (timestamp) of update for the entity. |
Possible Types
OntologyEntity Types |
---|
Example
{
"id": "4",
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "abc123",
"definition": "xyz789",
"createdDateTime": "abc123",
"modifiedDateTime": "abc123"
}
OntologyEntityEdge
Fields
Field Name | Description |
---|---|
node - OntologyEntity!
|
|
cursor - String!
|
Example
{
"node": OntologyEntity,
"cursor": "abc123"
}
OntologyEntityFilter
Fields
Input Field | Description |
---|---|
preferredLabel_any - String!
|
string to search in prefLabel field, up to 100 characters Example: "Jav" |
type - OntologyEntityType
|
|
taxonomyLevel - OntologyEntityTaxonomyLevel
|
|
entityStatus_eq - OntologyEntityStatus
|
|
sortOrder - OntologyResultSortOrder
|
|
limit - Int
|
Max number of responses |
Example
{
"preferredLabel_any": "abc123",
"type": "OCCUPATION",
"taxonomyLevel": "CATEGORY",
"entityStatus_eq": "ACTIVE",
"sortOrder": "RANDOM",
"limit": 123
}
OntologyEntityResult
Types
Union Types |
---|
Example
Skill
OntologyEntitySearchFilter
Fields
Input Field | Description |
---|---|
ontologyIds_any - [ID!]!
|
Example
{"ontologyIds_any": ["4"]}
OntologyEntitySearchRecord
Fields
Field Name | Description |
---|---|
ontologyEntity - OntologyEntity!
|
Example
{"ontologyEntity": OntologyEntity}
OntologyEntityStatus
Description
Defines the status of an occupation. - Active: Skill is active and available for use - Deprecated: Skill has been deprecated - Pending: Skill has been created recently and is not active yet
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ACTIVE"
OntologyEntityTaxonomyLevel
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"CATEGORY"
OntologyEntityType
Description
Currently supported entity types
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"OCCUPATION"
OntologyGraphNode
Fields
Field Name | Description |
---|---|
id - ID!
|
|
uid - ID
|
|
label - String!
|
|
types - [String!]
|
|
status - OntologyEntityStatus
|
|
properties - [PropertyStringMap!]
|
|
relationships - [StringListMap!]
|
|
metadata - [StringMapElement!]
|
Example
{
"id": "4",
"uid": "4",
"label": "xyz789",
"types": ["xyz789"],
"status": "ACTIVE",
"properties": [PropertyStringMap],
"relationships": [StringListMap],
"metadata": [StringMapElement]
}
OntologyOccupationFilter
OntologyRelatedNodes
Fields
Field Name | Description |
---|---|
source - OntologyGraphNode!
|
|
target - OntologyGraphNode!
|
|
relationProperties - [PropertyStringMap!]!
|
Example
{
"source": OntologyGraphNode,
"target": OntologyGraphNode,
"relationProperties": [PropertyStringMap]
}
OntologyResultSortOrder
Description
- alphabet to order results alphabetically by prefLabel
- match-start to order results by index of filter string in prefLabel. I.e. results starting with filter will appear first
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"RANDOM"
OntologyService
Description
A simplified representation of Marketplace ontology's 'service' (level 3 of hierarchy)
Fields
Field Name | Description |
---|---|
id - ID!
|
UID of an entity |
preferredLabel - String
|
A label of an entity that is displayed across Upwork. It must be a unique value. |
altLabel - [String]
|
Defines alternative labels for an entity. |
slug - String
|
A human-understandable string that is used as the last of URLs built to refer the given entity. Example: 'accounting-consulting' (for 'Accounting & Consulting' category) |
ontologyId - String
|
A semantic identifier that uniquely identifies an ontology element. Its value doesn't depend on the environment, unlike a UID identifier. Example: upwork:AdministrationSoftware |
Example
{
"id": "4",
"preferredLabel": "abc123",
"altLabel": ["xyz789"],
"slug": "abc123",
"ontologyId": "abc123"
}
OntologySkill
OntologySkillsFilter
OntologySubcategory
Description
A simplified representation of Marketplace ontology's 'subcategory' (level 2 of hierarchy)
Fields
Field Name | Description |
---|---|
id - ID!
|
UID of an entity |
preferredLabel - String
|
A label of an entity that is displayed across Upwork. It must be a unique value. |
altLabel - [String]
|
Defines alternative labels for an entity. |
slug - String
|
A human-understandable string that is used as the last of URLs built to refer the given entity. Example: 'accounting-consulting' (for 'Accounting & Consulting' category) |
ontologyId - String
|
A semantic identifier that uniquely identifies an ontology element. Its value doesn't depend on the environment, unlike a UID identifier. Example: upwork:AdministrationSoftware |
services - [OntologyService!]!
|
A list of simplified 'service' entities which are children of the given subcategory |
Example
{
"id": "4",
"preferredLabel": "abc123",
"altLabel": ["xyz789"],
"slug": "xyz789",
"ontologyId": "abc123",
"services": [OntologyService]
}
OrganizationLocationInput
OrganizationRequestType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"AGENCY"
OtherExperienceInput
Page
PageFilterInput
PageInfo
Pagination
Description
Pagination
Example
{"after": "abc123", "first": 123}
Paging
PagingInfo
PartnerManagedProjectServicesBatchDataResponse
Fields
Field Name | Description |
---|---|
partnerPurchaseId - ID!
|
the partner purchase unique identifier |
status - String!
|
batch status (PENDING, PROCESSED, ERROR, DUPLICATE) |
error - String
|
if status is ERROR, this field will contain the error message |
data - [PartnerManagedProjectServicesEntryResponse]
|
Set of key value pairs of the data that was processed |
Example
{
"partnerPurchaseId": "4",
"status": "abc123",
"error": "abc123",
"data": [PartnerManagedProjectServicesEntryResponse]
}
PartnerManagedProjectServicesEntryResponse
Description
key value pair with data of created engagement. Refer to the Supported keys:
- key=partnerEngagementId, The embedded partner engagement unique identifier. Required field.
- key=partnerPurchaseId, The partner purchase unique identifier. Required field.
- key=skuSlug, The SKU identifier, provided during partner onboarding. Required field
- key=skuAmountPaid, The amount paid for the SKU.
- key=skuCurrency, The currency used for the skuAmountPaid.
- key=estimatedDeliveryDate, The estimated delivery date of the engagement. Standard format is YYYY-MM-DD.
- key=UAT, It returns true if the engagement does not activate the workflow, false otherwise. Used for client uat only with Partner Management Team
- key=status, The current status of the engagement. Required field.
- key=timeline, The status timeline of the engagement. JSON format. Required field.
- key=orderTimestamp, The order's timestamp. Must be in ISO 8601 format: YYYY-MM-DDTHH:MM:SS (e.g., 2024-08-23T15:45:30), required field.
Example
{
"key": "xyz789",
"value": "abc123"
}
PartnerManagedProjectServicesResponse
Description
PartnerManagedProjectServicesResponse will contain the data that was processed. It will contain the key value pairs of the data that was processed.
Fields
Field Name | Description |
---|---|
data - [PartnerManagedProjectServicesEntryResponse]
|
Set of key value pairs of the data that was processed |
Example
{"data": [PartnerManagedProjectServicesEntryResponse]}
PersonalDataLocation
PersonalDataProfileState
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"IN_PROGRESS"
PhoneNumber
Portrait
Description
Portrait of the freelancer
Example
{
"portrait": "xyz789",
"portrait32": "xyz789",
"portrait50": "xyz789",
"portrait100": "xyz789",
"portrait150": "xyz789",
"portrait500": "xyz789"
}
PrivateTalentCloud
Description
A Talent Cloud network is an Upwork Enterprise client's private group of professional freelancers and agencies.
Fields
Field Name | Description |
---|---|
id - ID!
|
|
name - String!
|
Talent cloud name |
creator - GenericUser!
|
person creating the talent cloud (should generally match actorId) |
creatorOrganization - GenericOrganization!
|
organization of the person creating the TC |
joinInstructions - String!
|
Message to display to freelancers when they request to join a talent cloud |
welcomeMessageToAddedFreelancers - String!
|
Message to display to a freelancer after joining a talent cloud |
joinRequestAutoApproved - Boolean!
|
If set to false, talent cloud join requests must pass manual review |
messageAfterJoinRequest - String!
|
Message to display to a freelancer after submitting a join request to a talent cloud |
joinRejectionMessage - String!
|
Message to display to a freelancer if the TC join request was rejected |
externalName - String
|
Name to display in external (to the client company) context |
active - Boolean!
|
If the talent cloud is active or not |
joinRequestNotifyUsers - [GenericUser]!
|
Users to notify when a new join request is created |
logoImageLarge - File
|
fileStorage UID |
logoImageSmall - File
|
fileStorage UID |
description - String!
|
Talent cloud description |
onboardingTaskEnabled - Boolean!
|
Flag indicating whether or not onboarding is enabled for this talent cloud |
onboardingTaskEnableUpdatedDateTime - String
|
Timestamp when onboardingTaskEnabled has been set to true (null until that) |
selectable - Boolean!
|
If true, then talent cloud can be selected for new offers. Implies that talent cloud is active |
talentCloudTasks - [TalentCloudTask]
|
list of talent cloud task overviews |
Example
{
"id": 4,
"name": "abc123",
"creator": GenericUser,
"creatorOrganization": GenericOrganization,
"joinInstructions": "abc123",
"welcomeMessageToAddedFreelancers": "abc123",
"joinRequestAutoApproved": false,
"messageAfterJoinRequest": "abc123",
"joinRejectionMessage": "xyz789",
"externalName": "abc123",
"active": false,
"joinRequestNotifyUsers": [GenericUser],
"logoImageLarge": File,
"logoImageSmall": File,
"description": "xyz789",
"onboardingTaskEnabled": true,
"onboardingTaskEnableUpdatedDateTime": "xyz789",
"selectable": false,
"talentCloudTasks": [TalentCloudTask]
}
PrivateTalentCloudConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [PrivateTalentCloudEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [PrivateTalentCloudEdge],
"pageInfo": PageInfo
}
PrivateTalentCloudEdge
Fields
Field Name | Description |
---|---|
cursor - String
|
|
node - PrivateTalentCloud
|
Example
{
"cursor": "xyz789",
"node": PrivateTalentCloud
}
ProcessAddResponse
ProcessUpdateResponse
Fields
Field Name | Description |
---|---|
success - Boolean!
|
Defines success status |
Example
{"success": true}
PropertyStringMap
ReasonsMetadata
ReasonType
Values
Enum Value | Description |
---|---|
|
Reject invite to apply to a job posting by freelancer |
|
Withdraw application for job posting by freelancer |
|
End contract by either client or freelancer, hourly contract |
|
End contract by either client or freelancer, fixed price contract |
|
When client ends contract which for which work hasn't started and provides low score, we ask for reason |
|
When client ends contract which for which work has been started and provides low score, we ask for reason |
|
When freelancer ends contract which for which work hasn't started and provides low score, we ask for reason |
|
When freelancer ends contract which for which work has been started and provides low score, we ask for reason |
|
Reject job application by a client |
|
Close job posting by a client |
|
Decline offer by freelancer |
|
Withdraw invitation to apply to a job posting by client |
|
|
|
|
|
Deactivation account by freelancer |
Example
"PROPOSAL_DECLINE"
Region
RequestMetadata
Room
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the room |
roomName - String
|
Name of the dash room |
organization - CurrentOrganization
|
The organization that the room belongs to |
creator - RoomUser
|
Room creator |
createdAtDateTime - String
|
Creation time of the room |
public - Boolean
|
If true, then anyone can see and join the room If false, only invited users can join it |
topic - String
|
Room topic (a.k.a. subtitle) |
owner - RoomUser
|
User that owns the room, can be different from creator |
numUnread - Int
|
Count of unread messages |
roomFavoriteDateTime - String
|
Time when the room was marked as favorite |
favorite - Boolean
|
Flag indicating whether the room was marked as favorite |
numUnreadMentions - Int
|
Count of unread mentions |
roomUsers - [RoomUser!]
|
List of users in this room |
numUsers - Int
|
Count of users in the room |
joinDateTime - String
|
Date time when user joined this room |
lastVisitedDateTime - String
|
Date time when user last visited this room The last time when a story was posted in the room or the room was modified |
lastReadDateTime - String
|
The last time the room was visited |
roomType - RoomType
|
Type of room, can be: GROUP, INTERVIEW, ONE_ON_ONE |
readOnlyDateTime - String
|
Time when the room was marked as read-only |
readOnly - Boolean
|
Flag indicating wheter the room is marked as read-only |
blockDateTime - String
|
Time when the room was blocked |
blockedBy - RoomUser
|
User who blocked the room |
hidden - Boolean
|
Flag indicating wheter the room is marked as hidden This makes the room invisible but can be unhidden unlike deleted rooms |
muted - Boolean!
|
Flag to indicate whether this room is muted for the curent user |
contractId - ID
|
Contract assoicated with the room, if any |
contract - Contract
|
|
contractDetails - ContractDetails
|
ContractDetails of the associated Room |
vendorProposal - VendorProposal
|
Vendor Proposal associated with the room |
roomNote - String
|
Note associated with the room |
roomNotePresent - Boolean!
|
Flag to indicate whether any note is associated with the room |
offerIds - [ID!]
|
Offer Ids associated with the room |
recruiters - [GenericUser!]
|
Contains information of all involved recruiters, if it's a recruiter room (a.k.a. PSM, a.k.a. Talent Sourcers) |
latestStory - RoomStory
|
Latest story in the room |
story - RoomStory
|
Get a particular story of this room |
Arguments
|
|
stories - RoomStoryConnection
|
List of stories posted in the room |
Arguments
|
|
latestStoryPreRendered - RoomStory
|
List of stories in the room |
Example
{
"id": 4,
"roomName": "xyz789",
"organization": CurrentOrganization,
"creator": RoomUser,
"createdAtDateTime": "abc123",
"public": true,
"topic": "xyz789",
"owner": RoomUser,
"numUnread": 987,
"roomFavoriteDateTime": "xyz789",
"favorite": true,
"numUnreadMentions": 987,
"roomUsers": [RoomUser],
"numUsers": 123,
"joinDateTime": "abc123",
"lastVisitedDateTime": "abc123",
"lastReadDateTime": "xyz789",
"roomType": "ONE_ON_ONE",
"readOnlyDateTime": "abc123",
"readOnly": false,
"blockDateTime": "xyz789",
"blockedBy": RoomUser,
"hidden": true,
"muted": true,
"contractId": "4",
"contract": Contract,
"contractDetails": ContractDetails,
"vendorProposal": VendorProposal,
"roomNote": "abc123",
"roomNotePresent": true,
"offerIds": [4],
"recruiters": [GenericUser],
"latestStory": RoomStory,
"story": RoomStory,
"stories": RoomStoryConnection,
"latestStoryPreRendered": RoomStory
}
RoomCategoryFilter
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"FAVORITES"
RoomConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [RoomEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [RoomEdge],
"pageInfo": PageInfo
}
RoomCreateInputV2
Description
Input required to create a new room
Fields
Input Field | Description |
---|---|
roomName - String
|
Name of the new room, applied for group rooms |
topic - String
|
Topic of the new room |
users - [RoomUserInput]
|
Users to be added in the room |
roomType - RoomTypeV2!
|
Type of the room |
Example
{
"roomName": "xyz789",
"topic": "xyz789",
"users": [RoomUserInput],
"roomType": "ONE_ON_ONE"
}
RoomEdge
Fields
Field Name | Description |
---|---|
node - Room
|
Example
{"node": Room}
RoomFilter
Fields
Input Field | Description |
---|---|
roomType_eq - RoomTypeFilter
|
Specifies a filter by type for the list of rooms |
roomPrivacy_eq - RoomPrivacyFilter
|
Specifies a filter by the privacy of the room |
subscribed_eq - Boolean
|
If specified, only the rooms that the user is (or is not) subscribed to will be returned. Default: true |
activeSince_eq - String
|
Return only the rooms that have had new activity since the given time. |
includeFavorites_eq - Boolean
|
Include all favorite rooms, regardless of when the last activity in those rooms took place. Ignored if 'activeSince' is not set. |
includeUnreadIfActive_eq - Boolean
|
Include all rooms having unread stories, regardless of when the last activity in those rooms took place. Ignored if 'activeSince' is not set. |
unreadRoomsOnly_eq - Boolean
|
Filteres rooms that has unread stories if set to true. Note: This is mutually exclusive with 'activeSince' |
local_eq - String
|
The locale to use when stories are returned with the room |
includeHidden_eq - Boolean
|
If false filters rooms which are not hidden, otherwise return all the rooms. Default: true |
objectReferenceId_eq - ID
|
If specified, returns only rooms associated with that referenceId. If there are no rooms with that associated object reference and 'roomName' and 'roomType' are provided, creates a new room with those values and the associated object reference |
roomCategory_eq - RoomCategoryFilter
|
Filters rooms by given category |
Example
{
"roomType_eq": "ALL",
"roomPrivacy_eq": "ALL",
"subscribed_eq": true,
"activeSince_eq": "abc123",
"includeFavorites_eq": true,
"includeUnreadIfActive_eq": true,
"unreadRoomsOnly_eq": false,
"local_eq": "abc123",
"includeHidden_eq": false,
"objectReferenceId_eq": "4",
"roomCategory_eq": "FAVORITES"
}
RoomPrivacyFilter
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ALL"
RoomStory
Fields
Field Name | Description |
---|---|
id - ID!
|
ID of the story |
room - Room!
|
Information about the associated room |
createdDateTime - String!
|
Date time when the story has been created |
updatedDateTime - String!
|
Date time when the story has been last updated |
user - GenericUser!
|
Room user who created this story |
message - String
|
Message associated with the story |
organization - GenericOrganization
|
Organization context which the story was posted under. |
roomStoryNote - RoomStoryNote
|
Returns any notes or flags attached to the story, e.g. if it's marked as favorite |
attachments - [MessageAttachments]
|
Message attachments |
Example
{
"id": 4,
"room": Room,
"createdDateTime": "abc123",
"updatedDateTime": "abc123",
"user": GenericUser,
"message": "xyz789",
"organization": GenericOrganization,
"roomStoryNote": RoomStoryNote,
"attachments": [MessageAttachments]
}
RoomStoryAbuseType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NONE"
RoomStoryConnection
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [RoomStoryEdge]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [RoomStoryEdge],
"pageInfo": PageInfo
}
RoomStoryCreateInputV2
RoomStoryEdge
RoomStoryFilter
Fields
Input Field | Description |
---|---|
roomId_eq - ID!
|
|
storyFilter - StoryFilter
|
Example
{
"roomId_eq": "4",
"storyFilter": StoryFilter
}
RoomStoryNote
Description
Notes/Flags attached to the story by the user
Fields
Field Name | Description |
---|---|
favorite - Boolean!
|
|
abuseType - RoomStoryAbuseType
|
|
whitelisted - Boolean!
|
|
abuseDetails - String
|
Example
{
"favorite": true,
"abuseType": "NONE",
"whitelisted": false,
"abuseDetails": "abc123"
}
RoomStoryUpdateInputV2
RoomType
Values
Enum Value | Description |
---|---|
|
Designed for direct chat between two users (can't add others and can never leave the room) |
|
A group room is a regular room that is created on a particular user's request. The user can invite any number of users from their address book, and they can even invite users via email addresses to join the room. Users can be invited with either Admin or Participant roles. Admins can change the name of the room, the topic, invite new users, etc. The creator of the room is, by default, assigned the Owner role. |
|
Interview rooms are a special type of room linked to upwork applications. There's one such room created for every job application with the client and the freelancer as the initial members of the room. They can only add people to these rooms if they're part of the client or freelancer's companies. The client and freelancer themselves can't leave this room. Hiring managers from the client's company can join these rooms without being added by others in the room. |
Example
"ONE_ON_ONE"
RoomTypeFilter
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"ALL"
RoomTypeV2
Values
Enum Value | Description |
---|---|
|
Designed for direct chat between two users (can't add others and can never leave the room) |
|
A group room is a regular room that is created on a particular user's request. The user can invite any number of users from their address book, and they can even invite users via email addresses to join the room. Users can be invited with either Admin or Participant roles. Admins can change the name of the room, the topic, invite new users, etc. The creator of the room is, by default, assigned the Owner role. |
Example
"ONE_ON_ONE"
RoomUpdateInputV2
Description
Input required to update a room
Example
{
"roomId": "4",
"roomName": "abc123",
"topic": "abc123",
"reason": "abc123",
"readOnly": true
}
RoomUser
Fields
Field Name | Description |
---|---|
user - GenericUser
|
|
organization - GenericOrganization
|
|
role - String
|
Example
{
"user": GenericUser,
"organization": GenericOrganization,
"role": "xyz789"
}
RoomUserInput
Description
Details of the user to be added in the Room
Fields
Input Field | Description |
---|---|
userId - ID!
|
ID of the user |
organizationId - ID!
|
ID of the organization user belongs to |
role - String
|
Role of the user in the room. Valid values are owner, admin, and participant. Only Current owner can change the room to contain a new owner. Admins can change the room name and topic, and invite new users. |
inviteEmail - String
|
Invite someone who's not yet an Upwork member by email |
Example
{
"userId": 4,
"organizationId": "4",
"role": "xyz789",
"inviteEmail": "abc123"
}
Search
Fields
Field Name | Description |
---|---|
searchFreelancerPublicProfile - SemSearchV2Response!
|
Returns the Freelancer Profiles based on the given filter and publicly visible |
Arguments
|
Example
{"searchFreelancerPublicProfile": SemSearchV2Response}
SemSearchV2DoubleRange
SemSearchV2IntRange
SemSearchV2Profile
Fields
Field Name | Description |
---|---|
profile - TalentProfile
|
Example
{"profile": TalentProfile}
SemSearchV2Request
Fields
Input Field | Description |
---|---|
paging - Paging
|
|
userQuery - String
|
|
occupationUid - String
|
|
title - String
|
|
countries - [String!]
|
|
states - [String!]
|
|
cities - [String!]
|
|
hourlyRate - SemSearchV2DoubleRange
|
|
jobSuccessScore - SemSearchV2DoubleRange
|
|
totalJobs - SemSearchV2IntRange
|
|
topRated - Boolean
|
|
risingTalent - Boolean
|
|
hasPortrait100 - Boolean
|
|
skillsNames - [String!]
|
|
skillsUids - [String!]
|
|
vemSkills - [VemSkill!]
|
|
type - FreelancerType
|
|
addAgencyPreview - Boolean
|
|
agencySearch - Boolean
|
|
publicVisibilityOnly - Boolean
|
Example
{
"paging": Paging,
"userQuery": "abc123",
"occupationUid": "xyz789",
"title": "xyz789",
"countries": ["abc123"],
"states": ["abc123"],
"cities": ["abc123"],
"hourlyRate": SemSearchV2DoubleRange,
"jobSuccessScore": SemSearchV2DoubleRange,
"totalJobs": SemSearchV2IntRange,
"topRated": true,
"risingTalent": true,
"hasPortrait100": true,
"skillsNames": ["xyz789"],
"skillsUids": ["abc123"],
"vemSkills": [VemSkill],
"type": "Agency",
"addAgencyPreview": false,
"agencySearch": false,
"publicVisibilityOnly": true
}
SemSearchV2Response
Fields
Field Name | Description |
---|---|
pagingInfo - PagingInfo!
|
|
profiles - [SemSearchV2Profile]!
|
Example
{
"pagingInfo": PagingInfo,
"profiles": [SemSearchV2Profile]
}
Skill
Description
Skills can be seen methods, tools, frameworks, processes, etc that can be used in the industry.
Skills are organized into Attribute Groups. Every Skill can be a member of multiple Attribute groups.
Skills are linked to attribute groups through the skos:broader property.
Attribute Groups are defined using the upworkModel:attributeLevel "Attribute Group" property.
Attribute groups are linked to their member attributes through the narrower property.
Fields
Field Name | Description |
---|---|
id - ID!
|
|
ontologyId - String!
|
ontologyId is a semantic identifier that unqiuely identifies an ontology element Its value doesn't depend on the environment (same for dev, staging, prod) Example: upwork:AdministrationSoftware |
type - [OntologyEntityType]!
|
|
entityStatus - OntologyEntityStatus!
|
Defines the status of an occupation.
|
preferredLabel - String!
|
Defines the label of the entity that is displayed across Upwork. It must be a unique value. Example: "Accounting" |
createdDateTime - String
|
Defines (when available) the date (timestamp) of creation for the entity. |
modifiedDateTime - String
|
Defines (when available) the date (timestamp) of update for the entity. |
definition - String
|
|
altLabel - [String]
|
Defines alternative labels for the entity. |
narrower - [String]
|
Defines the narrower entity of an attribute group. It only applies to attribute groups and it defines the member entities of each attribute group. When talking about attribute groups, we actually refer to skills which have narrower relationships, but not broader. See them as the parent in a hierarchy Example: "upworkOccupation:wordpresssetupandconfiguration" |
narrowerIds - [ID]
|
Defines the narrower entity of an attribute group. It only applies to attribute groups and it defines the member entities of each attribute group. When talking about attribute groups, we actually refer to skills which have narrower relationships, but not broader. See them as the parent in a hierarchy Example ids: "1024054176003235840" |
broader - [String]
|
Defines the broader entity of a skill. The broader entity is the attribute group that the skill belongs to. Skills can have more than one broader entities. Example: "upworkOccupation:webdevelopmentsubcategory" |
broaderIds - [ID]
|
Defines the broader entity of a skill. The broader entity is the attribute group that the skill belongs to. Skills can have more than one broader entities. Example ids: "531770282584862733" |
dependsOn - [String]
|
Defines the dependency between an attribute group and an attribute. The domain of this property can only be an attribute group and the range is an attribute. |
dependsOnIds - [ID]
|
Defines the dependency between an attribute group and an attribute. The domain of this property can only be an attribute group and the range is an attribute. |
splitInto - [String]
|
Defines the entities that are the result of splitting a Skill. The resulting entities are also Skills and there must be at least two resulting entities. One of the resulting entities will serve as a primary replacement and must be present in the upwork:replacedBy property too. Split entities must also be deprecated. Example "upwork:socialmediamanagement" |
splitIntoIds - [ID]
|
Defines the entities that are the result of splitting a Skill. The resulting entities are also Skills and there must be at least two resulting entities. One of the resulting entities will serve as a primary replacement and must be present in the upwork:replacedBy property too. Split entities must also be deprecated. Example: 1109421460453785600 |
mergedInto - String
|
Defines the entity with which the source entity is merged into. The target entity is also a Skill. The target entity must be present in the upwork:replacedBy property. Merged entities must also be deprecated. |
mergedIntoId - ID
|
Defines the entity with which the source entity is merged into. The target entity is also a Skill. The target entity must be present in the upwork:replacedBy property. Merged entities must also be deprecated. |
replacedBy - String
|
Defines the replacement of split, merged and deprecated skills. The replacement entity must be a single entity of the same type and level. |
replacedById - ID
|
Defines the replacement of split, merged and deprecated skills. The replacement entity must be a single entity of the same type and level. |
scopeNote - String
|
This property defines the description for each skill. |
externalLink - [String]
|
Defines a link to an external resource (preferably Wikipedia link). |
exactMatch - [String]
|
This property defines the link between skills, indicating a high degree of confidence that the concepts are highly similar. The purpose of this property is to define a link between a new entity and an existing entity Example: "upwork:accounting" |
exactMatchIds - [ID]
|
This property defines the link between skills, indicating a high degree of confidence that the concepts are highly similar. The purpose of this property is to define a link between a new entity and an existing entity Example id: "1024054015462055936" |
closeMatch - [String]
|
This property defines the link between skills, indicating a lower degree of confidence than the exactMatch that the concepts are similar. The purpose of this property is to define a link between a new entity and an existing entity (one that has historical data associated with it). In the future this might be also used for Occupation. Example: "upwork:android_game" |
closeMatchIds - [ID]
|
This property defines the link between skills, indicating a lower degree of confidence than the exactMatch that the concepts are similar. The purpose of this property is to define a link between a new entity and an existing entity (one that has historical data associated with it). In the future this might be also used for Occupation. Example: "1024054086635200512" |
comment - String
|
Used internally, defines the source of the skill or a description extracted from dbpedia |
attributeLevel - [String]
|
Defines attribute groups. Skills that have this property with the value 'Attribute Group' are attribute groups. |
allowMultipleClient - Boolean!
|
Defines if attribute group supports multi-selection of its attributes in the job post flow. Presentation attributes present for attribute groups |
allowMultipleFreelancer - Boolean!
|
|
allowOther - Boolean!
|
Defines if addition of free text answers is allowed |
clientQuestion - String
|
|
clientTip - String
|
|
freelancerQuestion - String
|
|
freelancerTip - String
|
|
advancedClient - Boolean!
|
Defines advanced attribute groups which are being displayed in the bottom of the page. |
client - Boolean!
|
|
freelancer - Boolean!
|
|
requiredClient - Boolean!
|
Defines if attribute group is required or optional for clients. |
requiredFreelancer - Boolean!
|
Defines if attribute group is required or optional for freelancers. |
otherClientLabel - String
|
Defines the label that is displayed in the 'see more' dialog in job posts. |
otherFreelancerLabel - String
|
Defines the label that is displayed in the 'show more' view in profiles. |
presentationMode - String
|
|
priority - Int
|
Defines the order in which attributes and attribute groups appear in. |
isRequiredBy - [String]
|
This is the inverse property of upworkModel:requires. It links an attribute group with the L3 that requires it.
Example: "upworkOccupation:brandidentitydesign |
isRequiredByIds - [ID]
|
This is the inverse property of upworkModel:requires. It links an attribute group with the L3 that requires it.
Example: "1044578476142100497" |
legacySkillNid - String
|
Legacy Skills are skills that existed prior to Ontology Skills. This is the skill name associated with the legacy skills and used to mapping ontology skills with legacy skills and viceversa. |
prettyName - String
|
LegacySkillNid value pretty formatted |
legacySkillId - ID
|
The uid identifier of the legacy skill |
Example
{
"id": "4",
"ontologyId": "xyz789",
"type": ["OCCUPATION"],
"entityStatus": "ACTIVE",
"preferredLabel": "xyz789",
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"definition": "xyz789",
"altLabel": ["xyz789"],
"narrower": ["abc123"],
"narrowerIds": [4],
"broader": ["xyz789"],
"broaderIds": [4],
"dependsOn": ["xyz789"],
"dependsOnIds": ["4"],
"splitInto": ["abc123"],
"splitIntoIds": ["4"],
"mergedInto": "abc123",
"mergedIntoId": 4,
"replacedBy": "xyz789",
"replacedById": 4,
"scopeNote": "xyz789",
"externalLink": ["xyz789"],
"exactMatch": ["abc123"],
"exactMatchIds": [4],
"closeMatch": ["xyz789"],
"closeMatchIds": ["4"],
"comment": "abc123",
"attributeLevel": ["abc123"],
"allowMultipleClient": true,
"allowMultipleFreelancer": true,
"allowOther": false,
"clientQuestion": "abc123",
"clientTip": "xyz789",
"freelancerQuestion": "abc123",
"freelancerTip": "abc123",
"advancedClient": false,
"client": false,
"freelancer": true,
"requiredClient": true,
"requiredFreelancer": false,
"otherClientLabel": "abc123",
"otherFreelancerLabel": "abc123",
"presentationMode": "xyz789",
"priority": 123,
"isRequiredBy": ["abc123"],
"isRequiredByIds": ["4"],
"legacySkillNid": "abc123",
"prettyName": "xyz789",
"legacySkillId": 4
}
SkillName
Snapshot
Fields
Field Name | Description |
---|---|
id - ID
|
Unique identifier for the Snapshot |
time - Int
|
Time of the snapshot |
contractId - String
|
Identifier for the contract |
mouseEventsCount - Int
|
Number of mouse events |
keyboardEventsCount - Int
|
Number of keyboard events |
teamName - String
|
Team name associated with the Snapshot |
status - String
|
Status of the Snapshot |
activeWindowTitle - String
|
Title of the active window during the Snapshot |
memo - String
|
Memo associated with the Snapshot |
companyId - String
|
Company identifier associated with the Snapshot |
hasScreenshot - Boolean
|
Indicates whether the Snapshot has a screenshot |
screenshotUrl - String
|
URL of the screenshot |
screenshotImage - String
|
Path to the screenshot image |
screenshotImageLarge - String
|
Path to the large version of the screenshot image |
screenshotImageMedium - String
|
Path to the medium version of the screenshot image |
screenshotImageThumbnail - String
|
Path to the thumbnail version of the screenshot image |
hasWebcam - Boolean
|
Indicates whether the Snapshot has webcam data |
webcamUrl - String
|
URL of the webcam data |
webcamImage - String
|
Path to the webcam image |
webcamImageThumbnail - String
|
Path to the thumbnail version of the webcam image |
task - String
|
Task associated with the Snapshot |
minutes - SnapshotMinutes
|
List of events per minute for a Snapshot |
Example
{
"id": "4",
"time": 987,
"contractId": "xyz789",
"mouseEventsCount": 987,
"keyboardEventsCount": 123,
"teamName": "abc123",
"status": "xyz789",
"activeWindowTitle": "xyz789",
"memo": "abc123",
"companyId": "xyz789",
"hasScreenshot": false,
"screenshotUrl": "xyz789",
"screenshotImage": "xyz789",
"screenshotImageLarge": "abc123",
"screenshotImageMedium": "xyz789",
"screenshotImageThumbnail": "xyz789",
"hasWebcam": false,
"webcamUrl": "abc123",
"webcamImage": "abc123",
"webcamImageThumbnail": "abc123",
"task": "xyz789",
"minutes": SnapshotMinutes
}
SnapshotMinute
SnapshotMinutes
Fields
Field Name | Description |
---|---|
minute - [SnapshotMinute]
|
Example
{"minute": [SnapshotMinute]}
SnapshotsByContractIdInput
SortAttribute
Fields
Input Field | Description |
---|---|
field - String!
|
|
sortOrder - SortOrder!
|
Example
{"field": "xyz789", "sortOrder": "ASC"}
SortOrder
Values
Enum Value | Description |
---|---|
|
|
|
Example
"ASC"
SourceTypeInput
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"JobPosting"
StoryFilter
Fields
Input Field | Description |
---|---|
storyCreatedDateTime_bt - DateTimeRange
|
Returns the story crated between the given date time range |
pagination - Pagination
|
If both pagination.after and an older than value are specified, then the pagination.after takes precedence and the older than value is ignored |
Example
{
"storyCreatedDateTime_bt": DateTimeRange,
"pagination": Pagination
}
String
Description
Built-in String
Example
"xyz789"
StringListMap
Fields
Field Name | Description |
---|---|
key - String!
|
|
value - [String!]!
|
Example
{
"key": "abc123",
"value": ["xyz789"]
}
StringMapElement
StringMapElementInput
StringMapOccupation
Fields
Field Name | Description |
---|---|
category - String!
|
|
services - [Occupation!]!
|
Example
{
"category": "abc123",
"services": [Occupation]
}
TalentAdjustedCategoryScore
Fields
Field Name | Description |
---|---|
averageCategoryScore - Float
|
Example
{"averageCategoryScore": 123.45}
TalentCloudSection
Fields
Field Name | Description |
---|---|
id - ID!
|
|
talentCloud - PrivateTalentCloud
|
|
name - String
|
|
description - String
|
|
type - TalentCloudTaskSectionType
|
|
attachmentIds - [ID]
|
|
active - Boolean
|
|
orderIndex - Int
|
Example
{
"id": "4",
"talentCloud": PrivateTalentCloud,
"name": "abc123",
"description": "xyz789",
"type": "ONBOARDING",
"attachmentIds": [4],
"active": false,
"orderIndex": 123
}
TalentCloudTask
Fields
Field Name | Description |
---|---|
talentCloud - PrivateTalentCloud
|
|
taskSections - [TalentCloudTaskSection]
|
Example
{
"talentCloud": PrivateTalentCloud,
"taskSections": [TalentCloudTaskSection]
}
TalentCloudTaskOverview
Fields
Field Name | Description |
---|---|
id - ID!
|
|
taskSectionIds - [ID]
|
|
name - String
|
|
completionRequired - Boolean
|
|
active - Boolean
|
|
permissions - [TalentCloudTaskOverviewPermission]
|
|
primaryTaskOwner - TalentCloudTaskRole
|
Example
{
"id": "4",
"taskSectionIds": ["4"],
"name": "abc123",
"completionRequired": true,
"active": false,
"permissions": [TalentCloudTaskOverviewPermission],
"primaryTaskOwner": "FREELANCER"
}
TalentCloudTaskOverviewPermission
Fields
Field Name | Description |
---|---|
role - TalentCloudTaskRole
|
|
permission - TalentCloudTaskPermission
|
Example
{"role": "FREELANCER", "permission": "NO"}
TalentCloudTaskPermission
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"NO"
TalentCloudTaskRole
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"FREELANCER"
TalentCloudTaskSection
Fields
Field Name | Description |
---|---|
taskSectionDetails - TalentCloudSection
|
|
tasks - [TalentCloudTaskOverview]
|
Example
{
"taskSectionDetails": TalentCloudSection,
"tasks": [TalentCloudTaskOverview]
}
TalentCloudTaskSectionType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ONBOARDING"
TalentCloudTasksInputFilter
Fields
Input Field | Description |
---|---|
talentCloudIds_any - [ID!]!
|
Example
{"talentCloudIds_any": [4]}
TalentCommunityCertificate
Fields
Field Name | Description |
---|---|
name - String
|
|
description - String
|
|
logoUrl - String
|
|
verificationMethod - String
|
|
provider - String
|
|
providerLink - String
|
|
duration - Int
|
|
classifications - [TalentDiversityCertificateClassification]
|
|
status - TalentCommunityCertificateStatus
|
Example
{
"name": "abc123",
"description": "abc123",
"logoUrl": "xyz789",
"verificationMethod": "xyz789",
"provider": "xyz789",
"providerLink": "xyz789",
"duration": 987,
"classifications": [
TalentDiversityCertificateClassification
],
"status": "PENDING"
}
TalentCommunityCertificateStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
TalentCommunityCertificateVisibility
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PUBLIC"
TalentContract
Fields
Field Name | Description |
---|---|
id - ID!
|
|
startDate - String
|
|
endDate - String
|
|
status - TalentContractStatus
|
|
clientTeamId - ID
|
|
title - String
|
|
terms - TalentContractTerms
|
|
createDate - String
|
|
clientOrgId - ID
|
Example
{
"id": "4",
"startDate": "xyz789",
"endDate": "abc123",
"status": "ACTIVE",
"clientTeamId": 4,
"title": "xyz789",
"terms": TalentContractTerms,
"createDate": "xyz789",
"clientOrgId": 4
}
TalentContractAccessType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PUBLIC"
TalentContractAggregate
TalentContractFeedback
Fields
Field Name | Description |
---|---|
feedbackToFreelancer - TalentWorkFeedback
|
|
feedbackToClient - TalentWorkFeedback
|
Example
{
"feedbackToFreelancer": TalentWorkFeedback,
"feedbackToClient": TalentWorkFeedback
}
TalentContractStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"ACTIVE"
TalentContractTerms
Fields
Field Name | Description |
---|---|
hourlyRate - String
|
|
jobType - TalentJobType
|
|
stipendAmount - String
|
|
fixedAmount - String
|
Example
{
"hourlyRate": "abc123",
"jobType": "FIXED",
"stipendAmount": "abc123",
"fixedAmount": "xyz789"
}
TalentDiversityCertificateClassification
TalentEducationRecord
Description
deprecated: use TalentProfileEducationRecord
Example
{
"id": "xyz789",
"personId": "abc123",
"institutionName": "xyz789",
"standardizedInstitutionId": "abc123",
"areaOfStudy": "xyz789",
"standardizedAreaOfStudyId": "xyz789",
"degree": "abc123",
"standardizedDegreeId": "xyz789",
"startDateTime": "xyz789",
"endDateTime": "xyz789",
"comment": "abc123"
}
TalentFeedbackScore
TalentJobCategory
TalentJobCategoryGroup
Fields
Field Name | Description |
---|---|
id - String
|
|
name - String
|
|
selectedCategories - [TalentJobCategory]
|
Example
{
"id": "xyz789",
"name": "abc123",
"selectedCategories": [TalentJobCategory]
}
TalentJobType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"FIXED"
TalentOpening
Fields
Field Name | Description |
---|---|
id - ID
|
|
title - String
|
|
visibility - TalentContractAccessType
|
Example
{
"id": "4",
"title": "xyz789",
"visibility": "PUBLIC"
}
TalentPersonAvailability
Fields
Field Name | Description |
---|---|
personId - String
|
|
capacity - FreelancerProfileAvailabilityCapacity
|
|
createdDateTime - String
|
|
availabilityDateTime - String
|
|
updatedDateTime - String
|
|
purchasedInvitationBadge - TalentPurchasedInvitationBadge
|
|
minHours - Int
|
|
maxHours - Int
|
|
availableDays - [Day]!
|
Example
{
"personId": "abc123",
"capacity": "fullTime",
"createdDateTime": "abc123",
"availabilityDateTime": "xyz789",
"updatedDateTime": "xyz789",
"purchasedInvitationBadge": TalentPurchasedInvitationBadge,
"minHours": 987,
"maxHours": 987,
"availableDays": ["MONDAY"]
}
TalentProfile
Fields
Field Name | Description |
---|---|
personId - ID!
|
person id added for sbe batch loader |
identity - TalentProfileIdentity
|
profile parts |
personalData - TalentProfilePersonalData
|
|
preferences - TalentProfileUserPreferences
|
|
settings - TalentProfileSettings
|
|
personAvailability - TalentPersonAvailability
|
|
projectList - TalentProjectList
|
|
communityCertificates - [TalentProfileCommunityCertificate]
|
|
profileCompleteness - TalentProfileCompletenessSummary
|
|
otherExperiences - [TalentProfileOtherExperience]
|
|
educationRecords - [TalentEducationRecord]
|
|
employmentRecords - [TalentProfileEmploymentRecord]
|
|
skills - [TalentProfilePersonSkill]
|
|
jobCategories - [TalentJobCategoryGroup]
|
|
profileAggregates - TalentProfileAggregate
|
|
specializedProfiles - [TalentSpecializedProfile!]
|
|
specializedProfilesSkills - [TalentSpecializedProfileSkill!]
|
|
specializedProfilesProjects - [TalentSpecializedProfilesProject!]
|
Example
{
"personId": 4,
"identity": TalentProfileIdentity,
"personalData": TalentProfilePersonalData,
"preferences": TalentProfileUserPreferences,
"settings": TalentProfileSettings,
"personAvailability": TalentPersonAvailability,
"projectList": TalentProjectList,
"communityCertificates": [
TalentProfileCommunityCertificate
],
"profileCompleteness": TalentProfileCompletenessSummary,
"otherExperiences": [TalentProfileOtherExperience],
"educationRecords": [TalentEducationRecord],
"employmentRecords": [TalentProfileEmploymentRecord],
"skills": [TalentProfilePersonSkill],
"jobCategories": [TalentJobCategoryGroup],
"profileAggregates": TalentProfileAggregate,
"specializedProfiles": [TalentSpecializedProfile],
"specializedProfilesSkills": [
TalentSpecializedProfileSkill
],
"specializedProfilesProjects": [
TalentSpecializedProfilesProject
]
}
TalentProfileAggregate
Example
{
"lastWorkedOn": "xyz789",
"totalHourlyJobs": 987,
"totalFixedJobs": 123,
"topRatedStatus": "xyz789",
"totalFeedback": 123.45,
"totalEarnings": 987.65,
"adjustedCategoryScores": [TalentAdjustedCategoryScore],
"totalJobs": 123
}
TalentProfileCommunityCertificate
Fields
Field Name | Description |
---|---|
personId - String
|
|
certificateAttachmentId - String
|
|
certificationNumber - String
|
|
expirationDate - String
|
|
businessName - String
|
|
visibility - TalentCommunityCertificateVisibility
|
|
certificate - TalentCommunityCertificate
|
Example
{
"personId": "xyz789",
"certificateAttachmentId": "abc123",
"certificationNumber": "xyz789",
"expirationDate": "xyz789",
"businessName": "xyz789",
"visibility": "PUBLIC",
"certificate": TalentCommunityCertificate
}
TalentProfileCompletenessSummary
Fields
Field Name | Description |
---|---|
personId - String
|
|
pciActual - Int
|
pci stands for profile completeness index |
pciDisplay - Int
|
|
pciAction - String
|
|
pciActionCredit - Int
|
|
pciDateTime - String
|
|
actionForEmptySection - String
|
|
skillsCount - Int
|
|
employmentRecordCount - Int
|
|
portraitExists - Boolean
|
|
overviewExists - Boolean
|
|
passedTestsCount - Int
|
|
educationRecordCount - Int
|
|
certificatesCount - Int
|
|
otherExperiencesCount - Int
|
|
portfolioCount - Int
|
|
esnCount - Int
|
|
updatedDateTime - String
|
Example
{
"personId": "xyz789",
"pciActual": 123,
"pciDisplay": 123,
"pciAction": "abc123",
"pciActionCredit": 123,
"pciDateTime": "abc123",
"actionForEmptySection": "abc123",
"skillsCount": 123,
"employmentRecordCount": 123,
"portraitExists": false,
"overviewExists": true,
"passedTestsCount": 123,
"educationRecordCount": 123,
"certificatesCount": 123,
"otherExperiencesCount": 987,
"portfolioCount": 123,
"esnCount": 123,
"updatedDateTime": "xyz789"
}
TalentProfileEmploymentRecord
Description
deprecated: use TalentProfileEmploymentHistoryRecord
Example
{
"id": "xyz789",
"personId": "xyz789",
"companyName": "xyz789",
"jobTitle": "xyz789",
"standardizedCompanyId": "abc123",
"standardizedJobTitleId": "abc123",
"role": "xyz789",
"startDateTime": "xyz789",
"endDateTime": "abc123",
"description": "abc123",
"city": "abc123",
"country": "abc123"
}
TalentProfileIdentity
TalentProfileOtherExperience
TalentProfilePersonalData
Fields
Field Name | Description |
---|---|
firstName - String!
|
|
lastName - String!
|
|
portrait - Portrait
|
|
title - String
|
Profile Title |
description - String
|
Profile Description |
chargeRate - Money!
|
Freelancer's typical billing rate |
profileUrl - String
|
link to the freelancer's profile |
profileState - PersonalDataProfileState
|
under Review, auto rejected, rejected, accepted etc. |
location - PersonalDataLocation
|
Personal Data location |
Example
{
"firstName": "abc123",
"lastName": "xyz789",
"portrait": Portrait,
"title": "xyz789",
"description": "xyz789",
"chargeRate": Money,
"profileUrl": "abc123",
"profileState": "IN_PROGRESS",
"location": PersonalDataLocation
}
TalentProfilePersonSkill
Fields
Field Name | Description |
---|---|
id - ID
|
|
skill - String
|
|
prettyName - String
|
|
status - String
|
|
description - String
|
|
externalLink - String
|
|
wikipediaPageId - String
|
|
freebaseMachineId - String
|
|
migrateTo - String
|
|
ctime - String
|
|
mtime - String
|
|
rank - String
|
|
ontologySkill - Skill
|
applicable fields of ontology skill in talent profile id, ontologyId, preferredLabel, entityStatus, allowMultipleClient, allowMultipleFreelancer, allowOther, advancedClient, client, freelancer, requiredClient, requiredFreelancer, priority, legacySkillNid, legacySkillId |
parentOntologySkill - Skill
|
Example
{
"id": 4,
"skill": "xyz789",
"prettyName": "abc123",
"status": "abc123",
"description": "abc123",
"externalLink": "abc123",
"wikipediaPageId": "xyz789",
"freebaseMachineId": "xyz789",
"migrateTo": "xyz789",
"ctime": "xyz789",
"mtime": "abc123",
"rank": "xyz789",
"ontologySkill": Skill,
"parentOntologySkill": Skill
}
TalentProfileProject
Fields
Field Name | Description |
---|---|
id - ID!
|
|
title - String
|
|
description - String
|
|
projectContractLink - TalentProjectContractLink
|
|
thumbnail - String
|
|
thumbnailOriginal - String
|
|
projectUrl - String
|
|
completionDateTime - String
|
|
public - Boolean
|
|
rank - Int
|
|
attachments - [TalentProfileProjectAttachment]
|
|
skills - [String]
|
|
creationDateTime - String
|
|
categoryId - ID
|
|
videoUrl - String
|
|
occupationId - String
|
|
projectType - FreelancerProfileProjectType
|
|
role - String
|
|
projectGoal - String
|
|
solution - String
|
|
primaryImageId - String
|
|
tags - [TalentProfileProjectTag]
|
|
modificationDateTime - String
|
|
developerId - String
|
|
thumbnailId - String
|
|
thumbnailOriginalId - String
|
|
category - String
|
|
subCategory - String
|
Example
{
"id": "4",
"title": "xyz789",
"description": "abc123",
"projectContractLink": TalentProjectContractLink,
"thumbnail": "xyz789",
"thumbnailOriginal": "xyz789",
"projectUrl": "xyz789",
"completionDateTime": "abc123",
"public": true,
"rank": 987,
"attachments": [TalentProfileProjectAttachment],
"skills": ["abc123"],
"creationDateTime": "xyz789",
"categoryId": "4",
"videoUrl": "abc123",
"occupationId": "abc123",
"projectType": "CLASSIC_VIEW",
"role": "abc123",
"projectGoal": "abc123",
"solution": "xyz789",
"primaryImageId": "xyz789",
"tags": [TalentProfileProjectTag],
"modificationDateTime": "abc123",
"developerId": "xyz789",
"thumbnailId": "xyz789",
"thumbnailOriginalId": "xyz789",
"category": "abc123",
"subCategory": "xyz789"
}
TalentProfileProjectAttachment
Fields
Field Name | Description |
---|---|
id - ID
|
|
type - String
|
|
title - String
|
|
attachmentName - String
|
|
attachmentSize - Int
|
|
originalAttachment - String
|
|
imageSmall - String
|
|
imageMiddle - String
|
|
imageLarge - String
|
|
rank - Int
|
|
creationDateTime - String
|
|
description - String
|
|
videoUrl - String
|
|
imageFixedWidth - String
|
|
group - String
|
Example
{
"id": "4",
"type": "abc123",
"title": "xyz789",
"attachmentName": "abc123",
"attachmentSize": 123,
"originalAttachment": "abc123",
"imageSmall": "abc123",
"imageMiddle": "xyz789",
"imageLarge": "abc123",
"rank": 123,
"creationDateTime": "xyz789",
"description": "xyz789",
"videoUrl": "xyz789",
"imageFixedWidth": "xyz789",
"group": "abc123"
}
TalentProfileProjectTag
TalentProfileSettings
Example
{
"provider": true,
"suspended": false,
"disabled": true,
"status": "abc123",
"updatedDateTime": "abc123"
}
TalentProfileSpecializedProject
Fields
Field Name | Description |
---|---|
id - ID!
|
|
title - String
|
|
description - String
|
|
projectContractLink - TalentProjectContractLink
|
|
thumbnail - String
|
|
thumbnailOriginal - String
|
|
projectUrl - String
|
|
completionDateTime - String
|
|
public - Boolean
|
|
rank - Int
|
|
attachments - [TalentProfileProjectAttachment]
|
|
creationDateTime - String
|
|
categoryId - ID
|
|
videoUrl - String
|
|
occupationId - String
|
|
projectType - FreelancerProfileProjectType
|
|
role - String
|
|
projectGoal - String
|
|
solution - String
|
|
primaryImageId - String
|
|
modificationDateTime - String
|
|
thumbnailId - String
|
|
thumbnailOriginalId - String
|
|
category - String
|
|
subCategory - String
|
Example
{
"id": 4,
"title": "xyz789",
"description": "xyz789",
"projectContractLink": TalentProjectContractLink,
"thumbnail": "xyz789",
"thumbnailOriginal": "abc123",
"projectUrl": "abc123",
"completionDateTime": "xyz789",
"public": true,
"rank": 123,
"attachments": [TalentProfileProjectAttachment],
"creationDateTime": "abc123",
"categoryId": 4,
"videoUrl": "xyz789",
"occupationId": "abc123",
"projectType": "CLASSIC_VIEW",
"role": "abc123",
"projectGoal": "abc123",
"solution": "xyz789",
"primaryImageId": "xyz789",
"modificationDateTime": "abc123",
"thumbnailId": "xyz789",
"thumbnailOriginalId": "abc123",
"category": "abc123",
"subCategory": "xyz789"
}
TalentProfileStatus
Values
Enum Value | Description |
---|---|
|
|
|
Example
"DRAFT"
TalentProfileUserPreferences
Example
{
"visibilityLevel": "PUBLIC",
"hideAgencyEarnings": true,
"hideEarnings": false,
"exposeFullName": false,
"clientFeedbackOptional": true,
"contractToHire": false
}
TalentProjectContractLink
TalentProjectList
Fields
Field Name | Description |
---|---|
projects - [TalentProfileProject]
|
|
totalProjects - Int
|
|
updatedDateTime - String
|
Example
{
"projects": [TalentProfileProject],
"totalProjects": 987,
"updatedDateTime": "abc123"
}
TalentPurchasedInvitationBadge
TalentSkillNodeEdge
Fields
Field Name | Description |
---|---|
skill - Skill
|
Example
{"skill": Skill}
TalentSpecializedProfile
Example
{
"personId": "xyz789",
"profileId": "abc123",
"occupationId": "abc123",
"status": "DRAFT",
"rank": 123,
"occupations": ["xyz789"],
"primary": true,
"title": "xyz789",
"description": "xyz789",
"hourlyRate": Money,
"weblink": "abc123"
}
TalentSpecializedProfileSkill
Fields
Field Name | Description |
---|---|
skills - [TalentSpecializedProfileSkillNode]
|
Example
{"skills": [TalentSpecializedProfileSkillNode]}
TalentSpecializedProfileSkillNode
Fields
Field Name | Description |
---|---|
ontologySkill - TalentSkillNodeEdge
|
|
parentOntologySkill - TalentSkillNodeEdge
|
Example
{
"ontologySkill": TalentSkillNodeEdge,
"parentOntologySkill": TalentSkillNodeEdge
}
TalentSpecializedProfilesProject
Fields
Field Name | Description |
---|---|
personId - ID
|
|
profileId - ID
|
|
project - TalentProfileSpecializedProject
|
Example
{
"personId": 4,
"profileId": "4",
"project": TalentProfileSpecializedProject
}
TalentWorkAccessType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"PUBLIC"
TalentWorkFeedback
Example
{
"comment": "xyz789",
"response": "xyz789",
"score": 987.65,
"scores": [TalentFeedbackScore],
"feedbackSuppressed": true,
"isPublic": false,
"commentPublic": true,
"point": "abc123"
}
TalentWorkHistory
Fields
Field Name | Description |
---|---|
contract - TalentContract
|
|
contractAggregate - TalentContractAggregate
|
|
feedback - TalentContractFeedback
|
|
opening - TalentOpening
|
Example
{
"contract": TalentContract,
"contractAggregate": TalentContractAggregate,
"feedback": TalentContractFeedback,
"opening": TalentOpening
}
TalentWorkHistoryConnection
Description
the exported model of the upWorkHistory.TWorkHistoryList
Fields
Field Name | Description |
---|---|
workHistoryList - [TalentWorkHistory]
|
|
totalCount - Int
|
Example
{
"workHistoryList": [TalentWorkHistory],
"totalCount": 123
}
TalentWorkHistoryFilterInput
Fields
Input Field | Description |
---|---|
personId - ID!
|
|
contractIds - [ID]
|
|
excludeNoFeedback - Boolean
|
|
visibility - TalentWorkAccessType
|
|
status - [TalentContractStatus]
|
|
sort - TalentWorkHistorySort
|
|
pagination - TalentWorkHistoryPagination
|
Example
{
"personId": 4,
"contractIds": [4],
"excludeNoFeedback": false,
"visibility": "PUBLIC",
"status": ["ACTIVE"],
"sort": TalentWorkHistorySort,
"pagination": TalentWorkHistoryPagination
}
TalentWorkHistoryPagination
TalentWorkHistorySort
Fields
Input Field | Description |
---|---|
type - TalentWorkHistorySortType!
|
|
order - SortOrder!
|
Example
{"type": "NEWEST", "order": "ASC"}
TalentWorkHistorySortType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"NEWEST"
TimeReport
Fields
Field Name | Description |
---|---|
dateWorkedOn - String!
|
Date of the time report |
weekWorkedOn - String!
|
Week of the time report |
monthWorkedOn - String!
|
Month of the time report |
yearWorkedOn - String!
|
Year of the time report |
freelancer - GenericUser
|
User associated with the time report |
team - GenericOrganization
|
Team associated with the time report |
contractOffer - ContractOfferResult
|
Contract-Offer associated with the time report Use contract |
contract - ContractDetails
|
|
termId - ID
|
the active termId of the contract |
task - String
|
Task associated with the time report |
taskDescription - String
|
Task description associated with the time report |
memo - String
|
Memo associated with the time report |
totalHoursWorked - Float
|
Total hours worked for the time report |
totalCharges - Float
|
Total charges made for the time report |
totalOnlineHoursWorked - Float
|
Total online hours worked for the time report |
totalOnlineCharge - Float
|
Total charges made for online work for the time report |
totalOfflineHoursWorked - Float
|
Total offline hours worked for the time report |
totalOfflineCharge - Float
|
Total charges made for offline work for the time report |
billRate - BillRate
|
Bill rate associated with the time report |
Example
{
"dateWorkedOn": "abc123",
"weekWorkedOn": "abc123",
"monthWorkedOn": "xyz789",
"yearWorkedOn": "xyz789",
"freelancer": GenericUser,
"team": GenericOrganization,
"contractOffer": ContractOfferResult,
"contract": ContractDetails,
"termId": "4",
"task": "abc123",
"taskDescription": "abc123",
"memo": "abc123",
"totalHoursWorked": 123.45,
"totalCharges": 123.45,
"totalOnlineHoursWorked": 987.65,
"totalOnlineCharge": 123.45,
"totalOfflineHoursWorked": 123.45,
"totalOfflineCharge": 987.65,
"billRate": BillRate
}
TimeReportConnection
Description
START time report
Fields
Field Name | Description |
---|---|
totalCount - Int
|
|
edges - [TimeReportEdge!]
|
|
pageInfo - PageInfo
|
Example
{
"totalCount": 987,
"edges": [TimeReportEdge],
"pageInfo": PageInfo
}
TimeReportEdge
Fields
Field Name | Description |
---|---|
node - TimeReport!
|
|
cursor - String!
|
Example
{
"node": TimeReport,
"cursor": "xyz789"
}
TimeReportFilter
Fields
Input Field | Description |
---|---|
organizationId_eq - ID!
|
|
timeReportDate_bt - DateTimeRange!
|
Example
{
"organizationId_eq": "4",
"timeReportDate_bt": DateTimeRange
}
TimeZoneRecord
UpdateEmploymentRecordInput
Description
Profile Mutation: update employment record input
Fields
Input Field | Description |
---|---|
id - ID!
|
|
userId - ID
|
|
companyName - String
|
|
jobTitle - String
|
|
standardizedCompanyId - String
|
|
standardizedJobTitleId - String
|
|
role - String!
|
|
startDate - String
|
start date - e.g: "1999-01-01" |
endDate - String
|
end date - e.g: "2002-01-01" |
description - String
|
|
city - String
|
|
country - String
|
Example
{
"id": 4,
"userId": "4",
"companyName": "abc123",
"jobTitle": "abc123",
"standardizedCompanyId": "abc123",
"standardizedJobTitleId": "xyz789",
"role": "xyz789",
"startDate": "abc123",
"endDate": "abc123",
"description": "xyz789",
"city": "abc123",
"country": "xyz789"
}
UpdateOrganizationInput
Example
{
"id": 4,
"parentOrganizationId": "4",
"organizationName": "abc123",
"hidden": true,
"address": OrganizationLocationInput,
"vatId": "abc123"
}
UpdateOtherExperienceInput
UpdateRoomStoryResponse
Fields
Field Name | Description |
---|---|
status - String!
|
Example
{"status": "abc123"}
UpdateTeamActivityRequest
Fields
Input Field | Description |
---|---|
code - String!
|
An activity tracking code (this defines the activity tracking code) |
description - String!
|
The description of the code being added |
url - String
|
The location where more info on the code can be found (the URL can be used to direct the user to more info about the code being entered) |
contractIds - [ID!]
|
List of associated contracts |
budget - Float
|
Budget for the activity |
batchAssignment - BatchAssignmentOptions
|
The assignment level of the activity |
Example
{
"code": "xyz789",
"description": "xyz789",
"url": "xyz789",
"contractIds": ["4"],
"budget": 987.65,
"batchAssignment": "selectedContracts"
}
UpdateWorkflowTaskDetailsInput
Fields
Input Field | Description |
---|---|
status - WorkflowTaskStatus
|
|
labels - [WorkflowTaskPatchLabelInput!]
|
Example
{
"status": "NOT_OPEN",
"labels": [WorkflowTaskPatchLabelInput]
}
UpdateWorkflowTaskResult
Fields
Field Name | Description |
---|---|
workflowId - ID
|
|
updatedTaskView - WorkflowTaskView
|
Example
{"workflowId": 4, "updatedTaskView": WorkflowTaskView}
UserFreelancerProfilesSearchRecord
Fields
Field Name | Description |
---|---|
shortName - String
|
shortName of the freelancer |
ciphertext - String
|
freelancer's ciphertext |
user - GenericUser
|
freelancer id, ciphertext |
userProfile - FreelancerProfile
|
freelancer profile details |
Example
{
"shortName": "xyz789",
"ciphertext": "xyz789",
"user": GenericUser,
"userProfile": FreelancerProfile
}
UserPreferredLocationType
Description
User's i18n preferred location type values
Values
Enum Value | Description |
---|---|
|
|
|
Example
"WORLD"
VemSkill
VendorUserInput
Visitor
Fields
Field Name | Description |
---|---|
i18n - VisitorI18N
|
|
segment - VisitorSegment
|
Query to look up visitor segment data based on visitorId and the respective segment name |
Example
{
"i18n": VisitorI18N,
"segment": VisitorSegment
}
VisitorI18N
Fields
Field Name | Description |
---|---|
countrySupported - Boolean
|
|
status - String
|
|
locationViewType - String
|
|
userPreferredLocationType - String
|
|
settingsFlags - VisitorI18NSettings
|
Example
{
"countrySupported": true,
"status": "xyz789",
"locationViewType": "abc123",
"userPreferredLocationType": "abc123",
"settingsFlags": VisitorI18NSettings
}
VisitorI18NSettings
Fields
Field Name | Description |
---|---|
showDomesticLocationFilterOnFLSearch - Boolean
|
|
showJobSearch - Boolean
|
|
showPhoneVerification - Boolean
|
|
showSmfToUpdateAddress - Boolean
|
|
showPersonalAddressAutocomplete - Boolean
|
|
showMessageContainer - Boolean
|
|
showLocationPreferenceOnJobPost - Boolean
|
|
defaultDomesticEnabled - Boolean
|
|
jobSearchDefaultedToON - Boolean
|
|
showLocationVerificationOnFWH - Boolean
|
|
domesticEnabledForFreelancersOnFLSearch - Boolean
|
Example
{
"showDomesticLocationFilterOnFLSearch": true,
"showJobSearch": false,
"showPhoneVerification": true,
"showSmfToUpdateAddress": false,
"showPersonalAddressAutocomplete": true,
"showMessageContainer": false,
"showLocationPreferenceOnJobPost": false,
"defaultDomesticEnabled": false,
"jobSearchDefaultedToON": true,
"showLocationVerificationOnFWH": false,
"domesticEnabledForFreelancersOnFLSearch": false
}
VisitorSegment
Description
Visitors to the site are typically categorized/segmented according to a specific criteria, such as demographics or user behavior. VisitorSegment
contains information about that visitor
Example
{
"visitorId": 4,
"segmentName": "abc123",
"data": "xyz789"
}
WithdrawOfferInput
Fields
Input Field | Description |
---|---|
offerId - ID!
|
|
message - String
|
Message to vendor |
withdrawalReason - WithdrawReason
|
Withdrawal reason |
Example
{
"offerId": 4,
"message": "xyz789",
"withdrawalReason": "OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER"
}
WithdrawReason
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER"
WorkDay
WorkdayResult
Fields
Field Name | Description |
---|---|
workDays - [String]
|
list of working days or calendar days that are highlighted in the date picker |
Example
{"workDays": ["abc123"]}
WorkdaysInput
Fields
Input Field | Description |
---|---|
contractIds - [ID!]!
|
|
timeRange - DateTimeRange!
|
|
offsetInSeconds - Int
|
Example
{
"contractIds": [4],
"timeRange": DateTimeRange,
"offsetInSeconds": 123
}
WorkDiary
Fields
Field Name | Description |
---|---|
cells - [Cell!]
|
Example
{"cells": [Cell]}
WorkDiaryCellActivityByMinute
Description
Activity events per minute for a particular WorkDiary timecell
Example
{"timeStamp": 987, "mouseEvents": 123, "keyboardEvents": 987, "active": true}
WorkDiaryCellActivityByMinuteResult
Fields
Field Name | Description |
---|---|
activities - [WorkDiaryCellActivityByMinute!]!
|
Example
{"activities": [WorkDiaryCellActivityByMinute]}
WorkDiaryCompany
Fields
Field Name | Description |
---|---|
total - Int
|
|
snapshots - [WorkDiaryCompanySnapshot]
|
Example
{"total": 987, "snapshots": [WorkDiaryCompanySnapshot]}
WorkDiaryCompanyContract
WorkDiaryCompanyInput
WorkDiaryCompanySnapshot
Fields
Field Name | Description |
---|---|
contract - WorkDiaryCompanyContract
|
|
user - WorkDiaryCompanyUser
|
|
duration - String
|
|
durationInt - Int
|
|
task - WorkDiaryCompanySnapshotTask
|
|
time - WorkDiaryCompanyTime
|
|
screenshots - [WorkDiaryCompanySnapshotScreenshot]
|
Example
{
"contract": WorkDiaryCompanyContract,
"user": WorkDiaryCompanyUser,
"duration": "xyz789",
"durationInt": 123,
"task": WorkDiaryCompanySnapshotTask,
"time": WorkDiaryCompanyTime,
"screenshots": [WorkDiaryCompanySnapshotScreenshot]
}
WorkDiaryCompanySnapshotScreenshot
Fields
Field Name | Description |
---|---|
activity - Int
|
|
screenshotUrl - String
|
|
screenshotImage - String
|
|
screenshotImageLarge - String
|
|
screenshotImageMedium - String
|
|
screenshotImageThumbnail - String
|
|
hasScreenshot - Boolean
|
|
hasWebcam - Boolean
|
|
webcamUrl - String
|
|
webcamImage - String
|
|
webcamImageThumbnail - String
|
|
flags - WorkDiaryCompanySnapshotScreenshotFlag
|
Example
{
"activity": 123,
"screenshotUrl": "xyz789",
"screenshotImage": "xyz789",
"screenshotImageLarge": "abc123",
"screenshotImageMedium": "xyz789",
"screenshotImageThumbnail": "abc123",
"hasScreenshot": true,
"hasWebcam": true,
"webcamUrl": "xyz789",
"webcamImage": "xyz789",
"webcamImageThumbnail": "abc123",
"flags": WorkDiaryCompanySnapshotScreenshotFlag
}
WorkDiaryCompanySnapshotScreenshotFlag
WorkDiaryCompanySnapshotTask
WorkDiaryCompanyTime
Example
{
"trackedTime": "abc123",
"manualTime": "xyz789",
"overtime": "abc123",
"firstWorked": "abc123",
"lastWorked": "xyz789",
"firstWorkedInt": 987,
"lastWorkedInt": 123,
"lastScreenshot": "abc123"
}
WorkDiaryCompanyUser
WorkDiaryContract
Fields
Field Name | Description |
---|---|
workDiaryMetadata - WorkDiaryMetadata
|
|
workDiaryTimeCells - [WorkDiaryTimeCell!]
|
Example
{
"workDiaryMetadata": WorkDiaryMetadata,
"workDiaryTimeCells": [WorkDiaryTimeCell]
}
WorkDiaryContractInput
Fields
Input Field | Description |
---|---|
contractId - ID!
|
|
date - String!
|
Supported format for the input is yyyymmdd |
offsetInSeconds - Int
|
|
useLegacy - Boolean
|
Use the "useLegacyEndpoint" flag to determine the data source for this query. When set to true, the query will be fulfilled using a legacy endpoint additionally the "user" field becomes available. If "useLegacyEndpoint" is false, the "user" field is not accessible in the query. |
Example
{
"contractId": 4,
"date": "xyz789",
"offsetInSeconds": 987,
"useLegacy": true
}
WorkDiaryMetadata
WorkDiaryTask
WorkDiaryTimeCell
Description
Timecell is the time period or the duration of time which is billable by the contractor. Typically each workDiary timecell consists of 10 billable minutes.
Fields
Field Name | Description |
---|---|
cellDateTime - DateTime
|
the timestamp that denotes the beginning of timecell |
snapshotDateTime - DateTime
|
the timestamp at which the snapshot has been taken during the timecell |
overtime - Boolean
|
Should this timelog entry be considered overtime, this is available only if "useLegacyEndpoint" is not set to true |
manual - Boolean
|
True if the contractor has entered manual time for this timecell |
activityLevel - Int
|
Activity level that is a measure (derived out of) keyboard events and mouse events during this timecell |
memo - String
|
Memo of the work done during this timecell |
task - WorkDiaryTask
|
The task eg: Jira Task associated with this timecell |
mouseEventsCount - Int
|
The number of mouse events during this timecell |
keyboardEventsCount - Int
|
The number of keyboard events during this timecell |
activeWindowTitle - String
|
What is the title of the window, which was active during the screen capture |
hideScreenshots - Boolean
|
should this screenshot be hidden |
hasScreenshot - Boolean
|
is there a screenshot associated with this timecell |
screenshotImageUrl - String
|
The image url of the screenshot associated with this timecell |
screenshotImageUrlMedium - String
|
The image url (medium size) of the screenshot associated with this timecell |
screenshotImageThumbnail - String
|
The thumbnail of the screenshot associated with this timecell |
webcamEnabled - Boolean
|
Was there a webcam associated with this timecell |
webcamImageUrl - String
|
The webcam image associated with this timecell |
webcamImageThumbnail - String
|
The thumbnail url of the webcam image associated with this timecell |
snapshotExpired - Boolean
|
Has the snapshot associated expired |
Example
{
"cellDateTime": DateTime,
"snapshotDateTime": DateTime,
"overtime": true,
"manual": false,
"activityLevel": 123,
"memo": "xyz789",
"task": WorkDiaryTask,
"mouseEventsCount": 123,
"keyboardEventsCount": 123,
"activeWindowTitle": "abc123",
"hideScreenshots": true,
"hasScreenshot": false,
"screenshotImageUrl": "xyz789",
"screenshotImageUrlMedium": "xyz789",
"screenshotImageThumbnail": "abc123",
"webcamEnabled": true,
"webcamImageUrl": "xyz789",
"webcamImageThumbnail": "abc123",
"snapshotExpired": true
}
WorkflowAssociationView
WorkflowOnboardingStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOT_STARTED"
WorkflowTaskAssigneeView
WorkflowTaskComment
Example
{
"id": 4,
"message": "abc123",
"createdDateTime": "xyz789",
"createdBy": "abc123",
"visibleToClient": true,
"attachments": [WorkflowTaskCommentAttachments]
}
WorkflowTaskCommentAttachments
WorkflowTaskCustomAttribute
WorkflowTaskLabel
Values
Enum Value | Description |
---|---|
|
|
|
Example
"FLAGGED"
WorkflowTaskPatchLabelInput
Fields
Input Field | Description |
---|---|
label - WorkflowTaskLabel
|
|
enabled - Boolean
|
Example
{"label": "FLAGGED", "enabled": false}
WorkflowTaskStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOT_OPEN"
WorkflowTaskView
Fields
Field Name | Description |
---|---|
id - ID
|
|
type - String
|
|
title - String
|
|
description - String
|
|
status - WorkflowTaskStatus!
|
|
assignee - WorkflowTaskAssigneeView
|
|
comments - [WorkflowTaskComment!]
|
|
createdDateTime - String
|
|
finishedDateTime - String
|
|
dueDate - String
|
|
modifiedDateTime - String
|
|
createdBy - String
|
|
modifiedBy - String
|
|
labels - [WorkflowTaskLabel!]
|
|
active - Boolean
|
|
notRequired - Boolean
|
|
dependsOn - String
|
|
externalTaskId - String
|
|
delayReasons - String
|
|
customAttributes - [WorkflowTaskCustomAttribute!]
|
|
order - Int
|
|
canEdit - Boolean
|
|
owner - Boolean
|
Provides a possibility for the user to filter on UI it's own tasks . |
Example
{
"id": 4,
"type": "xyz789",
"title": "xyz789",
"description": "xyz789",
"status": "NOT_OPEN",
"assignee": WorkflowTaskAssigneeView,
"comments": [WorkflowTaskComment],
"createdDateTime": "abc123",
"finishedDateTime": "abc123",
"dueDate": "xyz789",
"modifiedDateTime": "xyz789",
"createdBy": "abc123",
"modifiedBy": "abc123",
"labels": ["FLAGGED"],
"active": true,
"notRequired": true,
"dependsOn": "xyz789",
"externalTaskId": "xyz789",
"delayReasons": "xyz789",
"customAttributes": [WorkflowTaskCustomAttribute],
"order": 987,
"canEdit": false,
"owner": true
}
WorkflowView
Fields
Field Name | Description |
---|---|
id - ID
|
|
type - String
|
|
onboardedStatus - WorkflowOnboardingStatus
|
|
totalTasks - Int
|
|
notStartedTasksCount - Int
|
|
inProgressTasksCount - Int
|
|
completedTasksCount - Int
|
|
tasksOverdue - Int
|
|
percentComplete - Int
|
|
startDateTime - String
|
|
completionDateTime - String
|
|
associations - [WorkflowAssociationView!]
|
|
tasks - [WorkflowTaskView!]
|
|
createdDateTime - String
|
|
modifiedDateTime - String
|
|
createdBy - String
|
|
modifiedBy - String
|
Example
{
"id": "4",
"type": "xyz789",
"onboardedStatus": "NOT_STARTED",
"totalTasks": 123,
"notStartedTasksCount": 987,
"inProgressTasksCount": 123,
"completedTasksCount": 123,
"tasksOverdue": 987,
"percentComplete": 987,
"startDateTime": "xyz789",
"completionDateTime": "abc123",
"associations": [WorkflowAssociationView],
"tasks": [WorkflowTaskView],
"createdDateTime": "xyz789",
"modifiedDateTime": "xyz789",
"createdBy": "abc123",
"modifiedBy": "xyz789"
}