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:

  • Help Center
  • StackOverflow
  • Github
Contact

API Support

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.

Before you apply for a key, select the organization (context) from the menu. The key will be created under the selected context, who will be the owner of the key.

https://www.upwork.com/developer/keys/apply

Every new request for an API Key will be reviewed. For a quick positive decision, you need to comply the following conditions:

  1. 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
  2. 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.
  3. Agree to use the Upwork API in a manner that does not exceed a reasonable request volume. Our daily allowed limit is 40K requests.
  4. Refrain from using the Upwork logo, brand name, brand theme/colors and trademarked content in your application.
  5. 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.

Keys Management

When an API key is created, it is associated with the current context selected in the top-right menu (e.g., personal or organizational context). Please note, API keys cannot be transferred between contexts after creation.

For organizational use, ensure that the correct organization is selected before generating the key. If a key is created under a personal context, it will remain associated with that individual account.

To simplify key management, organization administrators can delegate key creation and management to specific members by assigning the appropriate permissions. API keys created by authorized members within an organizational context are owned by the organization—not by the individual who generated them. Ownership remains with the organization even if the member later leaves.

Granting API Key Management Permissions

To grant a member of your organization permission to create and manage API keys, follow these steps:

Step 1: Navigate to the following URL: https://www.upwork.com/nx/org-management/members. Make sure you are logged in with the appropriate account and have selected the correct organizational context.

Step 2: Add or Select Team Members: To invite a new member to your organization, click "Invite Members". Once the member has been added, or if the member already exists, select their name from the team list and assign the "API Key Manager" permission. To be able to manage keys for an organization, you must have one of the following permissions: "Account Admin" or "API Key Manager".

Step 3: Member Can Now Manage API Keys: The selected team member now has permission to create and manage API keys on behalf of the organization. All keys created under the organizational context will be owned by the organization.

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.

Please note that the scope "Common Entities - Read-Only Access" will be required for all the cases.

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:

                  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:

  1. Authorize the application using one of the available grants and obtain an Authorization code in Code Authorization Grant
  2. 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

Authorization Code Grant is an OAuth 2.0 flow that enables you to obtain an access token. This grant is used to exchange an authorization code for an access token.

After you return to the client through the redirect URL, the application gets the authorization code from the URL and leverages it to request an access token.

To obtain an access token through the Authorization Code Grant, you must fulfill the following prerequisites and complete the steps thereafter:
  1. Prerequisites
  2. Obtain an authorization code
  3. Obtain an access token

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

Callback URL

The URI to which Upwork redirects the browser after authentication. This is also known as redirect URI.

Notes:

Step 1. Obtaining an authorization code

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

response_type
required, string

The corresponding grant type. Use code for Authorization Code Grant.
client_id
required, string

Your Client ID.
redirect_uri
required, string

Redirect URI, must be equal or similar to the callback specified in the key settings.


Returns

Returns the code.
<!DOCTYPE html>
            <html lang="en">
              <head>
                <meta charset="UTF-8" />
                <meta http-equiv="refresh" content="0;url='https://upwork.com/ab/messages/rooms/?code=b094053c2892cb819942e2d01e7237e7'" />
                <title>Redirecting to https://upwork.com/ab/messages/rooms/?code=b094053c2892cb819942e2d01e7237e7</title>
              </head>
              <body>
                Redirecting to <a href="https://upwork.com/ab/messages/rooms/?code=b094053c2892cb819942e2d01e7237e7">https://upwork.com/ab/messages/rooms/?code=b094053c2892cb819942e2d01e7237e7</a>.
              </body>
            </html>

Here, https://upwork.com/ab/messages/rooms/ is the Callback URL and b094053c2892cb819942e2d01e7237e7 is the authorization code.

Step 2. 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
required, string

Grant type. To get a token right after authorization, use authorization_code.
client_id
required, string

Your Client ID.
client_secret
required, string

Your Client Secret.
code
required, string

Authorization code received during the authorization request.
redirect_uri
required, string

Redirect URI, must be equal or similar to the callback specified in the key settings.


Returns

Returns the access token and its TTL. Example:
            // Sample request
            curl --request POST \
              --url https://api.upwork.com/graphql \
              --header 'Content-Type: application/x-www-form-urlencoded' \
              --header 'Accept: application/json' \
              --data 'client_id=API_KEY_HERE&client_secret=KEY_SECRET_HERE&code=AUTHORIZATION_CODE_FROM_FIRST_STEP&grant_type=authorization_code&redirect_uri=CALLBACK_URL'
            
            // Authorization Code Grant - sample response
            {"access_token":"oauth2v2_cec*************************60","refresh_token":"oauth2v2_40d*************************40","token_type":"Bearer","expires_in":86400}
                    

Implicit Grant

Implicit Grant is an OAuth 2.0 flow that enables you to obtain an access token without obtaining an authorization code.

When the system redirects you to the client through the redirect URL, the application appends the access token in the URI. Therefore, unlike the Authorization Code Grant, you do not need to leverage the temporary code to obtain an access token.

To obtain an access token through the Implicit Grant, you must fulfill the following prerequisites and complete the steps thereafter:
  1. Prerequisites
  2. Obtain an access token

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

Callback URL

The URI to which Upwork redirects the browser after authentication. This is also known as redirect URI.

Notes:

Step 1. Obtaining an access token

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 access token private. If someone obtains your token, they could use it to access private user data.

Endpoint

GET  https://www.upwork.com/ab/account-security/oauth2/authorize

Parameters

response_type
required, string

The corresponding grant type. Use token for Implicit Grant.
client_id
required, string

Your Client ID.
redirect_uri
required, string

Redirect URI, must be equal or similar to the callback specified in the key settings.


Returns

Returns the access token and its TTL. Example:
/#access_token=abcdefghijklmnopqrstuvwxyz&expires_in=86399 // Implicit Grant

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.

To obtain an access token through the Client Credentials Grant, you must fulfill the following prerequisites and complete the steps thereafter:
  1. Prerequisites
  2. Obtain an access token

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

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
required, string

Grant type. To get an access token for the client credentials grant, use client_credentials.
client_id
required, string

Your Client ID.
client_secret
required, string

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.

To obtain an access token through the Refresh Token Grant Type, you must fulfill the following prerequisites and complete the steps thereafter:
  1. Prerequisites
  2. Obtain an access token

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

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:

  • You must be an enterprise client user or freelancer to request these details.
  • You must select Key Type as OAuth 2.0
  • For more information, see requesting an API key.

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
required, string

Grant type. To refresh an existing token, having a valid refresh token, use refresh_token.
client_id
required, string

Your Client ID.
client_secret
required, string

Your Client Secret.
refresh_token
required, string

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

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:

  1. 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.
  2. Select the I want to create a Client Credential key for Service Account check box.
  3. Select the relevant scopes. For more information, see scopes.
  4. 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:

  1. Log in to your Service Account.
  2. 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

response_type
required, string

The corresponding Grant Type. Use `code` for Authorization Code Grant and `token` for Implicit Grant.
Valid values: code, token
client_id
required, string

Your Client ID.
redirect_url
required, string

The callback URL.


Returns

Returns a code for the Authorization Code Grant or an access token for the Implicit Grant. Example:
/#access_token=abcdefghijklmnopqrstuvwxyz&expires_in=86399 // Implicit Grant

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
required, string

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
client_id
required, string

Your Client ID.
client_secret
required, string

Your Client Secret.
code
conditionally required, string

Authorization code received during the authorization request. Required for `authorization_code` grant.
redirect_uri
conditionally required, string

Redirect URI, must be equal or similar to the callback specified in the key settings. Required for `authorization_code` grant.
refresh_token
conditionally required, string

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

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.

Please, take into account that subscriptions feature is available only to clients. Once a subscription is created, it needs to be reviewed and approved by Upwork Team. Untill then, the subscription will remain in REVIEW state.

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:

Subscription events when any action is initiated by a Client and performed on any marketplace job.

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

Subscription events when any action is performed on any offer. The operation can be initiated by Vendor Organization or Client Organization.

Entity Action Description
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

Subscription events when any action is performed on any Job Application, initiated by a Vendor.

Entity Action Description
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

Subscription events when any action is performed on any Job Application, initiated by a Client.

Entity Action Description
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

Subscription events when any milestone is refreshed.

Entity Action Description
Milestone (MILESTONE) REFRESH milestone refreshed

Subscription events when any action is performed on a Contract Feedback, initiated by any party.

Entity Action Description
Contract Feedback (CFB) SUBMIT contract feedback was submitted
UPDATE contract feedback was updated
DELETE contract feedback was deleted

Queries

Job Posts

jobPosting

Description

Get job posting by its ID

Required Permissions

"Job Postings - Read-Only Access"

Response

Returns a JobPosting!

Arguments
Name Description
jobPostingId - ID! Job posting identifier
loadAnnotation - Boolean Include annotations

Example

Query
query jobPosting(
  $jobPostingId: ID!,
  $loadAnnotation: Boolean
) {
  jobPosting(
    jobPostingId: $jobPostingId,
    loadAnnotation: $loadAnnotation
  ) {
    id
    version
    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,
      "version": 123,
      "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

Required Permissions

"Read marketplace Job Postings"

Response

Returns [JobFeaturePrediction!]!

Arguments
Name Description
ids - [ID!]! Job posting identifiers

Example

Query
query jobsFeaturePredictions($ids: [ID!]!) {
  jobsFeaturePredictions(ids: $ids) {
    id
    openingMultiFreelancerPrediction
    opening
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "jobsFeaturePredictions": [
      {
        "id": 4,
        "openingMultiFreelancerPrediction": true,
        "opening": "abc123"
      }
    ]
  }
}

marketplaceJobPosting

Description

Get marketplace job posting by its ID

Required Permissions

"Read marketplace Job Postings"

Response

Returns a MarketplaceJobPosting

Arguments
Name Description
id - ID! Job posting identifier

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": true,
      "clientProposals": ClientProposalsConnection,
      "customFields": CustomFieldsConnection
    }
  }
}

marketplaceJobPostings

Will be removed in future release. Please Use marketplaceJobPostingsSearch instead
Required Permissions

"Read marketplace Job Postings"

Arguments
Name Description
marketPlaceJobFilter - MarketplaceJobFilter Filter to search job postings
searchType - MarketplaceJobPostingSearchType Search type context
sortAttributes - [MarketplaceJobPostingSearchSortAttribute] Sort attributes

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

Description

Get marketplace job postings content by ID

Required Permissions

"Read marketplace Job Postings"

Arguments
Name Description
ids - [ID!]! Job posting identifiers

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": "abc123",
        "title": "xyz789",
        "description": "abc123",
        "publishedDateTime": "xyz789",
        "annotations": MarketplacePostingAnnotations
      }
    ]
  }
}
Metadata

countries

Description

List of countries. Currently no filtering is available

Required Permissions

"Common Functionality - Read And Write Access"

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": "xyz789",
        "twoLetterAbbreviation": "xyz789",
        "threeLetterAbbreviation": "abc123",
        "region": "EU",
        "phoneCode": "abc123",
        "relatedRegion": Region,
        "relatedSubRegion": Region,
        "active": false,
        "registrationAllowed": true
      }
    ]
  }
}

languages

Description

Get the list of languages

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Common Functionality - Read And Write Access"

Response

Returns [Language!]!

Example

Query
query languages {
  languages {
    iso639Code
    active
    englishName
  }
}
Response
{
  "data": {
    "languages": [
      {
        "iso639Code": "xyz789",
        "active": true,
        "englishName": "abc123"
      }
    ]
  }
}

reasons

Description

Reasons for some actions. Examples - declining invitation, ending contract, withdrawing offer

Required Permissions

"Common Functionality - Read And Write Access"

Response

Returns [ReasonsMetadata!]!

Arguments
Name Description
reasonType - ReasonType! Reason category type
all - Boolean Return all reasons (ignore visibility filters)

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": "xyz789",
        "alias": "abc123"
      }
    ]
  }
}

regions

Description

Get the list of regions

Required Permissions

"Common Functionality - Read And Write Access"

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 specific mode, etc

Required Permissions

"Common Functionality - Read And Write Access"

Response

Returns a RequestMetadata!

Example

Query
query requestMetadata {
  requestMetadata {
    sudo
    internal
  }
}
Response
{"data": {"requestMetadata": {"sudo": true, "internal": true}}}

timeZones

Description

List of all availabe time zones

Required Permissions

"Common Functionality - Read And Write Access"

Response

Returns [TimeZoneRecord!]!

Example

Query
query timeZones {
  timeZones {
    timeZoneName
    timeZoneDescription
  }
}
Response
{
  "data": {
    "timeZones": [
      {
        "timeZoneName": "xyz789",
        "timeZoneDescription": "abc123"
      }
    ]
  }
}

visitor

Description

Visitor details

Required Permissions

"Common Functionality - Read And Write Access"

Response

Returns a Visitor

Example

Query
query visitor {
  visitor {
    i18n {
      ...VisitorI18NFragment
    }
    segment {
      ...VisitorSegmentFragment
    }
  }
}
Response
{
  "data": {
    "visitor": {
      "i18n": VisitorI18N,
      "segment": VisitorSegment
    }
  }
}
Offers and Contracts

contract

Will be removed in future release. Use contractByTerm with modernised ContractDetails schema
Description

Fetch contract information by ID. Note: The provided 'id' corresponds to the id of the contract term in the ContractDetails schema.

Required Permissions

"Offer - Read-Only Access"

Response

Returns a Contract

Arguments
Name Description
id - ID!

Example

Query
query contract($id: ID!) {
  contract(id: $id) {
    id
    title
    contractType
    job {
      ...MarketplaceJobPostingFragment
    }
    hasAgency
    offer {
      ...OfferFragment
    }
    clientProposal {
      ...ClientProposalFragment
    }
    vendorProposal {
      ...VendorProposalFragment
    }
    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,
      "vendorProposal": VendorProposal,
      "weeklyChargeAmount": Money,
      "weeklyHoursLimit": 123.45,
      "hourlyChargeRate": Money,
      "createdDateTime": "abc123",
      "firstContractStartDateTime": "abc123",
      "modifiedDateTime": "abc123",
      "startDateTime": "abc123",
      "endDateTime": "xyz789",
      "manualTimeAllowed": false,
      "hideScreenshots": false,
      "last": true,
      "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

Required Permissions

"Offer - Read-Only Access"

Response

Returns a ContractDetails!

Arguments
Name Description
termId - ID! contract term id, legacy contract assignment rid
date - String date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd

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
    }
    projectId
  }
}
Variables
{
  "termId": "4",
  "date": "xyz789"
}
Response
{
  "data": {
    "contractByTerm": {
      "id": "4",
      "title": "abc123",
      "status": "ACTIVE",
      "closingReason": ClosingReason,
      "deliveryModel": "TALENT_MARKETPLACE",
      "kind": "WEEKLY_RETAINER",
      "isPtc": false,
      "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,
      "projectId": 4
    }
  }
}

contractDetails

Description

Get contract data by contract id.

Required Permissions

"Offer - Read-Only Access"

Response

Returns a ContractDetails!

Arguments
Name Description
id - ID! contract id, legacy virtual rollup id
date - String returns only active terms on the given date. date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd

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
    }
    projectId
  }
}
Variables
{"id": 4, "date": "abc123"}
Response
{
  "data": {
    "contractDetails": {
      "id": 4,
      "title": "xyz789",
      "status": "ACTIVE",
      "closingReason": ClosingReason,
      "deliveryModel": "TALENT_MARKETPLACE",
      "kind": "WEEKLY_RETAINER",
      "isPtc": false,
      "createDate": "abc123",
      "modifyDate": "abc123",
      "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,
      "projectId": 4
    }
  }
}

contractList

Description

Get contract details list by contract ids

Required Permissions

"Offer - Read-Only Access"

Response

Returns a ContractList

Arguments
Name Description
ids - [ID!] list of contract ids. max size is 10

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.

Required Permissions

"Contract - Read and Write Access"

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": "abc123",
      "createdDateTime": "abc123",
      "canClientOfferBeAccepted": false
    }
  }
}

contractTerm

Description

Get contract and single term data

Required Permissions

"Offer - Read-Only Access"

Response

Returns a ContractDetails!

Arguments
Name Description
termId - ID! contract term id, legacy contract assignment rid

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
    }
    projectId
  }
}
Variables
{"termId": 4}
Response
{
  "data": {
    "contractTerm": {
      "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,
      "projectId": 4
    }
  }
}

customFields

Description

Custom fields information

Required Permissions

"Common Entities - Read-Only Access"

Response

Returns [CustomFields!]

Arguments
Name Description
input - CustomFieldsInput! Filters for custom fields retrieval
offset - Int Pagination offset
limit - Int Pagination limit

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": 123}
Response
{
  "data": {
    "customFields": [
      {
        "responseId": "4",
        "id": 4,
        "itemId": 4,
        "typeSnap": "TEXT_FIELD",
        "labelSnap": "xyz789",
        "displayValueSnap": "abc123",
        "creator": GenericUser,
        "createdDateTime": DateTime,
        "rollupAssignmentId": 4,
        "firstContractId": 4,
        "offerId": "4",
        "jobPostingId": "4",
        "byoInvitationId": 4,
        "buyItNowId": 4,
        "questionnaireResponsesId": "4",
        "stale": true,
        "termSectionId": 4,
        "aclSnap": "xyz789"
      }
    ]
  }
}

offer

Description

Returns offer for the given id

Required Permissions

"Offer - Read-Only Access"

Response

Returns an Offer

Arguments
Name Description
id - 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": "abc123",
      "description": "abc123",
      "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": true,
      "freelancer": FreelancerProfile,
      "payrollOffer": true,
      "deliveryModel": "TalentMarketplace",
      "customFields": CustomFieldsConnection
    }
  }
}

offersByAttribute

Description

Get offers by search attribute and id.

Required Permissions

"Offer - Read-Only Access"

Response

Returns an OfferList

Arguments
Name Description
filter - SearchOffersInput! contains data for searching

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.

Required Permissions

One of: "Offer - Read-Only Access" OR "Offer - Read And Write Access"

Response

Returns a ModernizedContractOfferList

Arguments
Name Description
filter - SearchOffersByAttributesInput! Search criteria by attribute IDs

Example

Query
query offersByAttributes($filter: SearchOffersByAttributesInput!) {
  offersByAttributes(filter: $filter) {
    offers {
      ...ModernizedContractOfferFragment
    }
  }
}
Variables
{"filter": SearchOffersByAttributesInput}
Response
{
  "data": {
    "offersByAttributes": {
      "offers": [ModernizedContractOffer]
    }
  }
}
Offers and Contracts (Client)

vendorContracts

Description

Get list of contracts associated with a specific vendor

Required Permissions

"Offer - Read-Only Access"

Response

Returns a ContractSearchResults

Arguments
Name Description
filter - VendorContractSearchFilter! vendor contract search filter
options - ContractOptionsInput contract options
paging - ContractPagingInput paging input

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]
    }
  }
}
Ontology

ontologyCategories

Description

Fetch all enabled categories/subcategories/services

Required Permissions

One of: "Common Functionality - Read And Write Access" OR "Ontology - Read-Only Access"

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": ["xyz789"],
        "slug": "abc123",
        "ontologyId": "abc123",
        "subcategories": [OntologySubcategory],
        "services": [OntologyService]
      }
    ]
  }
}

ontologyElementsSearchByPrefLabel

Description

Allows search of elements by prefLabel and return the elements that have provided string in prefLabel, at start, end or in the middle; case insensitive

Required Permissions

"Common Entities - Read-Only Access"

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": "xyz789",
        "createdDateTime": "xyz789",
        "modifiedDateTime": "abc123"
      }
    ]
  }
}

ontologyEntities

Description

Lookup entities by IDs

Required Permissions

One of: "Common Functionality - Read And Write Access" OR "Ontology - Read-Only Access"

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}

Required Permissions

One of: "Common Functionality - Read And Write Access" OR "Ontology - Read-Only Access"

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

Required Permissions

"Ontology - Read-Only Access"

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

Required Permissions

"Ontology - Read-Only Access"

Arguments
Name Description
filter - OntologyEntitySearchFilter!

Example

Query
query ontologyEntitySearchRecords($filter: OntologyEntitySearchFilter!) {
  ontologyEntitySearchRecords(filter: $filter) {
    ontologyEntity {
      ...OntologyEntityFragment
    }
  }
}
Variables
{"filter": OntologyEntitySearchFilter}
Response
{
  "data": {
    "ontologyEntitySearchRecords": [
      {"ontologyEntity": OntologyEntity}
    ]
  }
}

ontologyOccupationsCategoriesServices

Description

Searches occupations categories services by list of category Uids and return the 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]
    }
  }
}

ontologySkills

Description

Get the list of skills paginated with limit and offset

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Common Functionality - Read And Write Access"

Response

Returns [Skill!]!

Arguments
Name Description
limit - Int!
offset - Int

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": 123, "offset": 987}
Response
{
  "data": {
    "ontologySkills": [
      {
        "id": "4",
        "ontologyId": "xyz789",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "xyz789",
        "createdDateTime": "abc123",
        "modifiedDateTime": "xyz789",
        "definition": "abc123",
        "altLabel": ["abc123"],
        "narrower": ["xyz789"],
        "narrowerIds": ["4"],
        "broader": ["abc123"],
        "broaderIds": [4],
        "dependsOn": ["abc123"],
        "dependsOnIds": [4],
        "splitInto": ["abc123"],
        "splitIntoIds": ["4"],
        "mergedInto": "abc123",
        "mergedIntoId": "4",
        "replacedBy": "xyz789",
        "replacedById": "4",
        "scopeNote": "abc123",
        "externalLink": ["xyz789"],
        "exactMatch": ["abc123"],
        "exactMatchIds": [4],
        "closeMatch": ["xyz789"],
        "closeMatchIds": [4],
        "comment": "xyz789",
        "attributeLevel": ["xyz789"],
        "allowMultipleClient": true,
        "allowMultipleFreelancer": true,
        "allowOther": true,
        "clientQuestion": "abc123",
        "clientTip": "xyz789",
        "freelancerQuestion": "abc123",
        "freelancerTip": "xyz789",
        "advancedClient": true,
        "client": true,
        "freelancer": false,
        "requiredClient": true,
        "requiredFreelancer": false,
        "otherClientLabel": "xyz789",
        "otherFreelancerLabel": "xyz789",
        "presentationMode": "abc123",
        "priority": 123,
        "isRequiredBy": ["abc123"],
        "isRequiredByIds": ["4"],
        "legacySkillNid": "abc123",
        "prettyName": "abc123",
        "legacySkillId": 4
      }
    ]
  }
}
Proposals

proposalMetadata

Description

Metadata for proposals

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Common Functionality - Read And Write Access"

Response

Returns a ProposalMetadata

Example

Query
query proposalMetadata {
  proposalMetadata {
    engagementDurationValues {
      ...ProposalEngagementDurationFragment
    }
    reasons {
      ...ReasonsMetadataFragment
    }
  }
}
Response
{
  "data": {
    "proposalMetadata": {
      "engagementDurationValues": [
        ProposalEngagementDuration
      ],
      "reasons": [ReasonsMetadata]
    }
  }
}

vendorProposal

Description

Vendor proposal by ID

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns a VendorProposal

Arguments
Name Description
id - ID! id of the vendor proposal

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": "abc123",
      "projectPlan": ProposalProjectPlan,
      "auditDetails": ProposalAuditDetails,
      "status": VendorProposalStatus,
      "annotations": ["Hidden"]
    }
  }
}

vendorProposals

Description

List of vendor proposals based on filters like job posting ids, vendor id, etc. "after" field in pagination only supports null or cursor based pagination returned in VendorProposalsConnection.pageInfo.endCursor.

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns a VendorProposalsConnection!

Arguments
Name Description
filter - VendorProposalFilter! Filter for vendor proposals
sortAttribute - VendorProposalSortAttribute! Sort attribute
pagination - Pagination! Pagination options

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": 987,
      "edges": [VendorProposalsEdge],
      "pageInfo": PageInfo
    }
  }
}
Proposals (Client)

clientProposal

Description

Client proposal by ID

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns a ClientProposal

Arguments
Name Description
id - ID! id of the client proposal

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": "abc123",
      "projectPlan": ProposalProjectPlan,
      "auditDetails": ProposalAuditDetails,
      "status": ClientProposalStatus,
      "annotations": ["Recommended"]
    }
  }
}

clientProposals

Description

Search client proposal

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns a ClientProposalsConnection

Arguments
Name Description
jobPostingId - ID! Job posting identifier
filter - ClientProposalFilter Filter for client proposals
sortAttribute - ClientProposalSortAttribute Sort attribute
pagination - Pagination Pagination options

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": 987,
      "edges": [ClientProposalsEdge],
      "pageInfo": PageInfo
    }
  }
}
Reporting

contractTimeReport

Required Permissions

"TimeSheet - Read-Only Access"

Response

Returns a TimeReportConnection!

Arguments
Name Description
filter - TimeReportFilter Filter by organization, time range and optional contracts
pagination - Pagination Pagination options

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

timeReport

use contractTimeReport instead
Description

Get the time report details for the given time range and a given organization

Required Permissions

"TimeSheet - Read-Only Access"

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": "xyz789",
        "monthWorkedOn": "abc123",
        "yearWorkedOn": "abc123",
        "freelancer": GenericUser,
        "team": GenericOrganization,
        "contractOffer": ContractOfferResult,
        "contract": ContractDetails,
        "termId": "4",
        "task": "xyz789",
        "taskDescription": "xyz789",
        "memo": "abc123",
        "totalHoursWorked": 123.45,
        "totalCharges": 987.65,
        "totalOnlineHoursWorked": 987.65,
        "totalOnlineCharge": 987.65,
        "totalOfflineHoursWorked": 987.65,
        "totalOfflineCharge": 123.45,
        "billRate": BillRate
      }
    ]
  }
}

transactionHistory

Description

Returns some total data about the entire set of transactions. Result also includes groups of pending transactions, if available.

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Read only access for transaction data"

Response

Returns a TransactionHistory

Arguments
Name Description
transactionHistoryFilter - TransactionHistoryFilter Transactions history filter

Example

Query
query transactionHistory($transactionHistoryFilter: TransactionHistoryFilter) {
  transactionHistory(transactionHistoryFilter: $transactionHistoryFilter) {
    transactionDetail {
      ...TransactionHistoryDetailFragment
    }
  }
}
Variables
{"transactionHistoryFilter": TransactionHistoryFilter}
Response
{
  "data": {
    "transactionHistory": {
      "transactionDetail": TransactionHistoryDetail
    }
  }
}

freelancerProfileSearchRecords

Description

Search freelancer profiles based on various filters

Required Permissions

"Freelancer Profile - Read And Write Access"

Arguments
Name Description
searchFilter - FreelancerProfileSearchFilter! Search filters for freelancer profiles
pagination - Pagination! Pagination options

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

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.

Required Permissions

"Read marketplace Job Postings"

Arguments
Name Description
marketPlaceJobFilter - MarketplaceJobPostingsSearchFilter Filters to be applied to the search
searchType - MarketplaceJobPostingSearchType The appropriate search type
sortAttributes - [MarketplaceJobPostingSearchSortAttribute] Sorting options for the search results

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
    }
  }
}
Talent Clouds

talentCloudTasks

Description

List of task overviews for specified talent clouds

Required Permissions

"Job Postings - Read-Only Access"

Response

Returns [TalentCloudTask]

Arguments
Name Description
filter - TalentCloudTasksInputFilter! Filter for talent cloud tasks

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

Required Permissions

"Talent Profile - Read And Write Access public"

Response

Returns a TalentProfile

Arguments
Name Description
profileKey - String! Public profile key 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": "abc123"}
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

Get Talent Work history

Required Permissions

"Talent Workhistory - Read Only Access"

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
    }
  }
}
Users and teams

company

Description

Get company info

Required Permissions

"Common Entities - Read-Only Access"

Response

Returns a CompanyInfo

Arguments
Name Description
id - ID! Company identifier

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

Required Permissions

"Common Entities - Read-Only Access"

Response

Returns a CompanySelector!

Example

Query
query companySelector {
  companySelector {
    items {
      ...CompanySelectorItemFragment
    }
  }
}
Response
{
  "data": {
    "companySelector": {"items": [CompanySelectorItem]}
  }
}

contractRoom

Description

Returns the interview room associated with the given contractId

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a Room

Arguments
Name Description
contractId - ID! Contract identifier

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": "xyz789",
      "public": true,
      "topic": "xyz789",
      "owner": RoomUser,
      "numUnread": 987,
      "roomFavoriteDateTime": "abc123",
      "favorite": true,
      "numUnreadMentions": 987,
      "roomUsers": [RoomUser],
      "numUsers": 987,
      "joinDateTime": "abc123",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "abc123",
      "readOnly": false,
      "blockDateTime": "abc123",
      "blockedBy": RoomUser,
      "hidden": true,
      "muted": false,
      "contractId": "4",
      "contract": Contract,
      "contractDetails": ContractDetails,
      "vendorProposal": VendorProposal,
      "roomNote": "abc123",
      "roomNotePresent": true,
      "offerIds": ["4"],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

freelancerProfileByProfileKey

Description

Retrieve freelancer profile by the freelancer profile key(ciphertext)

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a FreelancerProfile!

Arguments
Name Description
profileKey - String! Public profile key

Example

Query
query freelancerProfileByProfileKey($profileKey: String!) {
  freelancerProfileByProfileKey(profileKey: $profileKey) {
    user {
      ...CurrentUserFragment
    }
    userDetails {
      ...GenericUserFragment
    }
    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": "abc123"}
Response
{
  "data": {
    "freelancerProfileByProfileKey": {
      "user": CurrentUser,
      "userDetails": GenericUser,
      "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": "xyz789",
      "countryDetails": Country,
      "email": "xyz789",
      "portrait": Portrait,
      "phoneNumber": PhoneNumber,
      "privateTalentCloud": PrivateTalentCloudConnection
    }
  }
}

freelancerVisibility

Description

Get the visibility status of a given freelancer profile

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a FreelancerVisibility

Arguments
Name Description
id - ID Freelancer user identifier

Example

Query
query freelancerVisibility($id: ID) {
  freelancerVisibility(id: $id) {
    locked
    risky
    currentVisibility
    originalVisibility
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "freelancerVisibility": {
      "locked": false,
      "risky": true,
      "currentVisibility": "xyz789",
      "originalVisibility": "abc123"
    }
  }
}

offerRoom

Description

Returns room associated with the given offerId

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a Room

Arguments
Name Description
offerId - ID! Offer identifier

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": "xyz789",
      "public": true,
      "topic": "abc123",
      "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": "xyz789",
      "readOnly": false,
      "blockDateTime": "abc123",
      "blockedBy": RoomUser,
      "hidden": true,
      "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
    }
  }
}

oneOnOneRoom

Description

Returns 1on1 room between the current user and passed user and organization id

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a Room

Arguments
Name Description
userId - ID!
organizationId - 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": "xyz789",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "abc123",
      "favorite": false,
      "numUnreadMentions": 987,
      "roomUsers": [RoomUser],
      "numUsers": 123,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "abc123",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "abc123",
      "readOnly": true,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": false,
      "muted": false,
      "contractId": "4",
      "contract": Contract,
      "contractDetails": ContractDetails,
      "vendorProposal": VendorProposal,
      "roomNote": "abc123",
      "roomNotePresent": false,
      "offerIds": ["4"],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

organization

Description

Current organization

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Common Functionality - Read And Write Access"

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
    }
    userPermissions {
      ...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": "abc123",
      "type": "BUSINESS",
      "legacyType": "CLIENT",
      "flag": OrganizationFlag,
      "parentOrganization": CurrentOrganization,
      "active": true,
      "hidden": true,
      "childOrganizations": [CurrentOrganization],
      "childOrganization": CurrentOrganization,
      "company": PrivateCompanyInfo,
      "photoUrl": "xyz789",
      "creationDate": "xyz789",
      "staffs": StaffsConnection,
      "userPermissions": UserPermissions,
      "agencyOffers": ContractOfferConnection,
      "clientOffers": ContractOfferConnection,
      "clientTimeReport": [TimeReport],
      "clientContractTimeReport": TimeReportConnection,
      "agencyTimeReport": [TimeReport],
      "agencyContractTimeReport": TimeReportConnection,
      "privateTalentClouds": [PrivateTalentCloud],
      "jobPosting": JobPostingConnection
    }
  }
}

proposalRoom

Description

Returns room associated with a vendor proposal

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a Room!

Arguments
Name Description
vendorProposalId - ID! Vendor proposal identifier

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": "abc123",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 987,
      "roomFavoriteDateTime": "xyz789",
      "favorite": false,
      "numUnreadMentions": 123,
      "roomUsers": [RoomUser],
      "numUsers": 123,
      "joinDateTime": "abc123",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": true,
      "blockDateTime": "xyz789",
      "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
    }
  }
}

publicRooms

Description

Get public rooms inside an organization

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a RoomConnection!

Arguments
Name Description
pagination - Pagination Pagination options

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

room

Description

Details of a room

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a Room!

Arguments
Name Description
id - ID! Room identifier

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": "xyz789",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 987,
      "roomFavoriteDateTime": "abc123",
      "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": false,
      "contractId": "4",
      "contract": Contract,
      "contractDetails": ContractDetails,
      "vendorProposal": VendorProposal,
      "roomNote": "abc123",
      "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

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a RoomConnection!

Arguments
Name Description
filter - RoomFilter Filter criteria
pagination - Pagination Pagination options
sortOrder - SortOrder Sorting order

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

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a RoomStoryConnection

Arguments
Name Description
filter - RoomStoryFilter Filter for room stories

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

Required Permissions

One of: "Messaging - Read-Only Access" OR "Messaging - Read and Write Access"

Response

Returns a RoomStory

Arguments
Name Description
roomId - ID! Room identifier
storyId - ID! Story identifier

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": "xyz789",
      "user": GenericUser,
      "message": "abc123",
      "organization": GenericOrganization,
      "roomStoryNote": RoomStoryNote,
      "attachments": [MessageAttachments]
    }
  }
}

snapshotsByContractId

Description

List all Snapshots for given contract ID and particular timestamp. timestamp are in (Unix Epoch seconds)

Required Permissions

"Scope to read snapshots information - Public"

Response

Returns [Snapshot]

Arguments
Name Description
input - SnapshotsByContractIdInput! Contract and timestamp parameters

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": 123,
        "contractId": "abc123",
        "mouseEventsCount": 123,
        "keyboardEventsCount": 987,
        "teamName": "xyz789",
        "status": "abc123",
        "activeWindowTitle": "xyz789",
        "memo": "xyz789",
        "companyId": "abc123",
        "hasScreenshot": false,
        "screenshotUrl": "abc123",
        "screenshotImage": "xyz789",
        "screenshotImageLarge": "abc123",
        "screenshotImageMedium": "xyz789",
        "screenshotImageThumbnail": "xyz789",
        "hasWebcam": true,
        "webcamUrl": "abc123",
        "webcamImage": "abc123",
        "webcamImageThumbnail": "abc123",
        "task": "abc123",
        "minutes": SnapshotMinutes
      }
    ]
  }
}

user

Description

Current user

Required Permissions

One of: "Common Entities - Read-Only Access" OR "Common Functionality - Read And Write Access"

Response

Returns a CurrentUser

Example

Query
query user {
  user {
    id
    nid
    rid
    email
    name
    userPermissions {
      ...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": "xyz789",
      "userPermissions": UserPermissions,
      "photoUrl": "xyz789",
      "offer": ContractOfferConnection,
      "timeReport": [TimeReport],
      "contractTimeReport": TimeReportConnection,
      "freelancerProfile": FreelancerProfile,
      "ciphertext": "xyz789",
      "i18NSettings": I18nSettings,
      "talentProfile": TalentProfile
    }
  }
}

workDays

Description

list of working days for a contractId and a given time range

Required Permissions

"TimeSheet - Read-Only Access"

Response

Returns a WorkdayResult

Arguments
Name Description
workdaysInput - WorkdaysInput! Contract list and date range

Example

Query
query workDays($workdaysInput: WorkdaysInput!) {
  workDays(workdaysInput: $workdaysInput) {
    workDays
  }
}
Variables
{"workdaysInput": WorkdaysInput}
Response
{
  "data": {
    "workDays": {"workDays": ["xyz789"]}
  }
}

workDiaryContract

Description

WorkDiary information with screenshot urls for a particular contract and a particular date

Required Permissions

One of: "Contract - Read and Write Access" OR "Offer - Read-Only Access"

Response

Returns a WorkDiaryContract

Arguments
Name Description
workDiaryContractInput - WorkDiaryContractInput! Contract and date parameters

Example

Query
query workDiaryContract($workDiaryContractInput: WorkDiaryContractInput!) {
  workDiaryContract(workDiaryContractInput: $workDiaryContractInput) {
    workDiaryMetadata {
      ...WorkDiaryMetadataFragment
    }
    workDiaryTimeCells {
      ...WorkDiaryTimeCellFragment
    }
  }
}
Variables
{"workDiaryContractInput": WorkDiaryContractInput}
Response
{
  "data": {
    "workDiaryContract": {
      "workDiaryMetadata": WorkDiaryMetadata,
      "workDiaryTimeCells": [WorkDiaryTimeCell]
    }
  }
}
Users and teams (Client)

accountAuditRecord

Description

Audit information of the account management action

Required Permissions

"Organization - Read and Write access"

Response

Returns an AccountAuditRecord

Arguments
Name Description
processInstanceId - ID! Account management process identifier

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]
    }
  }
}

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

Required Permissions

"Common Entities - Read-Only Access"

Response

Returns a StaffsConnection!

Arguments
Name Description
personId - ID! Target person identifier
status - Int Filter by staff status
staffType - String Filter by staff type
affiliateContractor - Boolean Affiliate contractor flag
hierarchy - Boolean Include organization hierarchy
orgLegacyType - OrgLegacyType Legacy organization type
orgType - OrgType Organization type
hiddenOrg - Boolean Hidden organization flag
activeOrg - Boolean Active organization flag
eac - Boolean Enterprise account company flag
pagination - Pagination Pagination options

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": "abc123",
  "affiliateContractor": true,
  "hierarchy": false,
  "orgLegacyType": "Client",
  "orgType": "Business",
  "hiddenOrg": false,
  "activeOrg": true,
  "eac": true,
  "pagination": Pagination
}
Response
{
  "data": {
    "staffsByPersonId": {
      "edges": [StaffsConnectionEdge],
      "totalCount": 123,
      "pageInfo": PageInfo
    }
  }
}

teamActivities

Description

Get a flat list (with no company/user description) of all activities under the specified team. A user needs to have hiring manager privileges within the team in order to create an activity at team level

Required Permissions

One of: "Activity Entities - Read-Only Access" OR "Activity Entities - Read and Write Access"

Response

Returns an ActivitiesConnection!

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activities are being requested
page - PageFilterInput Pagination information
filter - ActivityFilterInput Filters to apply to the activity list

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": 987,
      "edges": [ActivityEdge],
      "page": Page
    }
  }
}

userDetails

Description

Retrieves the user details based on their unique identifier. This query allows fetching detailed user information based on their ID. Ultimately, it returns the personal identifiable information (PII) of the user.

Required Permissions

"View UserDetails"

Response

Returns a PiiUser!

Arguments
Name Description
id - ID! The unique identifier of the user.

Example

Query
query userDetails($id: ID!) {
  userDetails(id: $id) {
    id
    nid
    rid
    name
    firstName
    lastName
    photoUrl
    publicUrl
    email
    location {
      ...UserLocationFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "userDetails": {
      "id": "4",
      "nid": "4",
      "rid": "4",
      "name": "xyz789",
      "firstName": "xyz789",
      "lastName": "xyz789",
      "photoUrl": "xyz789",
      "publicUrl": "xyz789",
      "email": "xyz789",
      "location": UserLocation
    }
  }
}

userIdsByEmail

Description

List of users by email

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a UserIdsByEmailResponse

Arguments
Name Description
email - String!

Example

Query
query userIdsByEmail($email: String!) {
  userIdsByEmail(email: $email) {
    totalCount
    edges {
      ...UserIdsByEmailRecordEdgeFragment
    }
  }
}
Variables
{"email": "abc123"}
Response
{
  "data": {
    "userIdsByEmail": {
      "totalCount": 123,
      "edges": [UserIdsByEmailRecordEdge]
    }
  }
}

workDiaryCompany

Description

WorkDiary information with screenshot urls for a particular company and a particular date

Required Permissions

"Read Work diary company for public user"

Response

Returns a WorkDiaryCompany

Arguments
Name Description
workDiaryCompanyInput - WorkDiaryCompanyInput! Company and date parameters

Example

Query
query workDiaryCompany($workDiaryCompanyInput: WorkDiaryCompanyInput!) {
  workDiaryCompany(workDiaryCompanyInput: $workDiaryCompanyInput) {
    total
    snapshots {
      ...WorkDiaryCompanySnapshotFragment
    }
  }
}
Variables
{"workDiaryCompanyInput": WorkDiaryCompanyInput}
Response
{
  "data": {
    "workDiaryCompany": {
      "total": 123,
      "snapshots": [WorkDiaryCompanySnapshot]
    }
  }
}
Workflow

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.

Required Permissions

"Job Postings - Read and Write Access"

Response

Returns a WorkflowView

Arguments
Name Description
entityType - String! Type of business entity (e.g., Offer)
entityId - ID! Entity identifier

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": "xyz789", "entityId": 4}
Response
{
  "data": {
    "workflowView": {
      "id": 4,
      "type": "abc123",
      "onboardedStatus": "NOT_STARTED",
      "totalTasks": 987,
      "notStartedTasksCount": 123,
      "inProgressTasksCount": 123,
      "completedTasksCount": 987,
      "tasksOverdue": 987,
      "percentComplete": 123,
      "startDateTime": "abc123",
      "completionDateTime": "abc123",
      "associations": [WorkflowAssociationView],
      "tasks": [WorkflowTaskView],
      "createdDateTime": "abc123",
      "modifiedDateTime": "xyz789",
      "createdBy": "abc123",
      "modifiedBy": "xyz789"
    }
  }
}
Other

accountingEntity

Description

Get the Accounting Entity of the current user from their organization uid

Required Permissions

"Read only access for transaction data"

Response

Returns an AccountingEntity!

Example

Query
query accountingEntity {
  accountingEntity {
    id
  }
}
Response
{"data": {"accountingEntity": {"id": "4"}}}

Mutations

Job Posts

createJobPosting

Description

Create a new Job post

Required Permissions

"Job Postings - Read and Write Access"

Response

Returns a JobPostingCreateResponse

Arguments
Name Description
jobPostingRequest - JobPostingCreateRequest! Job posting creation request

Example

Query
mutation createJobPosting($jobPostingRequest: JobPostingCreateRequest!) {
  createJobPosting(jobPostingRequest: $jobPostingRequest) {
    id
    qualificationsSaved
    skillsSaved
    questionsSaved
    segmentationDataSaved
    attachmentsSaved
    ptcInfoSaved
    jobPostingAdditional
    sandsJobPostSaved
    customFieldsSaved
    version
  }
}
Variables
{"jobPostingRequest": JobPostingCreateRequest}
Response
{
  "data": {
    "createJobPosting": {
      "id": 4,
      "qualificationsSaved": true,
      "skillsSaved": true,
      "questionsSaved": true,
      "segmentationDataSaved": true,
      "attachmentsSaved": false,
      "ptcInfoSaved": false,
      "jobPostingAdditional": true,
      "sandsJobPostSaved": false,
      "customFieldsSaved": false,
      "version": 987
    }
  }
}

updateJobPosting

Description

Update an existing Job post by its ID

Required Permissions

"Job Postings - Read and Write Access"

Response

Returns a JobPostingUpdateResponse

Arguments
Name Description
id - ID! Job posting identifier
jobPostingRequest - JobPostingUpdateRequest! Job posting update request

Example

Query
mutation updateJobPosting(
  $id: ID!,
  $jobPostingRequest: JobPostingUpdateRequest!
) {
  updateJobPosting(
    id: $id,
    jobPostingRequest: $jobPostingRequest
  ) {
    id
    qualificationsSaved
    skillsSaved
    questionsSaved
    segmentationDataSaved
    attachmentsSaved
    ptcInfoSaved
    sandsJobPostSaved
    version
  }
}
Variables
{"id": 4, "jobPostingRequest": JobPostingUpdateRequest}
Response
{
  "data": {
    "updateJobPosting": {
      "id": "4",
      "qualificationsSaved": false,
      "skillsSaved": true,
      "questionsSaved": false,
      "segmentationDataSaved": false,
      "attachmentsSaved": false,
      "ptcInfoSaved": true,
      "sandsJobPostSaved": false,
      "version": 123
    }
  }
}
Offers and Contracts

endContractByFreelancer

Description

End a contract by a freelancer

Required Permissions

"Contract - Read and Write Access"

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID! Contract identifier
input - EndContractInput! Contract end payload

Example

Query
mutation endContractByFreelancer(
  $contractId: ID!,
  $input: EndContractInput!
) {
  endContractByFreelancer(
    contractId: $contractId,
    input: $input
  ) {
    success
  }
}
Variables
{"contractId": 4, "input": EndContractInput}
Response
{"data": {"endContractByFreelancer": {"success": true}}}

withdrawOffer

Description

Withdraw an offer.

Required Permissions

"Offer - Read And Write Access"

Response

Returns a Boolean!

Arguments
Name Description
input - WithdrawOfferInput! Withdraw request payload

Example

Query
mutation withdrawOffer($input: WithdrawOfferInput!) {
  withdrawOffer(input: $input)
}
Variables
{"input": WithdrawOfferInput}
Response
{"data": {"withdrawOffer": false}}
Offers and Contracts (Client)

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

Required Permissions

"Offer - Read And Write Access"

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": "xyz789",
      "createdDateTime": "xyz789",
      "modifiedDateTime": "abc123",
      "instructions": "xyz789",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

approveMilestone

Description

Approves a milestone

Required Permissions

"Offer - Read And Write Access"

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": "abc123",
      "state": "NotFunded",
      "description": "abc123",
      "currentEscrowAmount": Money,
      "depositAmount": Money,
      "fundedAmount": Money,
      "paid": Money,
      "overpayment": Money,
      "bonus": Money,
      "previousMilestoneUnusedDeposit": Money,
      "submissionCount": 123,
      "sequenceId": 987,
      "payComments": "abc123",
      "lastSubmissionCreatedTime": "abc123",
      "createdDateTime": "xyz789",
      "modifiedDateTime": "xyz789",
      "instructions": "abc123",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

createMilestoneV2

Description

Client creates a new milestone (V2)

Required Permissions

"Offer - Read And Write Access"

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": "xyz789",
      "state": "NotFunded",
      "description": "xyz789",
      "currentEscrowAmount": Money,
      "depositAmount": Money,
      "fundedAmount": Money,
      "paid": Money,
      "overpayment": Money,
      "bonus": Money,
      "previousMilestoneUnusedDeposit": Money,
      "submissionCount": 123,
      "sequenceId": 987,
      "payComments": "abc123",
      "lastSubmissionCreatedTime": "xyz789",
      "createdDateTime": "xyz789",
      "modifiedDateTime": "abc123",
      "instructions": "abc123",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

createOffer

Description

Create offer mutation used for all available types of offer including Fixed price and Hourly

Required Permissions

"Offer - Read And Write Access"

Response

Returns an OfferCreationResponse

Arguments
Name Description
offerInput - CreationOfferInput! Offer creation payload

Example

Query
mutation createOffer($offerInput: CreationOfferInput!) {
  createOffer(offerInput: $offerInput) {
    offer {
      ...ModernizedOfferFragment
    }
  }
}
Variables
{"offerInput": CreationOfferInput}
Response
{"data": {"createOffer": {"offer": ModernizedOffer}}}

deleteMilestone

Description

Client deletes and existing milestone

Required Permissions

"Offer - Read And Write Access"

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

Required Permissions

"Offer - Read And Write Access"

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": "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": "abc123",
      "createdDateTime": "xyz789",
      "modifiedDateTime": "abc123",
      "instructions": "abc123",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

endContractByClient

Description

End a contract by a client

Required Permissions

"Contract - Read and Write Access"

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID! Contract identifier
input - EndContractInput! Contract end payload

Example

Query
mutation endContractByClient(
  $contractId: ID!,
  $input: EndContractInput!
) {
  endContractByClient(
    contractId: $contractId,
    input: $input
  ) {
    success
  }
}
Variables
{
  "contractId": "4",
  "input": EndContractInput
}
Response
{"data": {"endContractByClient": {"success": true}}}

pauseContract

Description

Pause a contract by a client

Required Permissions

"Contract - Read and Write Access"

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID! Contract identifier
message - String Optional message to the counterparty

Example

Query
mutation pauseContract(
  $contractId: ID!,
  $message: String
) {
  pauseContract(
    contractId: $contractId,
    message: $message
  ) {
    success
  }
}
Variables
{"contractId": 4, "message": "abc123"}
Response
{"data": {"pauseContract": {"success": false}}}

rejectSubmittedMilestone

Description

Allows client to reject a milestone submission from a freelancer

Required Permissions

"Offer - Read And Write Access"

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

restartContract

Description

Restart a contract by a client

Required Permissions

"Contract - Read and Write Access"

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID! Contract identifier
message - String Optional message to the counterparty

Example

Query
mutation restartContract(
  $contractId: ID!,
  $message: String
) {
  restartContract(
    contractId: $contractId,
    message: $message
  ) {
    success
  }
}
Variables
{
  "contractId": "4",
  "message": "xyz789"
}
Response
{"data": {"restartContract": {"success": false}}}

updateContractHourlyLimit

Description

Update hourly limit

Required Permissions

"Contract - Read and Write Access"

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID! Contract Id
updateHourlyLimitRequest - UpdateHourlyLimitRequestInput Update hourly limit request

Example

Query
mutation updateContractHourlyLimit(
  $contractId: ID!,
  $updateHourlyLimitRequest: UpdateHourlyLimitRequestInput
) {
  updateContractHourlyLimit(
    contractId: $contractId,
    updateHourlyLimitRequest: $updateHourlyLimitRequest
  ) {
    success
  }
}
Variables
{
  "contractId": "4",
  "updateHourlyLimitRequest": UpdateHourlyLimitRequestInput
}
Response
{"data": {"updateContractHourlyLimit": {"success": false}}}
Payment (Client)

sendCustomPayment

Description

Send custom payment

Required Permissions

"Payments - Read and Write Access"

Response

Returns a CustomPaymentResponse

Arguments
Name Description
input - CustomPaymentInput Payment details

Example

Query
mutation sendCustomPayment($input: CustomPaymentInput) {
  sendCustomPayment(input: $input) {
    invoiceId
  }
}
Variables
{"input": CustomPaymentInput}
Response
{"data": {"sendCustomPayment": {"invoiceId": 4}}}
Proposals

confirmFiles

Description

Confirm files, returned is a flag indicating whether operation was successful or not

Required Permissions

"Common Functionality - Read And Write Access"

Response

Returns a Boolean

Arguments
Name Description
fileIds - [ID!]! List of file IDs to confirm
skipMissing - Boolean Skip missing files without raising an error. Default = true

Example

Query
mutation confirmFiles(
  $fileIds: [ID!]!,
  $skipMissing: Boolean
) {
  confirmFiles(
    fileIds: $fileIds,
    skipMissing: $skipMissing
  )
}
Variables
{"fileIds": [4], "skipMissing": true}
Response
{"data": {"confirmFiles": true}}

createDirectUploadLinkForJAClientProposal

Description

Create direct upload link, to upload Job Application client proposal attachments

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns a FileInfo!

Arguments
Name Description
input - CreateDirectUploadLinkInput! Upload input details

Example

Query
mutation createDirectUploadLinkForJAClientProposal($input: CreateDirectUploadLinkInput!) {
  createDirectUploadLinkForJAClientProposal(input: $input) {
    id
    uploadUrl
    formKeyValues {
      ...StringMapElementFragment
    }
  }
}
Variables
{"input": CreateDirectUploadLinkInput}
Response
{
  "data": {
    "createDirectUploadLinkForJAClientProposal": {
      "id": "4",
      "uploadUrl": "xyz789",
      "formKeyValues": [StringMapElement]
    }
  }
}

declineClientProposal

Description

Decline client proposal

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalDeclineRequest - ClientProposalDeclineRequest Client proposal decline request

Example

Query
mutation declineClientProposal($clientProposalDeclineRequest: ClientProposalDeclineRequest) {
  declineClientProposal(clientProposalDeclineRequest: $clientProposalDeclineRequest) {
    proposal {
      ...ClientProposalFragment
    }
    status
  }
}
Variables
{
  "clientProposalDeclineRequest": ClientProposalDeclineRequest
}
Response
{
  "data": {
    "declineClientProposal": {
      "proposal": ClientProposal,
      "status": "SUCCESS"
    }
  }
}

hideClientProposal

Description

Toggle hide status on the client proposal.

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalHideRequest - ClientProposalHideRequest! Client proposal hide request

Example

Query
mutation hideClientProposal($clientProposalHideRequest: ClientProposalHideRequest!) {
  hideClientProposal(clientProposalHideRequest: $clientProposalHideRequest) {
    proposal {
      ...ClientProposalFragment
    }
    status
  }
}
Variables
{"clientProposalHideRequest": ClientProposalHideRequest}
Response
{
  "data": {
    "hideClientProposal": {
      "proposal": ClientProposal,
      "status": "SUCCESS"
    }
  }
}

markClientProposalAsRead

Description

Mark client proposal as read

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalReadRequest - ClientProposalReadRequest Client proposal read request

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

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalMessageRequest - ClientProposalMessageRequest Client proposal message request

Example

Query
mutation messageClientProposal($clientProposalMessageRequest: ClientProposalMessageRequest) {
  messageClientProposal(clientProposalMessageRequest: $clientProposalMessageRequest) {
    proposal {
      ...ClientProposalFragment
    }
    status
  }
}
Variables
{
  "clientProposalMessageRequest": ClientProposalMessageRequest
}
Response
{
  "data": {
    "messageClientProposal": {
      "proposal": ClientProposal,
      "status": "SUCCESS"
    }
  }
}

shortlistClientProposal

Description

Shortlist client proposal

Required Permissions

"Client Proposals - Read And Write Access"

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalShortlistRequest - ClientProposalShortlistRequest Client proposal shortlist request

Example

Query
mutation shortlistClientProposal($clientProposalShortlistRequest: ClientProposalShortlistRequest) {
  shortlistClientProposal(clientProposalShortlistRequest: $clientProposalShortlistRequest) {
    proposal {
      ...ClientProposalFragment
    }
    status
  }
}
Variables
{
  "clientProposalShortlistRequest": ClientProposalShortlistRequest
}
Response
{
  "data": {
    "shortlistClientProposal": {
      "proposal": ClientProposal,
      "status": "SUCCESS"
    }
  }
}
Users and teams

addFreelancerEmploymentRecord

Description

Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Arguments
Name Description
input - CreateEmploymentRecordInput! input data for creating employment record

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": "xyz789",
      "startDate": "xyz789",
      "endDate": "abc123",
      "description": "xyz789",
      "city": "abc123",
      "country": "abc123"
    }
  }
}

addFreelancerLanguage

Description

Input userId is NOT being used anymore. Internally it is always the current user's id taken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a FreelancerProfileLanguage

Arguments
Name Description
input - FreelancerLanguageInput! input data for creating language

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": true,
      "verifiedByCertificate": false,
      "verifiedByFeedback": true
    }
  }
}

addFreelancerOtherExperience

Description

Input userId is NOT being used anymore. Internally it is always the current user's id taken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Arguments
Name Description
input - OtherExperienceInput! input data for creating other experience

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": "abc123",
      "description": "xyz789",
      "active": true,
      "createdDateTime": "xyz789",
      "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

Required Permissions

"Activity Entities - Read and Write Access"

Response

Returns a ProcessAddResponse

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activity is being created
request - AddTeamActivityRequest! Activity object that is going to be created

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": true}}}

addUserToRoom

Description

Add users to the room

Required Permissions

"Messaging - Read and Write Access"

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

archiveRoom

Description

Archive an existing room

Required Permissions

"Messaging - Read and Write Access"

Response

Returns a Room!

Arguments
Name Description
roomId - ID!

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": 987,
      "roomFavoriteDateTime": "abc123",
      "favorite": true,
      "numUnreadMentions": 123,
      "roomUsers": [RoomUser],
      "numUsers": 123,
      "joinDateTime": "abc123",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": false,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": true,
      "muted": false,
      "contractId": "4",
      "contract": Contract,
      "contractDetails": ContractDetails,
      "vendorProposal": VendorProposal,
      "roomNote": "xyz789",
      "roomNotePresent": true,
      "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

Required Permissions

"Activity Entities - Read and Write Access"

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activity is being archived
codes - [String!]! List of activity codes to be archived

Example

Query
mutation archiveTeamActivity(
  $orgId: ID!,
  $teamId: ID,
  $codes: [String!]!
) {
  archiveTeamActivity(
    orgId: $orgId,
    teamId: $teamId,
    codes: $codes
  ) {
    success
  }
}
Variables
{
  "orgId": 4,
  "teamId": "4",
  "codes": ["xyz789"]
}
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

Required Permissions

"Activity Entities - Read and Write Access"

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activity is being assigned
contractId - ID! The contract id where activity is being assigned
codes - [String]! List of activity codes to be assigned

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": true}}}

createOrganization

Description

Create a new child organization

Required Permissions

"Organization - Read and Write access"

Response

Returns an AccountProcessInstance!

Arguments
Name Description
input - CreateOrganizationInput! Input for creating organization request

Example

Query
mutation createOrganization($input: CreateOrganizationInput!) {
  createOrganization(input: $input) {
    id
    success
  }
}
Variables
{"input": CreateOrganizationInput}
Response
{
  "data": {
    "createOrganization": {
      "id": "4",
      "success": true
    }
  }
}

createRoomStoryV2

Description

Creates new story in an existing dash room

Required Permissions

"Messaging - Read and Write Access"

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": "abc123",
      "updatedDateTime": "xyz789",
      "user": GenericUser,
      "message": "abc123",
      "organization": GenericOrganization,
      "roomStoryNote": RoomStoryNote,
      "attachments": [MessageAttachments]
    }
  }
}

createRoomV2

Description

Create dash room based on input arguments and returns its information

Required Permissions

"Messaging - Read and Write Access"

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": "xyz789",
      "organization": CurrentOrganization,
      "creator": RoomUser,
      "createdAtDateTime": "xyz789",
      "public": false,
      "topic": "xyz789",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "xyz789",
      "favorite": false,
      "numUnreadMentions": 123,
      "roomUsers": [RoomUser],
      "numUsers": 123,
      "joinDateTime": "abc123",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "abc123",
      "readOnly": true,
      "blockDateTime": "abc123",
      "blockedBy": RoomUser,
      "hidden": true,
      "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
    }
  }
}

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 } } } } ...

Required Permissions

"Organization - Read and Write access"

Response

Returns an InviteToTeamResponse!

Arguments
Name Description
invitations - [InvitationToTeamInput!]! Invitations payload

Example

Query
mutation inviteToTeam($invitations: [InvitationToTeamInput!]!) {
  inviteToTeam(invitations: $invitations) {
    succeeded {
      ...InviteToTeamSucceededResponseFragment
    }
    failed {
      ...InviteToTeamFailedResponseFragment
    }
  }
}
Variables
{"invitations": [InvitationToTeamInput]}
Response
{
  "data": {
    "inviteToTeam": {
      "succeeded": [InviteToTeamSucceededResponse],
      "failed": [InviteToTeamFailedResponse]
    }
  }
}

removeFreelancerEmploymentRecord

Description

Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a Boolean

Arguments
Name Description
id - ID! id of the employment record to be deleted
userId - ID! user id of the freelancer

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 taken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a Boolean

Arguments
Name Description
userId - ID! user id of the freelancer
iso639Code - String! id of the language to be deleted

Example

Query
mutation removeFreelancerLanguage(
  $userId: ID!,
  $iso639Code: String!
) {
  removeFreelancerLanguage(
    userId: $userId,
    iso639Code: $iso639Code
  )
}
Variables
{"userId": 4, "iso639Code": "xyz789"}
Response
{"data": {"removeFreelancerLanguage": false}}

removeFreelancerOtherExperience

Description

Remove FL experience for the current user

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a Boolean

Arguments
Name Description
id - ID! id of the other experience to be deleted

Example

Query
mutation removeFreelancerOtherExperience($id: ID!) {
  removeFreelancerOtherExperience(id: $id)
}
Variables
{"id": "4"}
Response
{"data": {"removeFreelancerOtherExperience": false}}

removeRoom

Description

Removes a room

Required Permissions

"Messaging - Read and Write Access"

Response

Returns a String!

Arguments
Name Description
roomId - ID!

Example

Query
mutation removeRoom($roomId: ID!) {
  removeRoom(roomId: $roomId)
}
Variables
{"roomId": "4"}
Response
{"data": {"removeRoom": "abc123"}}

removeRoomStory

Description

Removes a story from a room

Required Permissions

"Messaging - Read and Write Access"

Response

Returns a String!

Arguments
Name Description
roomId - ID!
storyId - ID!

Example

Query
mutation removeRoomStory(
  $roomId: ID!,
  $storyId: ID!
) {
  removeRoomStory(
    roomId: $roomId,
    storyId: $storyId
  )
}
Variables
{
  "roomId": "4",
  "storyId": "4"
}
Response
{"data": {"removeRoomStory": "abc123"}}

removeUserFromRoom

Description

Removes an user from a room

Required Permissions

"Messaging - Read and Write Access"

Response

Returns a Boolean!

Arguments
Name Description
roomId - ID!
userId - ID!
orgId - ID!

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

roomCreate1on1IfNotExists

Description

Create 1on1 room if doesn't exist and get it's information

Required Permissions

"Messaging - Read and Write Access"

Response

Returns a Room!

Arguments
Name Description
userId - ID!
orgId - ID!

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": "xyz789",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 987,
      "roomFavoriteDateTime": "xyz789",
      "favorite": false,
      "numUnreadMentions": 123,
      "roomUsers": [RoomUser],
      "numUsers": 987,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "abc123",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": true,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": false,
      "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
    }
  }
}

unarchiveTeamActivity

Description

Unarchive activities. A user needs to have hiring manager privileges within the team in order to create an activity at team level

Required Permissions

"Activity Entities - Read and Write Access"

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activity is being unarchived
codes - [String!]! List of activity codes to be unarchived

Example

Query
mutation unarchiveTeamActivity(
  $orgId: ID!,
  $teamId: ID,
  $codes: [String!]!
) {
  unarchiveTeamActivity(
    orgId: $orgId,
    teamId: $teamId,
    codes: $codes
  ) {
    success
  }
}
Variables
{
  "orgId": 4,
  "teamId": "4",
  "codes": ["xyz789"]
}
Response
{"data": {"unarchiveTeamActivity": {"success": false}}}

updateFreelancerAvailability

Description

Update freelancer's availability given its id and userId

Required Permissions

"Freelancer Profile - Read And Write Access"

Response

Returns a FreelancerProfileAvailability

Arguments
Name Description
input - FreelancerProfileAvailabilityInput! input data for updating availability

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": "xyz789",
      "name": "xyz789",
      "createdDateTime": "xyz789"
    }
  }
}

updateFreelancerEmploymentRecord

Description

Input userId is NOT being used anymore. Internally it is always the current user's id teken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Arguments
Name Description
input - UpdateEmploymentRecordInput! input data for updating employment record

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": "xyz789",
      "standardizedCompanyId": "abc123",
      "standardizedJobTitleId": "xyz789",
      "role": "abc123",
      "startDate": "abc123",
      "endDate": "abc123",
      "description": "abc123",
      "city": "abc123",
      "country": "abc123"
    }
  }
}

updateFreelancerOtherExperience

Description

Input userId is NOT being used anymore. Internally it is always the current user's id taken from the context.

Required Permissions

"Freelancer Profile - Read And Write Access"

Arguments
Name Description
input - UpdateOtherExperienceInput! input data for updating other experience

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": "xyz789",
      "description": "xyz789",
      "active": true,
      "createdDateTime": "abc123",
      "updatedDateTime": "abc123"
    }
  }
}

updateOrganization

Description

Update organization data

Required Permissions

"Organization - Read and Write access"

Response

Returns an AccountProcessInstance!

Arguments
Name Description
input - UpdateOrganizationInput! Input for updating organization request

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

Required Permissions

"Messaging - Read and Write Access"

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

Required Permissions

"Messaging - Read and Write Access"

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": "xyz789",
      "organization": CurrentOrganization,
      "creator": RoomUser,
      "createdAtDateTime": "abc123",
      "public": true,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "abc123",
      "favorite": false,
      "numUnreadMentions": 123,
      "roomUsers": [RoomUser],
      "numUsers": 123,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "abc123",
      "lastReadDateTime": "abc123",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "abc123",
      "readOnly": true,
      "blockDateTime": "abc123",
      "blockedBy": RoomUser,
      "hidden": true,
      "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

Required Permissions

"Activity Entities - Read and Write Access"

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID! The org id where the team belongs to
teamId - ID The team id where activity is being updated
request - UpdateTeamActivityRequest! The request object containing the updated activity details

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}}}
Workflow

updateWorkflowTask

Description

Updates the status of the individual task associated with the workflowId and taskId

Required Permissions

"Job Postings - Read and Write Access"

Response

Returns an UpdateWorkflowTaskResult!

Arguments
Name Description
workflowId - ID Workflow identifier
taskId - ID Task identifier
updateWorkflowTaskDetailsInput - UpdateWorkflowTaskDetailsInput Update payload

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
    }
  }
}
Other

createClientJobInvitation

Description

Creates a new invitation for a given freelancer, client and jobPosting parameters

Required Permissions

"Management Job Postings"

Response

Returns an ID!

Arguments
Name Description
clientJobInvitationCreateRequest - ClientJobInvitationCreateRequestInput! Input for creating client job invitation

Example

Query
mutation createClientJobInvitation($clientJobInvitationCreateRequest: ClientJobInvitationCreateRequestInput!) {
  createClientJobInvitation(clientJobInvitationCreateRequest: $clientJobInvitationCreateRequest)
}
Variables
{
  "clientJobInvitationCreateRequest": ClientJobInvitationCreateRequestInput
}
Response
{"data": {"createClientJobInvitation": 4}}

Types

Job Posts

AccessType

Description

Access type for job posting visibility

Values
Enum Value Description

PUBLIC_INDEX

Publicly indexed

ACCESS_PUBLIC

Public access

ACCESS_PRIVATE

Private access
Example
"PUBLIC_INDEX"
Job Posts

ApplicationsBidStats

Description

Statistics of bids on a job posting

Fields
Field Name Description
avgRateBid - Money Average bid rate
minRateBid - Money Minimum bid rate
maxRateBid - Money Maximum bid rate
avgInterviewedRateBid - Money Average bid rate for interviewed candidates
Example
{
  "avgRateBid": Money,
  "minRateBid": Money,
  "maxRateBid": Money,
  "avgInterviewedRateBid": Money
}
Job Posts

Area

Description

Geographic area element

Fields
Field Name Description
id - ID! Area identifier
areaType - AreaType Type of area (city, postal code, etc.)
name - String Area name
Example
{
  "id": 4,
  "areaType": "CITY",
  "name": "abc123"
}
Job Posts

AreaFilter

Description

Geographic area filter by coordinates

Fields
Input Field Description
latitude - Float! Latitude coordinate
longitude - Float! Longitude coordinate
radius - Float! Search radius in miles
Example
{"latitude": 987.65, "longitude": 123.45, "radius": 987.65}
Job Posts

AreaType

Description

Geographic area type

Values
Enum Value Description

CITY

City area

AREA

General area

POSTAL_CODE

Postal code area
Example
"CITY"
Job Posts

AutoReviewStatus

Description

Auto review status for job postings

Values
Enum Value Description

APPROVED

Job posting approved

REJECTED

Job posting rejected

IN_REVIEW

Job posting under review
Example
"APPROVED"
Job Posts

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"]}
Job Posts

ContractorType

Description

Contractor type filter

Values
Enum Value Description

ALL

All contractor types

INDIVIDUALS

Individual freelancers only

AGENCIES

Agencies only
Example
"ALL"
Job Posts

CustomFieldDropDown

Description

Custom field dropdown option

Fields
Input Field Description
id - ID Dropdown option identifier
customFieldId - ID Custom field identifier
value - String Option value
displayValue - String Display value
orderIndex - Int Sort order index
description - String Option description
inUse - Boolean Whether option is in use
active - Boolean Whether option is active
aclType - DropdownAclType Access control type
teamRids - [String] Team record identifiers with access
Example
{
  "id": 4,
  "customFieldId": 4,
  "value": "xyz789",
  "displayValue": "abc123",
  "orderIndex": 123,
  "description": "xyz789",
  "inUse": true,
  "active": true,
  "aclType": "COMPANY",
  "teamRids": ["abc123"]
}
Job Posts

CustomFieldsResponse

Description

Custom field response value

Fields
Input Field Description
id - ID Response identifier
customFieldId - ID Custom field identifier
value - String Response value
displayValue - String Display value
Example
{
  "id": 4,
  "customFieldId": 4,
  "value": "xyz789",
  "displayValue": "xyz789"
}
Job Posts

CustomJobPostSkill

Description

Custom skill entry for a job post

Fields
Field Name Description
parentSkillId - ID Parent ontology skill identifier
freeText - String Free-text skill name
Example
{
  "parentSkillId": "4",
  "freeText": "abc123"
}
Job Posts

DropdownAclType

Description

Access control type for dropdown options

Values
Enum Value Description

COMPANY

Company-level access

TEAM

Team-level access
Example
"COMPANY"
Job Posts

Earning

Description

Minimum earnings requirement

Values
Enum Value Description

ANY

Any earnings level

AT_LEAST_1

At least $1 earned

AT_LEAST_100

At least $100 earned

AT_LEAST_1000

At least $1000 earned

AT_LEAST_10000

At least $10000 earned
Example
"ANY"
Job Posts

EngagementType

Description

Engagement type for hourly contracts

Values
Enum Value Description

FULL_TIME

Full-time engagement

PART_TIME

Part-time engagement

AS_NEEDED

As needed basis

NOT_SURE

Client is not sure
Example
"FULL_TIME"
Job Posts

EnglishProficiency

Description

English proficiency levels

Values
Enum Value Description

ANY

Any proficiency level

BASIC

Basic proficiency

CONVERSATIONAL

Conversational proficiency

FLUENT

Fluent proficiency

NATIVE

Native proficiency
Example
"ANY"
Job Posts

EnglishSkill

Description

English proficiency levels

Values
Enum Value Description

ANY_LEVEL

Any level of English

AT_LEAST_1_OF_5

At least 1 out of 5

AT_LEAST_2_OF_5

At least 2 out of 5

AT_LEAST_3_OF_5

At least 3 out of 5

AT_LEAST_4_OF_5

At least 4 out of 5

EXACTLY_5_OF_5

Exactly 5 out of 5
Example
"ANY_LEVEL"
Job Posts

ExperienceLevel

Description

Experience level requirements

Values
Enum Value Description

ENTRY_LEVEL

Entry level

INTERMEDIATE

Intermediate level

EXPERT

Expert level
Example
"ENTRY_LEVEL"
Job Posts

FixedPriceContractTerms

Description

Fixed-price contract terms

Fields
Field Name Description
amount - Money! Fixed budget amount
maxAmount - Money Maximum budget amount (if range)
engagementDuration - EngagementDuration Expected project duration
Example
{
  "amount": Money,
  "maxAmount": Money,
  "engagementDuration": EngagementDuration
}
Job Posts

FreelancerClientRelation

Description

Relationship between a freelancer and a client

Fields
Field Name Description
companyRid - ID! Client company record identifier
companyName - String! Client company name
edcUserId - ID! EDC user identifier
lastContractPlatform - String! Platform of last contract
lastContractRid - ID! Last contract record identifier
lastContractTitle - String! Title of the last contract
Example
{
  "companyRid": "4",
  "companyName": "abc123",
  "edcUserId": 4,
  "lastContractPlatform": "xyz789",
  "lastContractRid": "4",
  "lastContractTitle": "xyz789"
}
Job Posts

HourlyContractTerms

Description

Hourly contract terms

Fields
Field Name Description
engagementDuration - EngagementDuration Expected engagement duration
engagementType - EngagementType! Type of engagement (full-time, part-time, etc.)
notSureProjectDuration - Boolean Client is unsure about project duration
hourlyBudgetType - JobPostingHourlyBudgetType Hourly budget type
hourlyBudgetMin - Float Minimum hourly rate
hourlyBudgetMax - Float Maximum hourly rate
Example
{
  "engagementDuration": EngagementDuration,
  "engagementType": "FULL_TIME",
  "notSureProjectDuration": false,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": 987.65,
  "hourlyBudgetMax": 123.45
}
Job Posts

JobActivity

Description

Activity metrics for a job posting

Fields
Field Name Description
lastClientActivity - String Last client activity timestamp
invitesSent - Int! Number of invites sent
totalInvitedToInterview - Int! Total invited to interview
totalHired - Int! Total hired
totalUnansweredInvites - Int! Total unanswered invites
totalOffered - Int! Total offers made
totalRecommended - Int Total recommended candidates
Example
{
  "lastClientActivity": "xyz789",
  "invitesSent": 123,
  "totalInvitedToInterview": 987,
  "totalHired": 123,
  "totalUnansweredInvites": 987,
  "totalOffered": 987,
  "totalRecommended": 123
}
Job Posts

JobDuration

Description

Job duration categories

Values
Enum Value Description

WEEK

One week duration

MONTH

One month duration

QUARTER

Three months duration

SEMESTER

Six months duration

ONGOING

Ongoing project
Example
"WEEK"
Job Posts

JobFeaturePrediction

Description

Job feature prediction

Fields
Field Name Description
id - ID! The ID of the job
openingMultiFreelancerPrediction - Boolean Prediction to whether job requires multiple freelancers
opening - String Prediction value low, high, etc.
Example
{
  "id": 4,
  "openingMultiFreelancerPrediction": false,
  "opening": "abc123"
}
Job Posts

JobPostBillRate

Fields
Input Field Description
billRateCode - String!
Example
{"billRateCode": "xyz789"}
Job Posts

JobPostDurationType

Description

Defines the duration of the job post

Values
Enum Value Description

ONE_TIME_PROJECT

ONGOING_NEED

Example
"ONE_TIME_PROJECT"
Job Posts

JobPostEnterpriseCustomFields

Fields
Input Field Description
key - String!
value - String!
Example
{
  "key": "abc123",
  "value": "xyz789"
}
Job Posts

JobPosting

Description

Management side JobPosting information

Fields
Field Name Description
id - ID! Job posting identifier
version - Int Optimistic locking version
info - JobPostingInfo Core posting information block
visibility - AccessType Visibility/access level
ownership - JobPostingOwnership Ownership details
content - JobPostingContent Title and description
attachment - [JobPostingAttachment!] Attached files
classification - JobPostingClassification Classification attributes
segmentationData - JobPostingSegmentationData Segmentation metadata
contractTerms - JobPostingContractTerms Contract information of the Posting
contractorSelection - JobPostingContractorSelection Contractor selection criteria
additionalInfo - JobPostingAdditionalInfo Additional information
ptcInfo - JobPostingPtcInfo Private Talent Cloud info
proposalsStatistics - ProposalsStatistics Proposal statistics
customFields - [JobPostingCustomFields] Custom field responses
Example
{
  "id": "4",
  "version": 123,
  "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]
}
Job Posts

JobPostingAccess

Description

Job posting access levels

Values
Enum Value Description

PUBLIC_INDEX

Publicly indexed: allowed for anonymous and search engin

PUBLIC

Public access: any registered user

PRIVATE

Private access: invited only
Example
"PUBLIC_INDEX"
Job Posts

JobPostingAdditionalInfo

Description

Additional metadata captured at job creation

Fields
Field Name Description
clientNumberOfHiresOnCreate - Int Client's hire count at posting creation
clientTotalSpentOnCreate - Money Client's total spend at posting creation
directHire - Boolean Whether direct hire is enabled
invitePost - Boolean Whether this is an invite-only post
lastBuyerActivity - String Last buyer activity timestamp
Example
{
  "clientNumberOfHiresOnCreate": 123,
  "clientTotalSpentOnCreate": Money,
  "directHire": true,
  "invitePost": true,
  "lastBuyerActivity": "abc123"
}
Job Posts

JobPostingAdditionalRequest

Description

Additional options for job posting

Fields
Input Field Description
directHire - Boolean Whether direct hire is enabled
invitePost - Boolean Whether this is an invite-only post
earlyEngagement - Boolean Whether early engagement is enabled
earlyEngagementVisited - Boolean Whether early engagement was visited
Example
{
  "directHire": false,
  "invitePost": true,
  "earlyEngagement": false,
  "earlyEngagementVisited": false
}
Job Posts

JobPostingAdditionalSkillInput

Description

Additional skill input for job posting

Fields
Input Field Description
skillId - String Skill identifier
freetext - String Free-text skill name
legacyConvertedSkill - Boolean Whether skill was converted from legacy format
relevance - JobPostSkillRelevance Skill relevance (mandatory or nice-to-have)
Example
{
  "skillId": "abc123",
  "freetext": "abc123",
  "legacyConvertedSkill": true,
  "relevance": "MANDATORY"
}
Job Posts

JobPostingAnnotations

Description

Annotations for job posting

Fields
Input Field Description
tags - [String] Tags for categorization
customFields - [JobPostingAnnotationsCustomField] Custom field key-value pairs
Example
{
  "tags": ["abc123"],
  "customFields": [JobPostingAnnotationsCustomField]
}
Job Posts

JobPostingAnnotationsCustomField

Description

Custom field annotation

Fields
Input Field Description
key - String Field key
value - String Field value
Example
{
  "key": "xyz789",
  "value": "xyz789"
}
Job Posts

JobPostingAttachment

Description

Attachment metadata for a job posting

Fields
Field Name Description
id - ID! Attachment identifier
sequenceNumber - Int! Sequence number for ordering
fileName - String! Original file name
link - String Public link to the file
afsFileLink - String Link to AFS storage
contentLength - Int File size in bytes
contentType - String MIME content type
createdDateTime - String Creation timestamp
Example
{
  "id": "4",
  "sequenceNumber": 123,
  "fileName": "xyz789",
  "link": "abc123",
  "afsFileLink": "abc123",
  "contentLength": 987,
  "contentType": "xyz789",
  "createdDateTime": "xyz789"
}
Job Posts

JobPostingCategory

Description

Job posting category

Fields
Field Name Description
id - ID! Category identifier
name - String! Category display name
slug - String URL-friendly category slug
Example
{
  "id": 4,
  "name": "abc123",
  "slug": "abc123"
}
Job Posts

JobPostingClassification

Description

Classification info attached with the job posting (management side)

Fields
Field Name Description
category - JobPostingCategory Primary category of the posting
subCategory - JobSubPostingCategory Subcategory of the posting
skills - [Skill!] Core skills associated with the posting
customSkills - [CustomJobPostSkill!] Custom skills provided by the client
additionalSkills - [Skill!] Additional skills associated with the posting
occupationId - ID Ontology occupation identifier
customAdditionalSkills - [String!] Additional free-text skills
Example
{
  "category": JobPostingCategory,
  "subCategory": JobSubPostingCategory,
  "skills": [Skill],
  "customSkills": [CustomJobPostSkill],
  "additionalSkills": [Skill],
  "occupationId": 4,
  "customAdditionalSkills": ["abc123"]
}
Job Posts

JobPostingConnection

Description

Connection for management job postings

Fields
Field Name Description
totalCount - Int Total number of management job postings
edges - [JobPostingEdge]! Connection edges containing nodes and cursors
pageInfo - PageInfo Pagination information
Example
{
  "totalCount": 123,
  "edges": [JobPostingEdge],
  "pageInfo": PageInfo
}
Job Posts

JobPostingContent

Description

User-facing job posting content

Fields
Field Name Description
title - String! Job posting title
description - String! Job posting description
Example
{
  "title": "abc123",
  "description": "abc123"
}
Job Posts

JobPostingContractorSelection

Description

Contractor selection criteria for a job posting

Fields
Field Name Description
proposalRequirement - JobPostingProposalRequirements Proposal submission requirements
qualification - JobPostingQualification Freelancer qualification criteria
location - JobPostingLocation Location constraints
Example
{
  "proposalRequirement": JobPostingProposalRequirements,
  "qualification": JobPostingQualification,
  "location": JobPostingLocation
}
Job Posts

JobPostingContractTerms

Description

Contract terms for a job posting

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! Type of contract (hourly or fixed-price)
onSiteType - OnSiteType On-site work requirement type
personsToHire - Int Number of persons to hire
experienceLevel - ExperienceLevel Required experience level
fixedPriceContractTerms - FixedPriceContractTerms Fixed-price specific terms
hourlyContractTerms - HourlyContractTerms Hourly specific terms
Example
{
  "contractStartDate": "xyz789",
  "contractEndDate": "abc123",
  "contractType": "HOURLY",
  "onSiteType": "REMOTE",
  "personsToHire": 987,
  "experienceLevel": "ENTRY_LEVEL",
  "fixedPriceContractTerms": FixedPriceContractTerms,
  "hourlyContractTerms": HourlyContractTerms
}
Job Posts

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
}
Job Posts

JobPostingCreateResponse

Description

Response for creating a job posting

Fields
Field Name Description
id - ID! Created job posting identifier
qualificationsSaved - Boolean! Whether qualifications section was saved
skillsSaved - Boolean! Whether skills section was saved
questionsSaved - Boolean! Whether screening questions were saved
segmentationDataSaved - Boolean! Whether segmentation data was saved
attachmentsSaved - Boolean! Whether attachments were saved
ptcInfoSaved - Boolean! Whether PTC info was saved
jobPostingAdditional - Boolean! Whether additional posting info was saved
sandsJobPostSaved - Boolean! Whether Sands job post data was saved
customFieldsSaved - Boolean! Whether custom fields were saved
version - Int Optimistic locking version
Example
{
  "id": 4,
  "qualificationsSaved": false,
  "skillsSaved": false,
  "questionsSaved": false,
  "segmentationDataSaved": false,
  "attachmentsSaved": true,
  "ptcInfoSaved": false,
  "jobPostingAdditional": false,
  "sandsJobPostSaved": true,
  "customFieldsSaved": false,
  "version": 987
}
Job Posts

JobPostingCustomFields

Description

Job posting custom fields

Fields
Field Name Description
responseId - ID unique identification for the response
id - ID unique identification for the custom field
displayValue - String display value
value - String Response
Example
{
  "responseId": "4",
  "id": 4,
  "displayValue": "xyz789",
  "value": "abc123"
}
Job Posts

JobPostingCustomFieldsRequest

Description

Custom fields request for job posting

Fields
Input Field Description
responses - [CustomFieldsResponse] Custom field responses
newDropdowns - [CustomFieldDropDown] New dropdown options
Example
{
  "responses": [CustomFieldsResponse],
  "newDropdowns": [CustomFieldDropDown]
}
Job Posts

JobPostingEdge

Description

Edge in management job posting connection

Fields
Field Name Description
cursor - String! Cursor for pagination
node - JobPosting Job posting node
Example
{
  "cursor": "abc123",
  "node": JobPosting
}
Job Posts

JobPostingHourlyBudgetType

Description

Hourly budget type for job posting

Values
Enum Value Description

DEFAULT

Default budget type

MANUAL

Manually entered budget

NOT_PROVIDED

Budget not provided
Example
"DEFAULT"
Job Posts

JobPostingInfo

Description

High-level job posting details

Fields
Field Name Description
status - JobPostingStatus Job posting status
company - CurrentOrganization Company associated with the job posting
auditTime - AuditTime Audit timestamps for the job posting
hidden - Boolean Whether the job posting is hidden
siteSource - String Source system where the posting was created
keepOpenOnHire - Boolean Keep the posting open after a hire is made
draftJobPostingId - ID Reference to the draft job posting ID
publishDateTime - String Publish date time of the posting formatted according to ISO-8601
filledDateTime - String Filled date and time if the job was filled
sourcingUpdateForbidden - Boolean Whether sourcing updates are forbidden
sourcingUpdateCount - Int Count of sourcing updates
premium - Boolean Premium posting indicator
legacyCiphertext - String Legacy ciphertext for compatibility
hideBudget - Boolean Whether budget is hidden from public view
categoryId - ID Category identifier of the posting
groupId - ID Group identifier of the posting
notSureFreelancersToHire - Boolean Poster is unsure about number of freelancers to hire
notSureExperienceLevel - Boolean Poster is unsure about experience level required
hourlyBudgetType - JobPostingHourlyBudgetType Hourly budget type selected
hourlyBudgetMin - Money Minimum hourly budget
hourlyBudgetMax - Money Maximum hourly budget
changedByUser - GenericUser User who last changed the posting
reasonId - ID Reason identifier associated with status
reasonName - String Human-readable reason name
Example
{
  "status": "REQUESTED",
  "company": CurrentOrganization,
  "auditTime": AuditTime,
  "hidden": false,
  "siteSource": "xyz789",
  "keepOpenOnHire": false,
  "draftJobPostingId": 4,
  "publishDateTime": "xyz789",
  "filledDateTime": "xyz789",
  "sourcingUpdateForbidden": true,
  "sourcingUpdateCount": 987,
  "premium": true,
  "legacyCiphertext": "xyz789",
  "hideBudget": true,
  "categoryId": 4,
  "groupId": "4",
  "notSureFreelancersToHire": false,
  "notSureExperienceLevel": true,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": Money,
  "hourlyBudgetMax": Money,
  "changedByUser": GenericUser,
  "reasonId": "4",
  "reasonName": "abc123"
}
Job Posts

JobPostingLocation

Description

Location constraints for a job posting

Fields
Field Name Description
countries - [String!] Allowed countries
states - [String!] Allowed states
timezones - [String!] Allowed timezones
localCheckRequired - Boolean Whether local check is required
localMarket - Boolean Whether local market only
areas - [Area!] Specific geographic areas
notSureLocationPreference - Boolean Client is unsure about location preference
localDescription - String Description of local requirement
localFlexibilityDescription - String Description of location flexibility
address - String Physical address
Example
{
  "countries": ["abc123"],
  "states": ["xyz789"],
  "timezones": ["abc123"],
  "localCheckRequired": false,
  "localMarket": true,
  "areas": [Area],
  "notSureLocationPreference": true,
  "localDescription": "xyz789",
  "localFlexibilityDescription": "abc123",
  "address": "abc123"
}
Job Posts

JobPostingLocationRequest

Description

Location requirement for job posting

Fields
Input Field Description
areaType - AreaType Type of area (city, postal code, etc.)
name - String Location name
Example
{"areaType": "CITY", "name": "abc123"}
Job Posts

JobPostingOwnership

Description

Owner and organization associations for a job posting

Fields
Field Name Description
user - GenericUser User who owns the posting
clientCompany - CurrentOrganization Client company associated with the posting
company - GenericOrganization Company owning the posting
team - GenericOrganization Team owning the posting
Example
{
  "user": GenericUser,
  "clientCompany": CurrentOrganization,
  "company": GenericOrganization,
  "team": GenericOrganization
}
Job Posts

JobPostingProposalRequirements

Description

Proposal requirements for a job posting

Fields
Field Name Description
coverLetterRequired - Boolean Whether cover letter is required
freelancerMilestonesAllowed - Boolean Whether freelancer can propose milestones
screeningQuestions - [JobPostingQuestion!] List of screening questions
Example
{
  "coverLetterRequired": false,
  "freelancerMilestonesAllowed": false,
  "screeningQuestions": [JobPostingQuestion]
}
Job Posts

JobPostingPtcInfo

Description

Private Talent Cloud related info for a job posting

Fields
Field Name Description
jobPostingPtcVisibility - JobPostingPtcVisibility PTC visibility setting
Example
{"jobPostingPtcVisibility": "ANY_USER"}
Job Posts

JobPostingPtcInfoRequest

Description

Private Talent Cloud information for job posting

Fields
Input Field Description
jobReference - String Job reference code
talentCloudIds - [ID!] Talent cloud identifiers
visibility - JobPostingPtcVisibility PTC visibility setting
employerCompanyReference - String Employer company reference
status - JobPostingPtcStatus PTC status
purchaseOrderId - ID Purchase order identifier
locationCheckRequired - Boolean Whether location check is required
countries - [String!] Allowed countries
onSiteType - OnSiteType On-site work requirement
onSiteCity - String On-site city
onSiteCountry - String On-site country
createDate - Int Creation date (Unix timestamp)
onSiteReason - String Reason for on-site requirement
onSiteReasonFlexible - String Flexibility description for on-site
onSiteState - String On-site state
teamId - ID Team identifier
travelRequired - Boolean Whether travel is required
updatedDate - Int Last updated date (Unix timestamp)
Example
{
  "jobReference": "abc123",
  "talentCloudIds": [4],
  "visibility": "ANY_USER",
  "employerCompanyReference": "abc123",
  "status": "OPEN",
  "purchaseOrderId": 4,
  "locationCheckRequired": false,
  "countries": ["abc123"],
  "onSiteType": "REMOTE",
  "onSiteCity": "abc123",
  "onSiteCountry": "xyz789",
  "createDate": 987,
  "onSiteReason": "xyz789",
  "onSiteReasonFlexible": "xyz789",
  "onSiteState": "xyz789",
  "teamId": "4",
  "travelRequired": true,
  "updatedDate": 123
}
Job Posts

JobPostingPtcStatus

Description

PTC status for job posting

Values
Enum Value Description

OPEN

Job posting open

CANCELLED

Job posting cancelled

FILLED

Job posting filled

DRAFT

Job posting in draft

DELETED_DRAFT

Draft deleted

VERIFICATION_PENDING

Pending verification

PENDING_PAYMENT_METHOD

Pending payment method

IN_REVIEW

Under review
Example
"OPEN"
Job Posts

JobPostingPtcVisibility

Description

PTC visibility options for job posting

Values
Enum Value Description

ANY_USER

Visible to any user

MEMBER_SELECTED_CLOUD

Visible to members of selected cloud

ONLY_INVITED

Visible only to invited users
Example
"ANY_USER"
Job Posts

JobPostingQualification

Description

Qualification requirements for a job posting

Fields
Field Name Description
contractorType - ContractorType Type of contractor (individual, agency, etc.)
englishProficiency - EnglishProficiency Required English proficiency level
hasPortfolio - Boolean Whether portfolio is required
risingTalent - Boolean Whether rising talent is preferred
jobSuccessScore - Int Minimum job success score
earnings - Earning Minimum earnings requirement
preferredGroups - [PreferredGroup!] Preferred freelancer groups
preferredTests - [PreferredTest] Preferred tests or certifications
Example
{
  "contractorType": "ALL",
  "englishProficiency": "ANY",
  "hasPortfolio": true,
  "risingTalent": true,
  "jobSuccessScore": 123,
  "earnings": "ANY",
  "preferredGroups": [PreferredGroup],
  "preferredTests": [PreferredTest]
}
Job Posts

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": true,
  "contractorType": "ALL",
  "jobSuccessScore": 123,
  "englishProficiency": "ANY",
  "risingTalent": true,
  "countries": ["abc123"],
  "regions": ["xyz789"],
  "locationCheckRequired": true,
  "states": ["abc123"],
  "timezones": ["xyz789"],
  "earnings": "ANY",
  "localMarket": false,
  "onSiteType": "REMOTE",
  "locations": [JobPostingLocationRequest],
  "localDescription": "xyz789",
  "localFlexibilityDescription": "xyz789",
  "ctime": "xyz789",
  "englishSkill": "ANY_LEVEL",
  "groupRid": 4,
  "languages": ["xyz789"],
  "mtime": "abc123",
  "openingId": "xyz789"
}
Job Posts

JobPostingQuestion

Description

Screening question for a job posting

Fields
Field Name Description
id - ID! Question identifier
question - String Question text
user - GenericUser User who created the question
questionType - QuestionType Type of question
auditTime - AuditTime Audit timestamps
Example
{
  "id": "4",
  "question": "abc123",
  "user": GenericUser,
  "questionType": "EXPERIENCE",
  "auditTime": AuditTime
}
Job Posts

JobPostingQuestionRequest

Description

Screening question for job posting

Fields
Input Field Description
question - String! Question text
type - QuestionType Type of question
Example
{"question": "xyz789", "type": "EXPERIENCE"}
Job Posts

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
keepOpenOnHire - Boolean Amount as string containing exact value with dot symbol (".") is used to separate integer and fractional parts
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
uid - String
weeklyRetainerBudget - Float
version - Int Optimistic locking version
tools - [JobPostToolInput!]
deliverables - String
durationType - JobPostDurationType
deadline - String
Example
{
  "title": "abc123",
  "description": "abc123",
  "engagementType": "FULL_TIME",
  "durationId": 4,
  "status": "REQUESTED",
  "type": "HOURLY",
  "amount": "abc123",
  "coverLetterRequired": true,
  "access": "PUBLIC_INDEX",
  "experienceLevel": "ENTRY_LEVEL",
  "freelancersToHire": 123,
  "categoryId": "4",
  "groupId": "4",
  "endDate": "abc123",
  "startDate": "xyz789",
  "siteSource": "abc123",
  "keepOpenOnHire": true,
  "draftJobPostingId": "4",
  "freelancerMilestonesAllowed": false,
  "premium": true,
  "hideBudget": false,
  "notSureFreelancersToHire": false,
  "notSureProjectDuration": true,
  "notSureExperienceLevel": false,
  "notSureLocationPreference": false,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": "abc123",
  "hourlyBudgetMax": "abc123",
  "autoReviewStatus": "APPROVED",
  "autoReviewTs": "abc123",
  "changedById": 4,
  "ciphertext": "xyz789",
  "closeTime": "xyz789",
  "companyName": "xyz789",
  "companyId": "4",
  "createdByFirstName": "abc123",
  "createdByLastName": "abc123",
  "createdById": 4,
  "ctime": "abc123",
  "deletedReason": "abc123",
  "filledDate": "abc123",
  "ghostPost": false,
  "hidden": false,
  "hourPackId": "4",
  "lastOboAgentActionTs": "xyz789",
  "lastOboAgentUserId": "4",
  "legacyCiphertext": "abc123",
  "legacyRid": 4,
  "manualReviewStatus": "APPROVED",
  "mtime": "abc123",
  "offTheNetwork": false,
  "publishTime": "abc123",
  "reasonRid": 4,
  "sourcingTime": "xyz789",
  "sourcingUpdateCount": 987,
  "sourcingUpdateForbidden": true,
  "uid": "xyz789",
  "weeklyRetainerBudget": 987.65,
  "version": 123,
  "tools": [JobPostToolInput],
  "deliverables": "abc123",
  "durationType": "ONE_TIME_PROJECT",
  "deadline": "abc123"
}
Job Posts

JobPostingSegmentationData

Description

Segmentation data for a job posting

Fields
Field Name Description
segmentationValues - [JobPostingSegmentationValue!] Segmentation values assigned to the posting
Example
{"segmentationValues": [JobPostingSegmentationValue]}
Job Posts

JobPostingSegmentationRequest

Description

Segmentation value assignment for job posting

Fields
Input Field Description
segmentationValueId - ID! Segmentation value identifier
customValue - String Custom value if applicable
Example
{
  "segmentationValueId": 4,
  "customValue": "abc123"
}
Job Posts

JobPostingSegmentationValue

Description

Segmentation value entry for a job posting

Fields
Field Name Description
id - ID! Segmentation value identifier
label - String Display label
referenceName - String Reference name/code
sortOrder - Int Sorting order
segmentationType - SegmentationType Segmentation type reference
auditTime - AuditTime Audit timestamps
skill - Skill Linked skill (if applicable)
Example
{
  "id": 4,
  "label": "abc123",
  "referenceName": "xyz789",
  "sortOrder": 123,
  "segmentationType": SegmentationType,
  "auditTime": AuditTime,
  "skill": Skill
}
Job Posts

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": "xyz789",
  "postByTeamIds_any": [4],
  "postByPersonIds_any": ["4"],
  "statusAndAccess_any": [CompanyJobPostingStatusAccess],
  "excludePostByPersonIds_any": [4],
  "categoryGroupIds_any": ["4"],
  "contractType_eq": "HOURLY",
  "createdDateTimeFrom_eq": "abc123",
  "createdDateTimeTo_eq": "xyz789"
}
Job Posts

JobPostingSkillInput

Description

Skill input for job posting

Fields
Input Field Description
parentSkillId - String! Parent ontology skill identifier
skillId - String Specific skill identifier
freetext - String Free-text skill name
boolAnswer - Boolean Boolean answer for skill question
legacyConvertedSkill - Boolean Whether skill was converted from legacy format
relevance - JobPostSkillRelevance Skill relevance (mandatory or nice-to-have)
Example
{
  "parentSkillId": "xyz789",
  "skillId": "abc123",
  "freetext": "xyz789",
  "boolAnswer": true,
  "legacyConvertedSkill": false,
  "relevance": "MANDATORY"
}
Job Posts

JobPostingStatus

Description

Job posting status values

Values
Enum Value Description

REQUESTED

Job posting requested

CANCELLED

Job posting cancelled

FILLED

Job posting filled

DRAFT

Job posting in draft state

DELETED_DRAFT

Draft job posting deleted

VERIFICATION_PENDING

Pending verification

PENDING_PAYMENT_METHOD

Pending payment method
Example
"REQUESTED"
Job Posts

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": true,
  "invitePost": true,
  "jobPostingAdditionalRequest": JobPostingAdditionalRequest,
  "sandsJobPost": SandsJobPostRequest,
  "customFields": JobPostingCustomFieldsRequest,
  "annotations": JobPostingAnnotations,
  "enterpriseCustomFields": [
    JobPostEnterpriseCustomFields
  ],
  "billRate": JobPostBillRate
}
Job Posts

JobPostingUpdateResponse

Description

Response for updating a job posting

Fields
Field Name Description
id - ID! Updated job posting identifier
qualificationsSaved - Boolean! Whether qualifications section was saved
skillsSaved - Boolean! Whether skills section was saved
questionsSaved - Boolean! Whether screening questions were saved
segmentationDataSaved - Boolean! Whether segmentation data was saved
attachmentsSaved - Boolean! Whether attachments were saved
ptcInfoSaved - Boolean! Whether PTC info was saved
sandsJobPostSaved - Boolean! Whether Sands job post data was saved
version - Int Optimistic locking version
Example
{
  "id": 4,
  "qualificationsSaved": true,
  "skillsSaved": false,
  "questionsSaved": true,
  "segmentationDataSaved": true,
  "attachmentsSaved": false,
  "ptcInfoSaved": true,
  "sandsJobPostSaved": true,
  "version": 987
}
Job Posts

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": false,
  "fields": ["abc123"]
}
Job Posts

JobPostSkillRelevance

Description

Defines whether skills are mandatory or nice to have

Values
Enum Value Description

MANDATORY

NICE_TO_HAVE

Example
"MANDATORY"
Job Posts

JobPostToolInput

Description

Tool input for job posting

Fields
Input Field Description
name - String Tool name
Example
{"name": "abc123"}
Job Posts

JobPostType

Description

Job post type

Values
Enum Value Description

HOURLY

Hourly rate job

FIXED_PRICE

Fixed price job
Example
"HOURLY"
Job Posts

JobSubPostingCategory

Description

Job posting subcategory

Fields
Field Name Description
id - ID! Subcategory identifier
name - String! Subcategory display name
slug - String URL-friendly subcategory slug
Example
{
  "id": 4,
  "name": "abc123",
  "slug": "xyz789"
}
Job Posts

MarketplaceAdditionalSearchInfo

Description

Additional search info for marketplace results

Fields
Field Name Description
highlightTitle - String Highlighted title for search results
Example
{"highlightTitle": "xyz789"}
Job Posts

MarketplaceContractorSelection

Description

Contractor selection for a marketplace job posting

Fields
Field Name Description
proposalRequirement - MarketplaceProposalRequirements Proposal submission requirements
qualification - MarketplaceQualification Freelancer qualification criteria
location - MarketplaceLocation Location constraints
Example
{
  "proposalRequirement": MarketplaceProposalRequirements,
  "qualification": MarketplaceQualification,
  "location": MarketplaceLocation
}
Job Posts

MarketplaceContractTerms

Description

Contract terms for a marketplace job posting

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! Type of contract
onSiteType - OnSiteType On-site work requirement
personsToHire - Int! Number of persons to hire
experienceLevel - ExperienceLevel Required experience level
fixedPriceContractTerms - FixedPriceContractTerms Fixed-price terms
hourlyContractTerms - HourlyContractTerms Hourly terms
notSurePersonsToHire - Boolean Client unsure about number of persons
notSureExperiencelevel - Boolean Client unsure about experience level
Example
{
  "contractStartDate": "xyz789",
  "contractEndDate": "xyz789",
  "contractType": "HOURLY",
  "onSiteType": "REMOTE",
  "personsToHire": 987,
  "experienceLevel": "ENTRY_LEVEL",
  "fixedPriceContractTerms": FixedPriceContractTerms,
  "hourlyContractTerms": HourlyContractTerms,
  "notSurePersonsToHire": false,
  "notSureExperiencelevel": false
}
Job Posts

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": "xyz789",
  "searchTerm_eq": SearchTerm,
  "categoryIds_any": ["4"],
  "subcategoryIds_any": [4],
  "occupationIds_any": [4],
  "ontologySkillIds_all": ["4"],
  "sinceId_eq": "abc123",
  "maxId_eq": "abc123",
  "jobType_eq": "HOURLY",
  "duration_any": ["WEEK"],
  "workload_eq": "FULL_TIME",
  "clientHiresRange_eq": IntRange,
  "clientFeedBackRange_eq": FloatRange,
  "budgetRange_eq": IntRange,
  "verifiedPaymentOnly_eq": true,
  "previousClients_eq": true,
  "experienceLevel_eq": "ENTRY_LEVEL",
  "locations_any": ["abc123"],
  "cityId_any": ["xyz789"],
  "zipCodeId_any": ["abc123"],
  "radius_eq": 123,
  "areaId_any": ["abc123"],
  "timezone_eq": "xyz789",
  "usState_eq": "xyz789",
  "daysPosted_eq": 123,
  "jobPostingAccess": "PUBLIC_INDEX",
  "ptcIds_any": ["4"],
  "ptcOnly_eq": true,
  "enterpriseOnly_eq": true,
  "proposalRange_eq": IntRange,
  "pagination_eq": Pagination,
  "area_eq": AreaFilter,
  "preserveFacet_eq": "xyz789",
  "userLocationMatch_eq": false,
  "visitorCountry_eq": "xyz789"
}
Job Posts

MarketplaceJobPosting

Description

Marketplace job posting aggregate

Fields
Field Name Description
id - ID! Marketplace job posting identifier
workFlowState - MarketplacePostingWorkFlowState Current workflow state
ownership - MarketplacePostingOwnership Ownership details
annotations - MarketplacePostingAnnotations Annotations associated with the posting
activityStat - MarketplacePostingActivityStat Activity statistics
content - MarketplaceJobPostingContent Public-facing content
attachments - [MarketplacePostingAttachment!] Attached files
classification - MarketplacePostingClassification Classification attributes
segmentationData - MarketplaceSegmentationData Segmentation metadata
contractTerms - MarketplaceContractTerms Contract terms
contractorSelection - MarketplaceContractorSelection Contractor selection criteria
additionalSearchInfo - MarketplaceAdditionalSearchInfo Additional computed search info
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
filter - ClientProposalFilter

Filter for client proposals

sortAttribute - ClientProposalSortAttribute

Sort attribute

pagination - Pagination

Pagination options

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
organizationIds - [ID!]

Filter responses by accessible organizations

pagination - Pagination

Pagination options

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
}
Job Posts

MarketplaceJobPostingContent

Description

Public marketplace job posting content

Fields
Field Name Description
title - String! Public job posting title
description - String! Public job posting description
Example
{
  "title": "xyz789",
  "description": "abc123"
}
Job Posts

MarketplaceJobPostingsContents

Description

Contents of a marketplace job posting by ID

Fields
Field Name Description
id - ID! Job posting identifier
ciphertext - String! Encrypted identifier value
title - String! Job posting title
description - String! Job posting description
publishedDateTime - String! Published timestamp
annotations - MarketplacePostingAnnotations Posting annotations
Example
{
  "id": 4,
  "ciphertext": "xyz789",
  "title": "abc123",
  "description": "abc123",
  "publishedDateTime": "xyz789",
  "annotations": MarketplacePostingAnnotations
}
Job Posts

MarketplaceJobPostingSearchClientInfo

Description

Client information associated with a marketplace job posting search result

Fields
Field Name Description
memberSinceDateTime - String Date when the client joined Deprecated legacy field
totalHires - Int! Total number of hires made by the client
totalPostedJobs - Int! Total number of jobs the client has posted
totalSpent - Money Total lifetime spend by the client
verificationStatus - ClientVerificationStatus Payment verification status of the client
location - MarketPlaceJobSearchLocation Client's location information
totalReviews - Int! Total number of reviews received by the client
totalFeedback - Float! Average feedback score received by the client
companyRid - ID! Company record identifier (RID) for the client
companyName - String Company name of the client Not supported anymore
edcUserId - ID! EDC user identifier for the client
lastContractPlatform - String Platform of the client's last contract
lastContractRid - ID Record identifier (RID) of the client's last contract
lastContractTitle - String Title of the client's last contract
companyOrgUid - ID! Organization UID of the client's company
hasFinancialPrivacy - Boolean! Whether the client has financial privacy enabled
Example
{
  "memberSinceDateTime": "xyz789",
  "totalHires": 987,
  "totalPostedJobs": 987,
  "totalSpent": Money,
  "verificationStatus": "VERIFIED",
  "location": MarketPlaceJobSearchLocation,
  "totalReviews": 987,
  "totalFeedback": 123.45,
  "companyRid": "4",
  "companyName": "xyz789",
  "edcUserId": 4,
  "lastContractPlatform": "xyz789",
  "lastContractRid": "4",
  "lastContractTitle": "abc123",
  "companyOrgUid": "4",
  "hasFinancialPrivacy": false
}
Job Posts

MarketplaceJobPostingSearchConnection

Description

Connection for marketplace job posting search

Fields
Field Name Description
totalCount - Int Total number of results matching the query
edges - [MarketplaceJobpostingSearchEdge] Connection edges containing nodes and cursors
pageInfo - PageInfo Pagination information
Example
{
  "totalCount": 123,
  "edges": [MarketplaceJobpostingSearchEdge],
  "pageInfo": PageInfo
}
Job Posts

MarketplaceJobpostingSearchEdge

Description

Edge for marketplace job posting search results

Fields
Field Name Description
cursor - String! Cursor for pagination
node - MarketplaceJobPostingSearchResult! Search result node
Example
{
  "cursor": "abc123",
  "node": MarketplaceJobPostingSearchResult
}
Job Posts

MarketplaceJobPostingSearchOccupation

Description

Occupation item used in search results

Fields
Field Name Description
id - ID! Occupation identifier
prefLabel - String! Preferred display label
Example
{"id": 4, "prefLabel": "abc123"}
Job Posts

MarketplaceJobPostingSearchOccupations

Description

Group of occupations associated with a search result

Fields
Field Name Description
category - MarketplaceJobPostingSearchOccupation! Top-level occupation category
subCategories - [MarketplaceJobPostingSearchOccupation] Subcategories under the category
occupationService - MarketplaceJobPostingSearchOccupation Specific service within the occupation
Example
{
  "category": MarketplaceJobPostingSearchOccupation,
  "subCategories": [
    MarketplaceJobPostingSearchOccupation
  ],
  "occupationService": MarketplaceJobPostingSearchOccupation
}
Job Posts

MarketplaceJobPostingSearchRelevance

Description

Relevance metrics for a marketplace job posting search result

Fields
Field Name Description
id - ID! Search result identifier
effectiveCandidates - Int! Number of candidates matching effectively
recommendedEffectiveCandidates - Int! Recommended effective candidates
uniqueImpressions - Int! Unique impressions count
publishTime - String Publish time of the job posting
hoursInactive - Int! Hours since the posting was last active
Example
{
  "id": 4,
  "effectiveCandidates": 123,
  "recommendedEffectiveCandidates": 123,
  "uniqueImpressions": 987,
  "publishTime": "xyz789",
  "hoursInactive": 123
}
Job Posts

MarketplaceJobPostingSearchResult

Description

Search result entry for a marketplace job posting

Fields
Field Name Description
id - ID! Search result identifier
job - MarketplaceJobPosting Linked job posting entity
title - String! Job title
description - String! Job description
ciphertext - String! Encrypted identifier of the job
duration - JobDuration Expected duration category
durationLabel - String Human-readable duration label
engagement - String Engagement string
amount - Money! Budget amount (Money)
recordNumber - String! Job record number
experienceLevel - FreelancerProfileExperienceLevel! Required experience level
category - String contractorTier Category name
subcategory - String Subcategory name
freelancersToHire - Int! Number of freelancers to hire
relevance - MarketplaceJobPostingSearchRelevance! Relevance metrics
enterprise - Boolean! True if enterprise job
relevanceEncoded - String! Encoded relevance payload
totalApplicants - Int! Count of total applicants
preferredFreelancerLocation - [String] Preferred freelancer location list
preferredFreelancerLocationMandatory - Boolean Whether location preference is mandatory
premium - Boolean! True if posting is premium
clientNotSureFields - [String] Client 'not sure' flags
clientPrivateFields - [String] Client private flags
applied - Boolean! True if current user applied
createdDateTime - String! Creation timestamp
publishedDateTime - String! Publish timestamp
renewedDateTime - String Last renewal timestamp
client - MarketplaceJobPostingSearchClientInfo! Client information
skills - [MarketplaceJobPostingSearchSkill]! Associated skills
occupations - MarketplaceJobPostingSearchOccupations Associated occupations
hourlyBudgetType - JobPostingHourlyBudgetType Hourly budget type
hourlyBudgetMin - Money Hourly budget minimum
hourlyBudgetMax - Money Hourly budget maximum
localJobUserDistance - String Distance for local jobs
weeklyBudget - Money Weekly budget amount
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": "xyz789",
  "ciphertext": "abc123",
  "duration": "WEEK",
  "durationLabel": "xyz789",
  "engagement": "abc123",
  "amount": Money,
  "recordNumber": "abc123",
  "experienceLevel": "NONE",
  "category": "abc123",
  "subcategory": "abc123",
  "freelancersToHire": 987,
  "relevance": MarketplaceJobPostingSearchRelevance,
  "enterprise": true,
  "relevanceEncoded": "abc123",
  "totalApplicants": 987,
  "preferredFreelancerLocation": ["xyz789"],
  "preferredFreelancerLocationMandatory": false,
  "premium": true,
  "clientNotSureFields": ["xyz789"],
  "clientPrivateFields": ["xyz789"],
  "applied": true,
  "createdDateTime": "abc123",
  "publishedDateTime": "xyz789",
  "renewedDateTime": "abc123",
  "client": MarketplaceJobPostingSearchClientInfo,
  "skills": [MarketplaceJobPostingSearchSkill],
  "occupations": MarketplaceJobPostingSearchOccupations,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": Money,
  "hourlyBudgetMax": Money,
  "localJobUserDistance": "xyz789",
  "weeklyBudget": Money,
  "engagementDuration": EngagementDuration,
  "totalFreelancersToHire": 987,
  "teamId": 4,
  "freelancerClientRelation": FreelancerClientRelation
}
Job Posts

MarketplaceJobPostingSearchSkill

Description

Skill metadata attached to a search result

Fields
Field Name Description
id - ID Legacy skill identifier (deprecated) No longer supported
name - String! Skill canonical name
prettyName - String! Human-readable skill label
highlighted - Boolean True if search highlighting matched this skill
Example
{
  "id": "4",
  "name": "xyz789",
  "prettyName": "xyz789",
  "highlighted": true
}
Job Posts

MarketplaceJobPostingSearchSortAttribute

Description

Sort attribute for marketplace job posting search

Fields
Input Field Description
field - MarketplaceJobPostingSearchSortField! Sort field
Example
{"field": "RECENCY"}
Job Posts

MarketplaceJobPostingSearchSortField

Description

Sort fields for marketplace job posting search

Values
Enum Value Description

RECENCY

Sort by recency (newest first)

RELEVANCE

Sort by relevance score

CLIENT_TOTAL_CHARGE

Sort by client total charge

CLIENT_RATING

Sort by client rating
Example
"RECENCY"
Job Posts

MarketplaceJobPostingSearchType

Description

context and method of the job search being executed

Values
Enum Value Description

USER_JOBS_SEARCH

default search, will be always utilized when performing a user-initiated job search, any other value will be ignored

JOBS_FEED

retrieve saved searches No longer supported

USER_SITE_SEARCH_RSS

retrieve values in RSS feed integration intended format No longer supported
Example
"USER_JOBS_SEARCH"
Job Posts

MarketPlaceJobSearchLocation

Description

Client location details shown in search results

Fields
Field Name Description
city - String City name
country - String Country name
timezone - String Timezone identifier
state - String State or region
offsetToUTC - String Offset from UTC
Example
{
  "city": "xyz789",
  "country": "abc123",
  "timezone": "xyz789",
  "state": "abc123",
  "offsetToUTC": "xyz789"
}
Job Posts

MarketplaceLocation

Description

Location constraints for marketplace

Fields
Field Name Description
countries - [String!] Allowed countries
states - [String!] Allowed states
timezones - [String!] Allowed timezones
localCheckRequired - Boolean Whether local check is required
localMarket - Boolean Whether local market only
areas - [Area!] Specific geographic areas
notSureLocationPreference - Boolean Client unsure about location preference
localDescription - String Description of local requirement
localFlexibilityDescription - String Description of location flexibility
Example
{
  "countries": ["xyz789"],
  "states": ["abc123"],
  "timezones": ["xyz789"],
  "localCheckRequired": true,
  "localMarket": true,
  "areas": [Area],
  "notSureLocationPreference": false,
  "localDescription": "xyz789",
  "localFlexibilityDescription": "abc123"
}
Job Posts

MarketplacePostingActivityStat

Description

Activity statistics for a marketplace job posting

Fields
Field Name Description
applicationsBidStats - ApplicationsBidStats Bid statistics
jobActivity - JobActivity Activity metrics
Example
{
  "applicationsBidStats": ApplicationsBidStats,
  "jobActivity": JobActivity
}
Job Posts

MarketplacePostingAnnotations

Description

Annotations for a marketplace job posting

Fields
Field Name Description
tags - [String!] Tags associated with the posting
customFields - [StringMapElement!] Custom field key-value pairs
Example
{
  "tags": ["xyz789"],
  "customFields": [StringMapElement]
}
Job Posts

MarketplacePostingAttachment

Description

Attachment metadata for marketplace job posting

Fields
Field Name Description
id - ID! Attachment identifier
sequenceNumber - Int! Sequence number for ordering
fileName - String! Original file name
fileSize - Int! File size in bytes
Example
{
  "id": 4,
  "sequenceNumber": 987,
  "fileName": "abc123",
  "fileSize": 123
}
Job Posts

MarketplacePostingClassification

Description

Classification details of a marketplace job posting

Fields
Field Name Description
category - JobCategory Primary job category
subCategory - JobCategory Job subcategory
occupation - Occupation Occupation classification
skills - [Skill!] Core skills required
additionalSkills - [Skill!] Additional skills
Example
{
  "category": JobCategory,
  "subCategory": JobCategory,
  "occupation": Occupation,
  "skills": [Skill],
  "additionalSkills": [Skill]
}
Job Posts

MarketplacePostingOwnership

Description

Ownership of a marketplace job posting

Fields
Field Name Description
company - GenericOrganization Company owning the posting
team - GenericOrganization Team owning the posting
Example
{
  "company": GenericOrganization,
  "team": GenericOrganization
}
Job Posts

MarketplacePostingWorkFlowState

Description

Workflow state of a marketplace job posting

Fields
Field Name Description
closeResult - String Result of closing action
status - WorkFlowStateStatus! Current workflow status
Example
{
  "closeResult": "xyz789",
  "status": "CLOSED"
}
Job Posts

MarketplaceProposalRequirements

Description

Proposal requirements for a marketplace job posting

Fields
Field Name Description
coverLetterRequired - Boolean Whether cover letter is required
freelancerMilestonesAllowed - Boolean Whether freelancer can propose milestones
screeningQuestions - [MarketplaceQuestion!] List of screening questions
Example
{
  "coverLetterRequired": true,
  "freelancerMilestonesAllowed": false,
  "screeningQuestions": [MarketplaceQuestion]
}
Job Posts

MarketplacePublicCompanyInfo

Description

Public-facing company information used in marketplace search

Fields
Field Name Description
id - ID! Company identifier
legacyType - OrganizationLegacyType Legacy organization type
teamsEnabled - Boolean Teams feature enabled flag
canHire - Boolean Whether the company can hire
hidden - Boolean Whether the company is hidden
includeInStats - Boolean Include company in statistics (deprecated) No longer available for orgs
country - Country Country
state - String State
city - String City
timezone - String Timezone
accountingEntity - String Accounting entity code
billingType - BillingType Billing type
paymentVerification - PaymentVerificationResult Payment verification details
agencyDetails - AgencyDetails Agency details if applicable
Example
{
  "id": "4",
  "legacyType": "CLIENT",
  "teamsEnabled": true,
  "canHire": true,
  "hidden": false,
  "includeInStats": false,
  "country": Country,
  "state": "xyz789",
  "city": "xyz789",
  "timezone": "abc123",
  "accountingEntity": "xyz789",
  "billingType": "BILL",
  "paymentVerification": PaymentVerificationResult,
  "agencyDetails": AgencyDetails
}
Job Posts

MarketplaceQualification

Description

Qualification constraints for marketplace

Fields
Field Name Description
contractorType - ContractorType Type of contractor
englishProficiency - EnglishProficiency Required English proficiency
hasPortfolio - Boolean Whether portfolio is required
hoursWorked - Int Minimum hours worked on platform
risingTalent - Boolean Whether rising talent is preferred
jobSuccessScore - Int Minimum job success score
minEarning - Earning Minimum earnings requirement
preferredGroups - [PreferredGroup!] Preferred freelancer groups
preferenceTests - [PreferredTest] Preferred tests or certifications
Example
{
  "contractorType": "ALL",
  "englishProficiency": "ANY",
  "hasPortfolio": false,
  "hoursWorked": 987,
  "risingTalent": false,
  "jobSuccessScore": 987,
  "minEarning": "ANY",
  "preferredGroups": [PreferredGroup],
  "preferenceTests": [PreferredTest]
}
Job Posts

MarketplaceQuestion

Description

Screening question used in marketplace

Fields
Field Name Description
question - String Question text
sequenceNumber - Int Sequence number for ordering
Example
{
  "question": "abc123",
  "sequenceNumber": 987
}
Job Posts

MarketplaceSegmentationData

Description

Segmentation data for a marketplace job posting

Fields
Field Name Description
segmentationValues - [MarketplaceSegmentationValue!] Segmentation values for the posting
Example
{"segmentationValues": [MarketplaceSegmentationValue]}
Job Posts

MarketplaceSegmentationInfo

Description

Segmentation info metadata

Fields
Field Name Description
id - ID! Segmentation info identifier
label - String Display label
referenceName - String Reference name/code
sortOrder - Int Sort order
segmentationType - SegmentationType Segmentation type reference
skill - Skill Linked skill (if applicable)
Example
{
  "id": 4,
  "label": "abc123",
  "referenceName": "abc123",
  "sortOrder": 987,
  "segmentationType": SegmentationType,
  "skill": Skill
}
Job Posts

MarketplaceSegmentationValue

Description

Segmentation value for a marketplace job posting

Fields
Field Name Description
customValue - String Custom value entered by client
segmentationInfo - MarketplaceSegmentationInfo Segmentation metadata
Example
{
  "customValue": "abc123",
  "segmentationInfo": MarketplaceSegmentationInfo
}
Job Posts

OnSiteType

Description

On-site work requirement type

Values
Enum Value Description

REMOTE

Fully remote

OCCASIONAL

Occasional on-site

PERMANENT

Permanent on-site
Example
"REMOTE"
Job Posts

PreferredGroup

Description

Preferred freelancer group

Fields
Field Name Description
id - ID! Group identifier
name - String Group name
logo - String Group logo URL
Example
{
  "id": "4",
  "name": "xyz789",
  "logo": "abc123"
}
Job Posts

PreferredTest

Description

Preferred test or certification

Fields
Field Name Description
id - ID! Test identifier
name - String Test name
Example
{
  "id": "4",
  "name": "abc123"
}
Job Posts

ProposalsStatistics

Description

Aggregated proposal statistics

Fields
Field Name Description
totalProposals - Int! Total number of proposals
totalMessaged - Int! Total messaged proposals
totalHired - Int! Total hired
totalInvitesSent - Int! Total invites sent
totalApplicantsWithAutoHidden - Int! Total applicants with auto-hidden status
totalArchived - Int! Total archived proposals
totalAutoHidden - Int! Total auto-hidden proposals
totalDeclined - Int! Total declined proposals
totalHidden - Int! Total hidden proposals
totalOffered - Int! Total offers made
totalShortlisted - Int! Total shortlisted proposals
totalWithdrawn - Int! Total withdrawn proposals
Example
{
  "totalProposals": 987,
  "totalMessaged": 987,
  "totalHired": 123,
  "totalInvitesSent": 987,
  "totalApplicantsWithAutoHidden": 987,
  "totalArchived": 987,
  "totalAutoHidden": 987,
  "totalDeclined": 123,
  "totalHidden": 123,
  "totalOffered": 987,
  "totalShortlisted": 123,
  "totalWithdrawn": 987
}
Job Posts

QuestionType

Description

Question type for screening

Values
Enum Value Description

EXPERIENCE

Experience-based question

BPAV1

BPA v1 question type
Example
"EXPERIENCE"
Job Posts

SandsJobPostRequest

Description

Skills and occupations data for job posting

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!] List of skills
status - SandsJobPostStatus Job post status
freetextOccupation - String Free-text occupation description
tags - [String!] Tags for categorization
additionalSkills - [JobPostingAdditionalSkillInput!] Additional skills
occupations - [ID!] Occupation identifiers
Example
{
  "occupationId": "xyz789",
  "skills": [JobPostingSkillInput],
  "status": "DRAFT",
  "freetextOccupation": "xyz789",
  "tags": ["xyz789"],
  "additionalSkills": [JobPostingAdditionalSkillInput],
  "occupations": ["4"]
}
Job Posts

SandsJobPostStatus

Description

Status of a Sands job post

Values
Enum Value Description

DRAFT

Job post is in draft state

PUBLISHED

Job post is published
Example
"DRAFT"
Job Posts

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": ["abc123"],
  "orTerms_any": ["xyz789"],
  "exactTerms_any": ["abc123"],
  "excludeTerms_any": ["xyz789"]
}
Job Posts

SegmentationType

Description

Segmentation type metadata

Fields
Field Name Description
id - ID! Segmentation type identifier
name - String Segmentation type name
referenceName - String Segmentation type reference name
Example
{
  "id": 4,
  "name": "abc123",
  "referenceName": "xyz789"
}
Job Posts

WorkFlowStateStatus

Description

Workflow state status

Values
Enum Value Description

CLOSED

Workflow closed

ACTIVE

Workflow active
Example
"CLOSED"

Metadata

Country

Description

Information about a country

Fields
Field Name Description
id - ID Country identifier
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 International phone code
relatedRegion - Region Related geographic region
relatedSubRegion - Region Related geographic sub-region
active - Boolean Whether country is active
registrationAllowed - Boolean Whether registration is allowed in this country
Example
{
  "id": "4",
  "name": "abc123",
  "twoLetterAbbreviation": "xyz789",
  "threeLetterAbbreviation": "abc123",
  "region": "EU",
  "phoneCode": "abc123",
  "relatedRegion": Region,
  "relatedSubRegion": Region,
  "active": true,
  "registrationAllowed": true
}
Metadata

CountryRegion

Description

Country region classification

Values
Enum Value Description

EU

European Union

OTHER

Other regions
Example
"EU"
Metadata

ReasonsMetadata

Description

Metadata for action reasons

Fields
Field Name Description
id - ID! ID of the reason for proposal to switch to current status.
reason - String Reason description text
alias - String Reason alias or code
Example
{
  "id": 4,
  "reason": "xyz789",
  "alias": "abc123"
}
Metadata

Region

Description

Geographic region information

Fields
Field Name Description
id - ID! Region identifier
name - String! Region name
parentRegion - Region Parent region if nested
Example
{
  "id": "4",
  "name": "abc123",
  "parentRegion": Region
}
Metadata

RequestMetadata

Description

Request metadata

Fields
Field Name Description
sudo - Boolean! Indicates whether request is executed with elevated privileges Indicates whether request performed in sudo mode
internal - Boolean! Indicates whether request originates from internal systems Indicates whether request performed internally
Example
{"sudo": true, "internal": true}
Metadata

TimeZoneRecord

Description

Timezone record information

Fields
Field Name Description
timeZoneName - String! Timezone name
timeZoneDescription - String Timezone description
Example
{
  "timeZoneName": "xyz789",
  "timeZoneDescription": "xyz789"
}
Metadata

Visitor

Description

Anonymous visitor data and segmentation information

Fields
Field Name Description
i18n - VisitorI18N Internationalization settings for a visitor based on country
Arguments
countryName - String!

Country display name

visitorId - ID

Optional visitor identifier

segment - VisitorSegment Query to look up visitor segment data based on visitorId and the respective segment name
Arguments
visitorId - ID!

Visitor identifier

segmentName - String!

Segment name

Example
{
  "i18n": VisitorI18N,
  "segment": VisitorSegment
}
Metadata

VisitorI18N

Description

Visitor internationalization settings including location and feature flags

Fields
Field Name Description
countrySupported - Boolean Whether the visitor's country is supported
status - String Current i18n status
locationViewType - String Type of location view to display
userPreferredLocationType - String User's preferred location type setting
settingsFlags - VisitorI18NSettings Feature flags for i18n settings
Example
{
  "countrySupported": true,
  "status": "xyz789",
  "locationViewType": "abc123",
  "userPreferredLocationType": "xyz789",
  "settingsFlags": VisitorI18NSettings
}
Metadata

VisitorI18NSettings

Description

Feature flags controlling i18n-related UI elements

Fields
Field Name Description
showDomesticLocationFilterOnFLSearch - Boolean Show domestic location filter on freelancer search
showJobSearch - Boolean Show job search functionality
showPhoneVerification - Boolean Show phone verification prompt
showSmfToUpdateAddress - Boolean Show SMF to update address
showPersonalAddressAutocomplete - Boolean Show personal address autocomplete
showMessageContainer - Boolean Show message container
showLocationPreferenceOnJobPost - Boolean Show location preference on job post
defaultDomesticEnabled - Boolean Whether domestic location is enabled by default
jobSearchDefaultedToON - Boolean Whether job search is defaulted to ON
showLocationVerificationOnFWH - Boolean Show location verification on freelancer work history
domesticEnabledForFreelancersOnFLSearch - Boolean Whether domestic is enabled for freelancers on FL search
Example
{
  "showDomesticLocationFilterOnFLSearch": true,
  "showJobSearch": true,
  "showPhoneVerification": true,
  "showSmfToUpdateAddress": true,
  "showPersonalAddressAutocomplete": true,
  "showMessageContainer": false,
  "showLocationPreferenceOnJobPost": false,
  "defaultDomesticEnabled": true,
  "jobSearchDefaultedToON": true,
  "showLocationVerificationOnFWH": true,
  "domesticEnabledForFreelancersOnFLSearch": false
}
Metadata

VisitorSegment

Description

Visitor segmentation data for behavioral or demographic categorization

Fields
Field Name Description
visitorId - ID! Unique visitor identifier
segmentName - String Name of the segment
data - String Segment data payload
Example
{
  "visitorId": 4,
  "segmentName": "xyz789",
  "data": "xyz789"
}

Offers and Contracts

ActivateMilestoneInput

Description

Input for activating a milestone

Fields
Input Field Description
id - ID! Milestone ID
message - String Attached message
Example
{"id": 4, "message": "xyz789"}
Offers and Contracts

Actor

Description

Actor in offer workflow

Fields
Field Name Description
user - ID! user uid
team - ID team org uid
actorType - ActorType actor type
Example
{"user": 4, "team": 4, "actorType": "System"}
Offers and Contracts

ActorType

Description

Actor type in offer workflow

Values
Enum Value Description

System

System actor

AgencyManager

Agency manager

HiringManager

Hiring manager

ContactPerson

Contact person
Example
"System"
Offers and Contracts

AgreementKind

Description

Agreement kind

Values
Enum Value Description

Offer

Offer agreement

Contract

Contract agreement
Example
"Offer"
Offers and Contracts

ApproveMilestoneInput

Description

Input for approving a milestone

Fields
Input Field Description
id - ID! Milestone ID
paidAmount - String! Amount is in cents. For example 1000 represents 10 USD
bonusAmount - String Amount is in cents. For example 1000 represents 10 USD
paymentComment - String A comment attached to the payment
underpaymentReason - String The reason for underpayment
noteToContractor - String Note to contractor
Example
{
  "id": 4,
  "paidAmount": "abc123",
  "bonusAmount": "abc123",
  "paymentComment": "abc123",
  "underpaymentReason": "abc123",
  "noteToContractor": "xyz789"
}
Offers and Contracts

ClientFeedback

Description

Client's feedback details

Fields
Field Name Description
score - Float Numeric rating provided by the client
comment - String Client's written comment
freelancerResponse - String Freelancer's response to the client's feedback
Example
{
  "score": 987.65,
  "comment": "abc123",
  "freelancerResponse": "xyz789"
}
Offers and Contracts

ClosingReason

Description

Reason why a contract was closed

Fields
Field Name Description
id - ID! Reason identifier (UID)
apiRef - String External API reference code
reason - String Human-readable reason text
Example
{
  "id": "4",
  "apiRef": "xyz789",
  "reason": "xyz789"
}
Offers and Contracts

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
vendorProposal - VendorProposal Job Application associated with the contract
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
timeRange - DateTimeRange!
offset - Int
workDiaryTimeCells - [WorkDiaryTimeCell!] work diary of the current contract
Arguments
date - String!
offsetInSeconds - Int
feedback - Feedback Contract feedback summary
Example
{
  "id": 4,
  "title": "abc123",
  "contractType": "HOURLY",
  "job": MarketplaceJobPosting,
  "hasAgency": true,
  "offer": Offer,
  "clientProposal": ClientProposal,
  "vendorProposal": VendorProposal,
  "weeklyChargeAmount": Money,
  "weeklyHoursLimit": 123.45,
  "hourlyChargeRate": Money,
  "createdDateTime": "abc123",
  "firstContractStartDateTime": "xyz789",
  "modifiedDateTime": "xyz789",
  "startDateTime": "xyz789",
  "endDateTime": "xyz789",
  "manualTimeAllowed": false,
  "hideScreenshots": false,
  "last": true,
  "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
}
Offers and Contracts

ContractActionResponse

Fields
Field Name Description
success - Boolean! Defines success status
Example
{"success": false}
Offers and Contracts

ContractDetails

Description

Contract details including parties, terms, and metadata

Fields
Field Name Description
id - ID! Unique contract identifier (UID)
title - String Contract title shown to users
status - ContractStatus Current lifecycle status of the contract
closingReason - ClosingReason Reason explaining why the contract was closed
deliveryModel - DeliveryModel Delivery model for this contract (e.g., marketplace, catalog)
kind - ContractKind Contract kind/category (e.g., weekly retainer, payroll)
isPtc - Boolean Indicates if the contract belongs to a Private Talent Cloud
createDate - String dates Contract creation date
modifyDate - String Last modification date
startDate - String Contract start date
endDate - String Contract end date
offer - Offer offer and opening Offer associated with the contract
offerId - ID Offer identifier (UID) associated with the contract
job - JobPosting! Job posting associated with the contract
freelancer - ContractUser! contract vendor/freelancer data Freelancer party on the contract
vendorOrganization - GenericOrganization! Vendor organization associated with the freelancer
vendorTeam - GenericOrganization! Vendor team organization associated with the freelancer
clientOrganization - GenericOrganization! contract client and agency data Client organization on the contract
clientTeam - GenericOrganization! Client team organization on the contract
hiringManager - ContractUser Hiring manager for the contract
agencyManager - ContractUser Agency manager for the contract (if applicable)
supervisor - ContractUser! contract supervisor Current supervisor responsible for the contract
changingUserType - CreatorType contract changes Actor type of the last change (client, professional, system, etc.)
changedBy - ContractUser User who last changed the contract
endedBy - ContractUser User who ended the contract (if ended)
metadata - ContractMetadata Additional metadata for the contract
hourlyLimits - [HourlyLimit] contract terms Weekly hourly limit history for the contract
terms - ContractTerms Aggregated contract terms by engagement type
projectId - ID Project identifier (UID) associated with the contract
Example
{
  "id": "4",
  "title": "abc123",
  "status": "ACTIVE",
  "closingReason": ClosingReason,
  "deliveryModel": "TALENT_MARKETPLACE",
  "kind": "WEEKLY_RETAINER",
  "isPtc": true,
  "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,
  "projectId": 4
}
Offers and Contracts

ContractKind

Description

Business model of the contract

Values
Enum Value Description

WEEKLY_RETAINER

PAYROLL

STAFF_AUG

DIRECT_CONTRACT

Example
"WEEKLY_RETAINER"
Offers and Contracts

ContractList

Description

List of contract details entries

Fields
Field Name Description
contracts - [ContractDetails]
Example
{"contracts": [ContractDetails]}
Offers and Contracts

ContractMetadata

Description

Additional metadata flags for a contract

Fields
Field Name Description
agencyContract - Boolean
Example
{"agencyContract": false}
Offers and Contracts

ContractOfferConnection

Description

Paginated collection of contract offers

Fields
Field Name Description
totalCount - Int Total number of results
edges - [ContractOfferEdge] Connection edges
pageInfo - PageInfo Pagination information
Example
{
  "totalCount": 987,
  "edges": [ContractOfferEdge],
  "pageInfo": PageInfo
}
Offers and Contracts

ContractOfferEdge

Description

Edge wrapper containing a contract offer node

Fields
Field Name Description
cursor - String! Pagination cursor
node - ContractOfferResult Contract offer result node
Example
{
  "cursor": "xyz789",
  "node": ContractOfferResult
}
Offers and Contracts

ContractOfferLastEvent

Description

Last event on contract offer

Fields
Field Name Description
reasonId - ID Reason identifier
message - String Event message
lastEventTime - String Last event timestamp
Example
{
  "reasonId": 4,
  "message": "xyz789",
  "lastEventTime": "abc123"
}
Offers and Contracts

ContractOfferLegacyState

Description

Legacy offer state values

Values
Enum Value Description

Draft

Draft state

DraftChanged

Draft changed

New

New offer

Accepted

Offer accepted

Declined

Offer declined

Expired

Offer expired

Withdrawn

Offer withdrawn

Changed

Offer changed

Canceled

Offer canceled

Submitted

Offer submitted
Example
"Draft"
Offers and Contracts

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! Result identifier
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 Whether this is a catalog project
Example
{
  "id": "4",
  "company": GenericOrganization,
  "team": GenericOrganization,
  "contactPerson": GenericUser,
  "freelancer": GenericUser,
  "agency": GenericOrganization,
  "startDateTime": "xyz789",
  "endDateTime": "abc123",
  "type": "Hourly",
  "state": "Pending",
  "milestoneState": "NotFunded",
  "escrowRefundStatus": "Open",
  "title": "abc123",
  "lastUpdatedDateTime": "xyz789",
  "lastPublishedDateTime": "abc123",
  "inPrivateTalentCloud": false,
  "offerCreatedDateTime": "abc123",
  "offer": Offer,
  "contract": Contract,
  "contractDetails": ContractDetails,
  "catalogProject": false
}
Offers and Contracts

ContractOfferState

Description

Contract offer state

Values
Enum Value Description

Pending

Offer is pending

Active

Offer is active

Paused

Offer is paused

Ended

Offer has ended
Example
"Pending"
Offers and Contracts

ContractOfferTermsVersion

Description

Contract offer terms version

Values
Enum Value Description

V1

Version 1

V2

Version 2
Example
"V1"
Offers and Contracts

ContractOfferType

Description

Contract offer type

Values
Enum Value Description

Hourly

Hourly rate contract

FixedPrice

Fixed price contract
Example
"Hourly"
Offers and Contracts

ContractOfferVendorType

Description

Vendor type for contract offer

Values
Enum Value Description

FREELANCER

Individual freelancer

AGENCY

Agency
Example
"FREELANCER"
Offers and Contracts

ContractOptionsInput

Description

Options controlling additional data in contract queries

Fields
Input Field Description
addTerms - Boolean Flag to add terms to result or not, default false, optional
addHourLimits - Boolean Flag to add hourly limits to results or not, default false, optional
Example
{"addTerms": false, "addHourLimits": false}
Offers and Contracts

ContractPaging

Description

Paging information for contract result lists

Fields
Field Name Description
limit - Int Max number of records to return
offset - Int Number of records to skip
Example
{"limit": 987, "offset": 123}
Offers and Contracts

ContractPagingInput

Description

Offset/limit pagination options for contract lists

Fields
Input Field Description
limit - Int Number of results, optional, default 10
offset - Int Number of records to skip, optional, default 0
includeTotalCount - Boolean Flag to include total count in response, optional, default false
Example
{"limit": 987, "offset": 987, "includeTotalCount": false}
Offers and Contracts

ContractProposal

Description

Freelancers can propose a contract to a client

Fields
Field Name Description
id - ID! Contract proposal identifier
state - String! Proposal state
updatedDateTime - String! Last updated timestamp
createdDateTime - String! Creation timestamp
canClientOfferBeAccepted - Boolean! Whether there is something that would prevent client offer from being accepted
Example
{
  "id": 4,
  "state": "xyz789",
  "updatedDateTime": "xyz789",
  "createdDateTime": "xyz789",
  "canClientOfferBeAccepted": true
}
Offers and Contracts

ContractSearchResults

Description

Results of a contract search with paging information

Fields
Field Name Description
paging - ContractPaging Pagination details
contracts - [ContractDetails] Contracts returned by the search
Example
{
  "paging": ContractPaging,
  "contracts": [ContractDetails]
}
Offers and Contracts

ContractState

Description

Contract state values

Values
Enum Value Description

ACTIVE

Contract is active

CLOSED

Contract is closed

PAUSED

Contract is paused

PENDING

Contract is pending

CANCELLED

Contract is cancelled
Example
"ACTIVE"
Offers and Contracts

ContractStatus

Description

Current lifecycle status of a contract

Values
Enum Value Description

ACTIVE

CLOSED

PAUSED

Example
"ACTIVE"
Offers and Contracts

ContractTerms

Description

Contract terms grouped by engagement model

Fields
Field Name Description
fixedPriceTerms - [FixedPriceContractTerm] Fixed-price terms history
hourlyTerms - [HourlyContractTerm] Hourly terms history
stipendTerms - [StipendContractTerm] Stipend terms history
Example
{
  "fixedPriceTerms": [FixedPriceContractTerm],
  "hourlyTerms": [HourlyContractTerm],
  "stipendTerms": [StipendContractTerm]
}
Offers and Contracts

ContractUser

Description

Person referenced in a contract context

Fields
Field Name Description
id - ID! User identifier (UID)
rid - ID! User record identifier (RID)
name - String Display name (e.g., John S.)
photoUrl - String URL to the user's profile photo
firstName - String First name
lastName - String Last name
address - UserLocation Postal address
email - String Email address
Example
{
  "id": "4",
  "rid": 4,
  "name": "xyz789",
  "photoUrl": "xyz789",
  "firstName": "abc123",
  "lastName": "abc123",
  "address": UserLocation,
  "email": "abc123"
}
Offers and Contracts

CreateMilestoneInput

Description

Input for creating a milestone

Fields
Input Field Description
offerId - ID Related offer ID
contractId - ID Related contract ID
description - String Milestone description
instruction - String Applicable instruction
depositAmount - String Amount is in cents. For example 1000 represents 10 USD
dueDate - String Due date requirement
attachmentIds - [ID!] The list of attachments' IDs (For Internal Usage Only)
Example
{
  "offerId": 4,
  "contractId": "4",
  "description": "abc123",
  "instruction": "xyz789",
  "depositAmount": "abc123",
  "dueDate": "xyz789",
  "attachmentIds": ["4"]
}
Offers and Contracts

CreateOfferDeliveryModelInput

Description

Delivery model options for offer creation

Values
Enum Value Description

TalentMarketplace

Talent marketplace delivery
Example
"TalentMarketplace"
Offers and Contracts

CreationOfferInput

Description

Input for creating an offer

Fields
Input Field Description
interactive - Boolean Whether offer creation is interactive. Default = true
idempotencyKey - String Idempotency key for request deduplication
ignoreTestAccount - Boolean Whether to ignore test account checks
kind - OfferKindInput! Kind of offer being created
offeror - OfferorInput! Who is making the offer
clientTeamId - ID! Client team identifier
vendorUser - VendorUserInput! Vendor user information
metadata - OfferMetadataInput! Offer metadata
attachments - [String!] Attachment identifiers. Default = []
title - String! Offer title
description - String Offer description
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 Hourly rate terms
stipendTerms - OfferStipendTerms Stipend terms
milestoneTerms - OfferMilestoneTerms Milestone terms
deliveryModel - CreateOfferDeliveryModelInput! Delivery model
closeOnAccept - Boolean False by default. Default = false
scheduledRateIncrease - OfferScheduledRateIncreaseInput only allowed for Marketplace offers
customFields - [StringMapElementInput] Custom fields
offerLocation - OfferLocationInput Offer location details
offerPayroll - OfferPayrollInput Offer payroll details
Example
{
  "interactive": false,
  "idempotencyKey": "abc123",
  "ignoreTestAccount": false,
  "kind": "Vanilla",
  "offeror": "Client",
  "clientTeamId": "4",
  "vendorUser": VendorUserInput,
  "metadata": OfferMetadataInput,
  "attachments": ["abc123"],
  "title": "xyz789",
  "description": "xyz789",
  "contractStartDateTime": "xyz789",
  "contractEndDateTime": "abc123",
  "hourlyRateTerms": OfferHourlyRateTerms,
  "stipendTerms": OfferStipendTerms,
  "milestoneTerms": OfferMilestoneTerms,
  "deliveryModel": "TalentMarketplace",
  "closeOnAccept": false,
  "scheduledRateIncrease": OfferScheduledRateIncreaseInput,
  "customFields": [StringMapElementInput],
  "offerLocation": OfferLocationInput,
  "offerPayroll": OfferPayrollInput
}
Offers and Contracts

CreatorType

Description

Actor type associated with contract changes and events

Values
Enum Value Description

CLIENT

PROFESSIONAL

ODESK_SUPPORT

ACFP

UPWORK_SUPPORT

SYSTEM

AUTO_PAY_FP

CATALOG_PROJECT

PAYROLL

Example
"CLIENT"
Offers and Contracts

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: for eg: TEAM:13343888. COMPANY indicates the custom field has an acces level at the root organization. And TEAM: indicates access only under a specific team with that
Example
{
  "responseId": "4",
  "id": "4",
  "itemId": 4,
  "typeSnap": "TEXT_FIELD",
  "labelSnap": "abc123",
  "displayValueSnap": "abc123",
  "creator": GenericUser,
  "createdDateTime": DateTime,
  "rollupAssignmentId": "4",
  "firstContractId": "4",
  "offerId": 4,
  "jobPostingId": 4,
  "byoInvitationId": 4,
  "buyItNowId": "4",
  "questionnaireResponsesId": "4",
  "stale": true,
  "termSectionId": 4,
  "aclSnap": "xyz789"
}
Offers and Contracts

CustomFieldsConnection

Description

Custom field connection

Fields
Field Name Description
edges - [CustomFieldsEdge] Connection edges for paginated results
pageInfo - PageInfo Pagination information
Example
{
  "edges": [CustomFieldsEdge],
  "pageInfo": PageInfo
}
Offers and Contracts

CustomFieldsEdge

Description

Custom field connection edge

Fields
Field Name Description
cursor - String! Cursor for the edge
node - CustomFields Node containing a custom field snapshot
Example
{
  "cursor": "abc123",
  "node": CustomFields
}
Offers and Contracts

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]
}
Offers and Contracts

CustomFieldsTypeSnap

Description

Snapshot of custom field type metadata

Values
Enum Value Description

TEXT_FIELD

TEXT_AREA

DROP_DOWN_LIST

NUMERIC

BOOLEAN

DROP_DOWN_LIST_MULTIPLE_SELECT

CURRENCY

PO_NUMBER

Example
"TEXT_FIELD"
Offers and Contracts

DeleteMilestoneInput

Description

Input for deleting a milestone

Fields
Input Field Description
id - ID! Milestone ID
Example
{"id": "4"}
Offers and Contracts

DeliveryModel

Description

Delivery models supported for contracts

Values
Enum Value Description

TALENT_MARKETPLACE

CATALOG_PROJECT

UPWORK_REMOTE

TALENT_SCOUT

DIRECT_CONTRACT

MICROPAYMENTS

DIRECT_CONTRACT_V2

MANAGE_AND_PAY

OUTCOME_CONTRACT

UNKNOWN

Example
"TALENT_MARKETPLACE"
Offers and Contracts

EditMilestoneInput

Description

Input for editing a milestone

Fields
Input Field Description
id - ID! Milestone ID
description - String Milestone description
instructions - String Application instructions
depositAmount - String Amount is in cents. For example 1000 represents 10 USD
dueDate - String Due date requirement
attachments - [ID!] The list of attachments' IDs (For Internal Usage Only)
message - String Attached message
sequenceId - Int Sequence ID
Example
{
  "id": "4",
  "description": "abc123",
  "instructions": "abc123",
  "depositAmount": "xyz789",
  "dueDate": "xyz789",
  "attachments": ["4"],
  "message": "abc123",
  "sequenceId": 987
}
Offers and Contracts

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": "abc123",
  "feedbackInfo": FeedbackInfoInput,
  "reasonRef": "xyz789"
}
Offers and Contracts

EscrowRefundStatus

Description

Escrow refund status

Values
Enum Value Description

Open

Refund is open

Disputed

Refund is disputed

Accepted

Refund accepted

Expired

Refund expired
Example
"Open"
Offers and Contracts

Feedback

Description

Client and freelancer feedback for a contract

Fields
Field Name Description
clientFeedback - ClientFeedback Feedback provided by the client about the freelancer
freelancerFeedback - FreelancerFeedback Feedback provided by the freelancer about the client
Example
{
  "clientFeedback": ClientFeedback,
  "freelancerFeedback": FreelancerFeedback
}
Offers and Contracts

FeedbackInfoInput

Fields
Input Field Description
availabilityScore - Int Availability score
comment - String Comment
communicationScore - Int Communication score
cooperationScore - Int Cooperation score
deadlinesScore - Int Deadlines score
qualityScore - Int Quality score
skillsScore - Int Skills score
Example
{
  "availabilityScore": 123,
  "comment": "abc123",
  "communicationScore": 987,
  "cooperationScore": 987,
  "deadlinesScore": 987,
  "qualityScore": 987,
  "skillsScore": 987
}
Offers and Contracts

FixedPriceContractTerm

Description

Fixed price contract term including amounts and milestones

Fields
Field Name Description
id - ID! Term identifier (UID)
fpCharge - Money Fixed price charge amount
fixedAmount - Money Fixed amount agreed for the term
createDate - String Creation date of the term
modifyDate - String Last modification date of the term
changeDate - String Effective change date
createdBy - ContractUser User who created the term
creatorUserType - CreatorType Actor type for the creator
changedBy - ContractUser User who last changed the term
startDate - String Start date of the term
changingUserType - CreatorType Actor type for the last change
isFP2 - Boolean Indicates usage of FP2
endDate - String End date of the term
jobType - JobType Engagement payment type for the term
ptcData - PtcData Protected time calculation period
milestones - [Milestone] Milestones under this fixed-price term
Example
{
  "id": 4,
  "fpCharge": Money,
  "fixedAmount": Money,
  "createDate": "abc123",
  "modifyDate": "abc123",
  "changeDate": "xyz789",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "startDate": "xyz789",
  "changingUserType": "CLIENT",
  "isFP2": false,
  "endDate": "xyz789",
  "jobType": "FIXED",
  "ptcData": PtcData,
  "milestones": [Milestone]
}
Offers and Contracts

FixedPriceTerm

Description

Terms for fixed priced offer

Fields
Field Name Description
budget - Money Fixed price budget
Example
{"budget": Money}
Offers and Contracts

FreelancerFeedback

Description

Freelancer's feedback details

Fields
Field Name Description
score - Float Numeric rating provided by the freelancer
comment - String Freelancer's written comment
clientResponse - String Client's response to the freelancer's feedback
recommendScore - Int Likelihood to recommend working with the client
Example
{
  "score": 987.65,
  "comment": "xyz789",
  "clientResponse": "xyz789",
  "recommendScore": 987
}
Offers and Contracts

HourlyContractTerm

Description

Hourly contract term including rate and dates

Fields
Field Name Description
id - ID! Term identifier (UID)
hourlyRate - Money Hourly rate applied during the term
createDate - String Creation date of the term
modifyDate - String Last modification date of the term
changeDate - String Effective change date
createdBy - ContractUser User who created the term
creatorUserType - CreatorType Actor type for the creator
changedBy - ContractUser User who last changed the term
startDate - String Start date of the term
changingUserType - CreatorType Actor type for the last change
manualTimeAllowed - Boolean Whether manual time is allowed during the term
endDate - String End date of the term
jobType - JobType Engagement payment type for the term
ptcData - PtcData Protected time calculation period
Example
{
  "id": "4",
  "hourlyRate": Money,
  "createDate": "xyz789",
  "modifyDate": "abc123",
  "changeDate": "xyz789",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "startDate": "abc123",
  "changingUserType": "CLIENT",
  "manualTimeAllowed": false,
  "endDate": "xyz789",
  "jobType": "FIXED",
  "ptcData": PtcData
}
Offers and Contracts

HourlyLimit

Description

Weekly hourly limit period and identifiers

Fields
Field Name Description
id - ID! Hourly limit record identifier (UID)
weeklyLimit - String Maximum weekly hours permitted
createDate - String Record creation date
modifyDate - String Last modification date
startDate - String Period start date
endDate - String Period end date
legacyId - Int Legacy identifier (integer)
Example
{
  "id": "4",
  "weeklyLimit": "xyz789",
  "createDate": "abc123",
  "modifyDate": "abc123",
  "startDate": "abc123",
  "endDate": "abc123",
  "legacyId": 123
}
Offers and Contracts

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": 987,
  "weeklyStipend": Money,
  "manualTimeAllowed": true
}
Offers and Contracts

JobType

Description

Engagement payment type associated with a contract

Values
Enum Value Description

FIXED

HOURLY

Example
"FIXED"
Offers and Contracts

Metadata

Description

Offer 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": "xyz789",
  "occupationUid": 4
}
Offers and Contracts

Milestone

Description

Milestone information for fixed-price contracts

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 Current escrow amount
depositAmount - Money Deposit amount
fundedAmount - Money Funded amount
paid - Money Amount paid
overpayment - Money Overpayment amount
bonus - Money Bonus amount
previousMilestoneUnusedDeposit - Money Unused deposit from previous milestone
submissionCount - Int Number of submissions
sequenceId - Int The sequence in which the milestone is to be executed
payComments - String Payment comments
lastSubmissionCreatedTime - String Last submission creation time
createdDateTime - String Creation date for the milestone
modifiedDateTime - String Update date for the milestone
instructions - String Milestone instructions
submissionEvents - [SubmissionEvent!]! Submission events
Example
{
  "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": 987,
  "sequenceId": 987,
  "payComments": "abc123",
  "lastSubmissionCreatedTime": "abc123",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "abc123",
  "instructions": "abc123",
  "submissionEvents": [SubmissionEvent]
}
Offers and Contracts

MilestoneRejectionResponse

Description

Result of milestone rejection request

Fields
Field Name Description
response - Boolean Whether rejection was successful
Example
{"response": false}
Offers and Contracts

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]
}
Offers and Contracts

ModernizedContractOffer

Description

Modernized contract offer details

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": "xyz789",
  "description": "abc123",
  "attachments": ["4"],
  "contractStartDateTime": "abc123",
  "contractEndDateTime": "abc123",
  "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": "abc123"
}
Offers and Contracts

ModernizedContractOfferList

Description

List of modernized contract offers

Fields
Field Name Description
offers - [ModernizedContractOffer] list of offers
Example
{"offers": [ModernizedContractOffer]}
Offers and Contracts

ModernizedOffer

Description

Modernized offer details

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": "abc123",
  "title": "abc123",
  "description": "xyz789",
  "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
}
Offers and Contracts

NotificationsInput

Description

Notification configurations

Fields
Input Field Description
notifyClient - Boolean Notify client
notifyVendor - Boolean Notify vendor
sendDash2ContractRoom - Boolean Notify contract room
Example
{"notifyClient": false, "notifyVendor": true, "sendDash2ContractRoom": false}
Offers and Contracts

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! Terms associated with the offer
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
organizationIds - [ID!]

Filter responses by accessible organizations

pagination - Pagination

Pagination options

Example
{
  "id": "4",
  "title": "abc123",
  "description": "abc123",
  "type": "MARKET_PLACE_HOURLY",
  "job": MarketplaceJobPosting,
  "vendorProposal": VendorProposal,
  "closeJobPostingOnAccept": true,
  "client": GenericOrganization,
  "offerTerms": OfferTerms,
  "messageToContractor": "xyz789",
  "state": "DRAFT",
  "offerFeatures": OfferFeatures,
  "clientCompany": PublicCompanyInfo,
  "milestones": [Milestone],
  "createdUsingBYOFlow": false,
  "freelancer": FreelancerProfile,
  "payrollOffer": false,
  "deliveryModel": "TalentMarketplace",
  "customFields": CustomFieldsConnection
}
Offers and Contracts

OfferAddressInput

Description

Address input for offer location

Fields
Input Field Description
addressLine - String Street address
suite - String Suite number
zip - String ZIP code
Example
{
  "addressLine": "xyz789",
  "suite": "xyz789",
  "zip": "abc123"
}
Offers and Contracts

OfferByClientFilter

Description

Filter for offers by client

Fields
Input Field Description
teamId_any - [ID!] Filter by team IDs
contactPersonId_any - [ID!] Filter by contact person IDs
offerType_any - [ContractOfferType!] Filter by offer types
milestoneState_any - [OfferMilestoneState!] Filter by milestone states
escrowRefundStatus_any - [EscrowRefundStatus!] Filter by escrow refund statuses
freelancerId_any - [ID!] Filter by freelancer IDs
agreementKind_any - [AgreementKind!] Filter by agreement kinds
commonFilter - OfferSearchCommonFilter Common filter criteria
Example
{
  "teamId_any": [4],
  "contactPersonId_any": ["4"],
  "offerType_any": ["Hourly"],
  "milestoneState_any": ["NotFunded"],
  "escrowRefundStatus_any": ["Open"],
  "freelancerId_any": [4],
  "agreementKind_any": ["Offer"],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferByRootCompanyFilter

Description

Filter for offers by root company

Fields
Input Field Description
freelancerId_any - [ID!] Filter by freelancer IDs
agencyTeamOrgId_any - [ID!] Filter by agency team organization IDs
clientOrgId_any - [ID!] Filter by client organization IDs
commonFilter - OfferSearchCommonFilter Common filter criteria
Example
{
  "freelancerId_any": ["4"],
  "agencyTeamOrgId_any": ["4"],
  "clientOrgId_any": ["4"],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferCreationResponse

Description

Response from offer creation

Fields
Field Name Description
offer - ModernizedOffer Created offer
Example
{"offer": ModernizedOffer}
Offers and Contracts

OfferDeliveryModel

Description

Offer delivery model

Values
Enum Value Description

TalentMarketplace

Talent marketplace delivery

CatalogProject

Catalog project delivery

UpworkRemote

Upwork remote delivery

TalentScout

Talent scout delivery

DirectContract

Direct contract delivery

MicroPayments

Micro payments delivery

DirectContractV2

Direct contract V2 delivery

ManageAndPay

Manage and pay delivery

OutcomeContract

Outcome contract delivery

Unknown

Unknown delivery model
Example
"TalentMarketplace"
Offers and Contracts

OfferFeatures

Description

Features associated with the enterprise related offer

Fields
Field Name Description
purchaseOrder - PurchaseOrder Purchase order information
privateTalentCloud - PrivateTalentCloud Private talent cloud information
onSiteType - OfferWorkType On-site work type requirement
country - Country Country requirement
state - String State requirement
localDescription - String Local work description
localFlexibilityDescription - String Local flexibility description
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": "abc123",
  "localDescription": "xyz789",
  "localFlexibilityDescription": "xyz789",
  "eor": true
}
Offers and Contracts

OfferForFreelancerFilter

Description

Filter for offers for freelancer

Fields
Input Field Description
agencyRootCompanyOrgId_any - [ID!] Filter by agency root company organization IDs
agencyTeamOrgId_any - [ID!] Filter by agency team organization IDs
clientOrgId_any - [ID!] Filter by client organization IDs
commonFilter - OfferSearchCommonFilter Common filter criteria
Example
{
  "agencyRootCompanyOrgId_any": ["4"],
  "agencyTeamOrgId_any": [4],
  "clientOrgId_any": [4],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferHourlyRateTerms

Description

Hourly rate terms for hourly offers

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 Whether manual time entry is allowed. Default = false
Example
{
  "vendorRate": MoneyInput,
  "weeklyLimit": "abc123",
  "manualTimeAllowed": true
}
Offers and Contracts

OfferKind

Description

Offer kind types

Values
Enum Value Description

HourlyPack

Hourly pack offer

WeeklyRetainer

Weekly retainer offer

Vanilla

Vanilla offer

PayrollENT

Payroll enterprise offer

BYO

Bring your own offer

Enterprise

Enterprise offer

PayrollRMT

Payroll remote offer
Example
"HourlyPack"
Offers and Contracts

OfferKindInput

Description

Offer kind types

Values
Enum Value Description

Vanilla

Standard marketplace offer

Enterprise

Enterprise
Example
"Vanilla"
Offers and Contracts

OfferLastEvent

Description

Last event on offer

Fields
Field Name Description
reasonId - ID Reason identifier
message - String Event message
lastEventTime - String Last event timestamp
Example
{
  "reasonId": 4,
  "message": "xyz789",
  "lastEventTime": "abc123"
}
Offers and Contracts

OfferLegacyState

Description

Legacy offer state values

Values
Enum Value Description

Draft

Draft state

DraftChanged

Draft changed

New

New offer

Accepted

Offer accepted

Declined

Offer declined

Expired

Offer expired

Withdrawn

Offer withdrawn

Changed

Offer changed

Canceled

Offer canceled

Submitted

Offer submitted
Example
"Draft"
Offers and Contracts

OfferList

Description

List of offers

Fields
Field Name Description
offers - [Offer] list of offers
Example
{"offers": [Offer]}
Offers and Contracts

OfferLocationInput

Description

Location information for offer

Fields
Input Field Description
workType - OfferWorkType Work type (remote or on-site)
country - String Can be retrieved by Query countries: [Country!]!
state - String Can be retrieved by Query location{state}
description - String Location description
flexible - Boolean Whether location is flexible
flexibilityDescription - String Flexibility description
city - String Can be retrieved by Query location{state}
address - OfferAddressInput Address details
Example
{
  "workType": "REMOTE",
  "country": "xyz789",
  "state": "xyz789",
  "description": "xyz789",
  "flexible": true,
  "flexibilityDescription": "abc123",
  "city": "xyz789",
  "address": OfferAddressInput
}
Offers and Contracts

OfferMetadataInput

Description

Offer metadata and source information

Fields
Input Field Description
sourceType - SourceTypeInput! Source type of the offer
sourceId - ID

Following options available:

  • sourceType=JobPosting, sourceId must contain job posting ID
  • sourceType=JobApplication, sourceId must contain application ID and jobPostingId=Job posting id
  • sourceType=Direct, sourceId must be null
occupationId - ID Required for Direct offer
jobPostingId - ID Job posting identifier
data - String Additional metadata
checkoutId - ID Checkout identifier
Example
{
  "sourceType": "JobPosting",
  "sourceId": "4",
  "occupationId": 4,
  "jobPostingId": 4,
  "data": "abc123",
  "checkoutId": 4
}
Offers and Contracts

OfferMilestoneState

Description

Milestone state values

Values
Enum Value Description

NotFunded

Milestone not funded

InOffer

Milestone in offer

Active

Milestone is active

Submitted

Milestone submitted

Rejected

Milestone rejected

RejectedByUpwork

Milestone rejected by Upwork

Paid

Milestone paid

PaidByUpwork

Milestone paid by Upwork

NotFundedClosed

Not funded and closed

CancelledByClient

Cancelled by client

CancelledByFreelancer

Cancelled by freelancer

CancelledByUpwork

Cancelled by Upwork

OfferCancelled

Offer cancelled
Example
"NotFunded"
Offers and Contracts

OfferMilestoneTerms

Description

Milestone terms for fixed-price offers

Fields
Input Field Description
budget - MoneyInput! milestone amount in the lowest currency denominations (so USD 49.12 would be 4912)
milestoneList - [OfferTermsMilestoneInput!]! List of milestones
Example
{
  "budget": MoneyInput,
  "milestoneList": [OfferTermsMilestoneInput]
}
Offers and Contracts

Offeror

Description

Offeror type

Values
Enum Value Description

Client

Client is offeror

Vendor

Vendor is offeror
Example
"Client"
Offers and Contracts

OfferorInput

Description

Offeror input type

Values
Enum Value Description

Client

Client is offeror
Example
"Client"
Offers and Contracts

OfferPayrollInput

Description

Payroll information for offer

Fields
Input Field Description
talentCloudId - ID Talent cloud identifier
purchaseOrderId - ID Purchase order identifier
assets - [String!] Asset identifiers
Example
{
  "talentCloudId": "4",
  "purchaseOrderId": "4",
  "assets": ["xyz789"]
}
Offers and Contracts

OfferPeriodTypeInput

Description

Stipend period types

Values
Enum Value Description

Weekly

Weekly period
Example
"Weekly"
Offers and Contracts

OfferScheduledRateIncreaseInput

Description

Scheduled rate increase configuration

Fields
Input Field Description
rate - String Rate increase amount
cadenceMonths - Int Cadence in months. Default = 0
Example
{"rate": "abc123", "cadenceMonths": 123}
Offers and Contracts

OfferSearchAttribute

Description

Offer search attribute types

Values
Enum Value Description

JobApplication

Search by job application

JobPosting

Search by job posting

ClientUser

Search by client user

VendorUser

Search by vendor user

ClientTeam

Search by client team

VendorTeam

Search by vendor team

ClientOrg

Search by client organization

VendorOrg

Search by vendor organization

Contract

Search by contract
Example
"JobApplication"
Offers and Contracts

OfferSearchCommonFilter

Description

Common filter fields for offer search

Fields
Input Field Description
text_eq - String Text search filter
states_any - [ContractOfferState!] Filter by offer states
startDatePeriod_bt - [String!] Filter by start date period
endDatePeriod_bt - [String!] Filter by end date period
catalogProject - Boolean Filter by catalog project flag
Example
{
  "text_eq": "xyz789",
  "states_any": ["Pending"],
  "startDatePeriod_bt": ["xyz789"],
  "endDatePeriod_bt": ["abc123"],
  "catalogProject": true
}
Offers and Contracts

OfferState

Description

Offer state values

Values
Enum Value Description

DRAFT

Offer is in draft

DISCARDED

Offer is discarded

SUBMITTED

Offer is submitted

WITHDRAWN

Offer is withdrawn

REPLACED

Offer is replaced

AWAITING_APPROVAL

Awaiting approval

APPROVED

Offer is approved

PENDING_VENDOR_ACCEPTANCE

Pending vendor acceptance

PENDING_VENDOR_ACCEPTANCE_AFTER_REMINDER

Pending vendor acceptance after reminder

ACCEPTED

Offer is accepted

REJECTED

Offer is rejected

FAILED

Offer failed

EXPIRED

Offer expired

CANCELED

Offer canceled

DENIED

Offer denied

PENDING_FUND

Pending funding

FUNDING_FAILED

Funding failed

FUNDED

Offer funded

DELETED

Offer deleted
Example
"DRAFT"
Offers and Contracts

OfferStipendTerms

Description

Stipend terms for stipend-based offers

Fields
Input Field Description
stipend - MoneyInput! periodic stipend
vendorRate - MoneyInput! Vendor rate
period - OfferPeriodTypeInput! Stipend period
Example
{
  "stipend": MoneyInput,
  "vendorRate": MoneyInput,
  "period": "Weekly"
}
Offers and Contracts

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
}
Offers and Contracts

OfferTermsMilestoneInput

Description

Individual milestone definition

Fields
Input Field Description
amount - MoneyInput! milestone amount in the lowest currency denominations (so USD 49.12 would be 4912)
description - String! Milestone description
dueDate - String milestone due date in yyyy-MM-dd format
instructions - String Milestone instructions
attachments - [String!] Attachment identifiers. Default = []
Example
{
  "amount": MoneyInput,
  "description": "abc123",
  "dueDate": "abc123",
  "instructions": "xyz789",
  "attachments": ["abc123"]
}
Offers and Contracts

OfferType

Description

Offer type values

Values
Enum Value Description

MARKET_PLACE_HOURLY

Marketplace hourly offer

MARKET_PLACE_FIXED_PRICE

Marketplace fixed price offer

ENTERPRISE_HOURLY

Enterprise hourly offer

ENTERPRISE_FIXED_PRICE

Enterprise fixed price offer
Example
"MARKET_PLACE_HOURLY"
Offers and Contracts

OfferWorkType

Description

Work type for offer

Values
Enum Value Description

REMOTE

Remote work

PERMANENT

Permanent on-site work
Example
"REMOTE"
Offers and Contracts

PeriodType

Description

Period type for stipend

Values
Enum Value Description

Weekly

Weekly period

Monthly

Monthly period
Example
"Weekly"
Offers and Contracts

PtcData

Description

Period dates for protected time calculation

Fields
Field Name Description
startDate - String Protected time start date
endDate - String Protected time end date
Example
{
  "startDate": "xyz789",
  "endDate": "abc123"
}
Offers and Contracts

PurchaseOrder

Description

Purchase order information

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 ACL specification
archived - Boolean! Whether PO is archived
placeHolder - Boolean! True if "I don't have it yet" is enabled and selected
createdAtDateTime - String! Creation timestamp
creator - GenericUser! User who created the PO
alertThreshold - String Percentage of spend used at which point user shall be notified
notificationAlcType - PurchaseOrderNotificationAclType Controls who gets notified
notificationAlcSpecification - String Notification ACL specification
Example
{
  "id": 4,
  "orderNumber": "xyz789",
  "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": "abc123"
}
Offers and Contracts

PurchaseOrderAclType

Description

Purchase order ACL type

Values
Enum Value Description

HMS_IN_COMPANY

Hiring managers in company

HMS_IN_TEAM

Hiring managers in team

USER_LIST

Specific user list
Example
"HMS_IN_COMPANY"
Offers and Contracts

PurchaseOrderNotificationAclType

Description

Purchase order notification ACL type

Values
Enum Value Description

ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY

All users with hiring permissions in company

USERS_WITH_HIRING_PERMISSIONS_IN_SELECTED_TEAMS

Users with hiring permissions in selected teams

SPECIFIC_USERS

Specific users

NONE

No notifications
Example
"ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY"
Offers and Contracts

RejectMilestoneSubmissionInput

Description

Input for rejecting a milestone submission

Fields
Input Field Description
id - ID! Milestone Submission ID
noteToContractor - String Note to contractor
attachments - [ID!] The list of attachments' IDs (For Internal Usage Only)
Example
{
  "id": "4",
  "noteToContractor": "abc123",
  "attachments": [4]
}
Offers and Contracts

SearchOffersByAttributesInput

Description

Input for searching offers by attributes

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": false
}
Offers and Contracts

SearchOffersInput

Description

Input for searching offers

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": 123,
  "page": 987,
  "ascendingOrder": true,
  "includeAttachments": false,
  "includeMilestones": true
}
Offers and Contracts

SourceType

Description

Source type for offer

Values
Enum Value Description

JobPosting

From job posting

JobApplication

From job application

Direct

Direct offer

ContractProposal

From contract proposal

Payroll

Payroll offer

TalentScout

From talent scout

CategoryUid

Category UID source

CategoryRef

Category reference source

CatalogProjectOrderUid

Catalog project order UID

UpworkRemote

Upwork remote source

BringYourOwn

Bring your own source
Example
"JobPosting"
Offers and Contracts

SourceTypeInput

Description

Offer source type

Values
Enum Value Description

JobPosting

From job posting

JobApplication

From job application

Direct

Direct offer
Example
"JobPosting"
Offers and Contracts

StipendContractTerm

Description

Stipend-based contract term including minimum hours and amount

Fields
Field Name Description
id - ID! Term identifier (string UID)
createDate - String Creation date of the term
modifyDate - String Last modification date of the term
changeDate - String Effective change date
createdBy - ContractUser User who created the term
creatorUserType - CreatorType Actor type for the creator
changedBy - ContractUser User who last changed the term
minGuaranteedHours - String Minimum guaranteed hours
stipendAmount - Money Stipend amount
startDate - String Start date of the term
changingUserType - CreatorType Actor type for the last change
endDate - String End date of the term
jobType - JobType Engagement payment type for the term
ptcData - PtcData Protected time calculation period
Example
{
  "id": 4,
  "createDate": "xyz789",
  "modifyDate": "abc123",
  "changeDate": "abc123",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "minGuaranteedHours": "xyz789",
  "stipendAmount": Money,
  "startDate": "abc123",
  "changingUserType": "CLIENT",
  "endDate": "xyz789",
  "jobType": "FIXED",
  "ptcData": PtcData
}
Offers and Contracts

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"
}
Offers and Contracts

Submission

Description

Milestone submission record

Fields
Field Name Description
id - ID! Submission identifier
createdDateTime - String Creation timestamp
modifiedDateTime - String Modification timestamp
amount - Money Submission amount
sequenceId - Int Sequence identifier
Example
{
  "id": 4,
  "createdDateTime": "abc123",
  "modifiedDateTime": "abc123",
  "amount": Money,
  "sequenceId": 123
}
Offers and Contracts

SubmissionEvent

Description

Milestone submission event and associated messages

Fields
Field Name Description
submission - Submission! Submission information
submissionMessage - SubmissionMessage Submission message
revisionMessage - SubmissionMessage Revision message
Example
{
  "submission": Submission,
  "submissionMessage": SubmissionMessage,
  "revisionMessage": SubmissionMessage
}
Offers and Contracts

SubmissionMessage

Description

Message attached to a milestone submission or revision

Fields
Field Name Description
createdDateTime - String Message creation timestamp
message - String Message text
Example
{
  "createdDateTime": "abc123",
  "message": "abc123"
}
Offers and Contracts

UpdateHourlyLimitRequestInput

Description

Update hourly limit request

Fields
Input Field Description
notifications - NotificationsInput Notification configurations
weeklyLimit - String Weekly hourly limit
Example
{
  "notifications": NotificationsInput,
  "weeklyLimit": "abc123"
}
Offers and Contracts

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 contractStatuses - List of contract statuses, optional Filter to search vendor contracts by date and status

Fields
Input Field Description
vendorId - ID!
startDateBefore - String
endDateAfter - String
contractStatuses - [ContractStatus]
Example
{
  "vendorId": 4,
  "startDateBefore": "abc123",
  "endDateAfter": "xyz789",
  "contractStatuses": ["ACTIVE"]
}
Offers and Contracts

VendorUserInput

Description

User info associated with the offer

Fields
Input Field Description
userId - ID! Vendor user identifier
teamId - ID! for agency offers, must be set to the agency team the offer belongs to; for individual freelancers must be set to freelancer's sole proprietor organization
Example
{"userId": 4, "teamId": 4}
Offers and Contracts

WithdrawOfferInput

Description

Input for withdrawing an offer

Fields
Input Field Description
offerId - ID! Offer identifier
message - String Message to vendor
withdrawalReason - WithdrawReason Withdrawal reason
Example
{
  "offerId": 4,
  "message": "abc123",
  "withdrawalReason": "OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER"
}
Offers and Contracts

WithdrawReason

Description

Reasons for withdrawing an offer

Values
Enum Value Description

OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER

Hired a different freelancer

OFFER_WITHDRAW_REASON_NO_LONGER_HIRING_FOR_THE_JOB

No longer hiring for the job

OFFER_WITHDRAW_REASON_NEED_TO_MODIFY

Need to modify the offer

OFFER_WITHDRAW_REASON_FREELANCER_UNRESPONSIVE

Freelancer is unresponsive

OFFER_WITHDRAW_REASON_SENT_BY_ACCIDENT

Offer sent by accident

OFFER_WITHDRAW_REASON_FREELANCER_VIOLATED_TERMS_OF_SERVICE

Freelancer violated terms of service

OFFER_WITHDRAW_REASON_OTHER_L1

Other reason

OFFER_WITHDRAW_REASON_NOT_AGREE_ON_THE_TERMS

Could not agree on terms

API_REAS_JOB_EXPIRED

Job expired

API_REAS_JOB_INAPPROPRIATE

Job was inappropriate
Example
"OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER"
Offers and Contracts

WorkflowOfferState

Description

Workflow offer state

Values
Enum Value Description

Submitted

Offer submitted

Active

Offer active

Expired

Offer expired

Declined

Offer declined

Withdrawn

Offer withdrawn

Accepted

Offer accepted

Replaced

Offer replaced

Canceled

Offer canceled

ApprovalSuceeded

Approval succeeded

ApprovalFailed

Approval failed

OnboardingSucceded

Onboarding succeeded

OnboardingFailed

Onboarding failed

Draft

Offer in draft

Committed

Offer committed
Example
"Submitted"

Ontology

CategoryServicesResponse

Fields
Field Name Description
categories - [Occupation!]! List of category occupations
categoryServices - [StringMapOccupation!]! Map of categories to their services
Example
{
  "categories": [Occupation],
  "categoryServices": [StringMapOccupation]
}
Ontology

Occupation

Description

Ontology entity

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.

  • Active: Skill is active and available for use
  • Deprecated: Skill has been deprecated
  • Pending: Skill has been created recently and is not active yet
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] Skills associated with this occupation
Example
{
  "id": 4,
  "ontologyId": "abc123",
  "type": ["OCCUPATION"],
  "entityStatus": "ACTIVE",
  "preferredLabel": "xyz789",
  "definition": "xyz789",
  "createdDateTime": "abc123",
  "modifiedDateTime": "xyz789",
  "skills": [Skill]
}
Ontology

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": "abc123",
  "altLabel": ["abc123"],
  "slug": "xyz789",
  "ontologyId": "abc123",
  "subcategories": [OntologySubcategory],
  "services": [OntologyService]
}
Ontology

OntologyConnection

Description

Ontology connection

Fields
Field Name Description
totalCount - Int Total number of entities matching the query
edges - [OntologyEntityEdge!] List of entity edges with pagination cursors
pageInfo - PageInfo Pagination information for navigating results
Example
{
  "totalCount": 987,
  "edges": [OntologyEntityEdge],
  "pageInfo": PageInfo
}
Ontology

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 = "match-start"

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": "abc123",
  "type": "OCCUPATION",
  "entityStatus_eq": "ACTIVE",
  "sortOrder": "xyz789",
  "limit": 987,
  "includeAttributeGroups": true
}
Ontology

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.

  • Active: Skill is active and available for use
  • Deprecated: Skill has been deprecated
  • Pending: Skill has been created recently and is not active yet
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

JobCategory

Occupation

Skill

Example
{
  "id": "4",
  "ontologyId": "xyz789",
  "type": ["OCCUPATION"],
  "entityStatus": "ACTIVE",
  "preferredLabel": "xyz789",
  "definition": "abc123",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "xyz789"
}
Ontology

OntologyEntityEdge

Description

Ontology entity

Fields
Field Name Description
node - OntologyEntity! The ontology entity at this edge
cursor - String! Cursor for pagination
Example
{
  "node": OntologyEntity,
  "cursor": "abc123"
}
Ontology

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": 987
}
Ontology

OntologyEntitySearchFilter

Fields
Input Field Description
ontologyIds_any - [ID!]!
Example
{"ontologyIds_any": [4]}
Ontology

OntologyEntitySearchRecord

Fields
Field Name Description
ontologyEntity - OntologyEntity! The ontology entity found in the search
Example
{"ontologyEntity": OntologyEntity}
Ontology

OntologyEntityStatus

Description

Defines the status of an occupation.

Values
Enum Value Description

ACTIVE

Skill is active and available for use

DEPRECATED

Skill has been deprecated

PENDING

Skill has been created recently and is not yet active
Example
"ACTIVE"
Ontology

OntologyEntityTaxonomyLevel

Values
Enum Value Description

CATEGORY

SUBCATEGORY

SERVICE

SPECIALIZATION

Example
"CATEGORY"
Ontology

OntologyEntityType

Description

Currently supported entity types

Values
Enum Value Description

OCCUPATION

SKILL

DELIVERABLE

DELIVERABLE_DESCRIPTOR

Example
"OCCUPATION"
Ontology

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

RANDOM

ALPHABET

MATCH_START

Example
"RANDOM"
Ontology

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": "xyz789",
  "altLabel": ["xyz789"],
  "slug": "xyz789",
  "ontologyId": "abc123"
}
Ontology

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": "abc123",
  "ontologyId": "xyz789",
  "services": [OntologyService]
}
Ontology

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.

  • Active: Skill is active and available for use
  • Deprecated: Skill has been deprecated
  • Pending: Skill has been created recently and is not yet active
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! Whether freelancers can select multiple attributes from this group
allowOther - Boolean! Defines if addition of free text answers is allowed
clientQuestion - String Question text shown to clients for this attribute group
clientTip - String Tip text shown to clients for this attribute group
freelancerQuestion - String Question text shown to freelancers for this attribute group
freelancerTip - String Tip text shown to freelancers for this attribute group
advancedClient - Boolean! Defines advanced attribute groups which are being displayed in the bottom of the page.
client - Boolean! Whether this attribute group is visible to clients
freelancer - Boolean! Whether this attribute group is visible to freelancers
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 Presentation mode for displaying this attribute group
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.

requires is linking an L3 to an attribute group and the inverse property links the same attribute group with that L3 through isRequiredBy

Example: "upworkOccupation:brandidentitydesign

isRequiredByIds - [ID]

This is the inverse property of upworkModel:requires. It links an attribute group with the L3 that requires it.

requires is linking an L3 to an attribute group and the inverse property links the same attribute group with that L3 through isRequiredBy

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": "abc123",
  "definition": "abc123",
  "altLabel": ["xyz789"],
  "narrower": ["abc123"],
  "narrowerIds": [4],
  "broader": ["xyz789"],
  "broaderIds": [4],
  "dependsOn": ["abc123"],
  "dependsOnIds": [4],
  "splitInto": ["xyz789"],
  "splitIntoIds": ["4"],
  "mergedInto": "abc123",
  "mergedIntoId": "4",
  "replacedBy": "xyz789",
  "replacedById": 4,
  "scopeNote": "abc123",
  "externalLink": ["xyz789"],
  "exactMatch": ["abc123"],
  "exactMatchIds": ["4"],
  "closeMatch": ["abc123"],
  "closeMatchIds": [4],
  "comment": "xyz789",
  "attributeLevel": ["xyz789"],
  "allowMultipleClient": false,
  "allowMultipleFreelancer": true,
  "allowOther": true,
  "clientQuestion": "abc123",
  "clientTip": "abc123",
  "freelancerQuestion": "abc123",
  "freelancerTip": "abc123",
  "advancedClient": false,
  "client": false,
  "freelancer": false,
  "requiredClient": true,
  "requiredFreelancer": false,
  "otherClientLabel": "xyz789",
  "otherFreelancerLabel": "abc123",
  "presentationMode": "abc123",
  "priority": 987,
  "isRequiredBy": ["abc123"],
  "isRequiredByIds": [4],
  "legacySkillNid": "abc123",
  "prettyName": "xyz789",
  "legacySkillId": "4"
}
Ontology

StringMapOccupation

Fields
Field Name Description
category - String! Category identifier
services - [Occupation!]! List of services for this category
Example
{
  "category": "xyz789",
  "services": [Occupation]
}

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": "abc123",
  "projectPlan": ProposalProjectPlan,
  "auditDetails": ProposalAuditDetails,
  "status": ClientProposalStatus,
  "annotations": ["Recommended"]
}
Proposals

ClientProposalAnnotation

Description

client proposal annotation

Values
Enum Value Description

Recommended

Shortlisted

Auto_Hidden

Read

Hidden

AiRecommended

Sponsored

Example
"Recommended"
Proposals

ClientProposalDeclineRequest

Description

client proposal decline request

Fields
Input Field Description
proposalId - ID! proposal to be declined
jobPostingId - ID! the jobPostingId of the proposal
reason - ID id of the reason from from the available reasons
otherReason - String other reason if not available
message - String optional message
Example
{
  "proposalId": "4",
  "jobPostingId": 4,
  "reason": 4,
  "otherReason": "abc123",
  "message": "abc123"
}
Proposals

ClientProposalEarnedAmount

Description

earnings amount

Values
Enum Value Description

ANY_AMOUNT_EARNED

DOLLOR_1_PLUS_EARNED

DOLLOR_100_PLUS_EARNED

DOLLOR_1K_PLUS_EARNED

DOLLOR_10K_PLUS_EARNED

NO_EARNINGS_YET

Example
"ANY_AMOUNT_EARNED"
Proposals

ClientProposalEnglishProficiency

Description

english proficiency level

Values
Enum Value Description

ANY_LEVEL

BASIC

CONVERSATIONAL

FLUENT

NATIVE_OR_BILINGUAL

Example
"ANY_LEVEL"
Proposals

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": "abc123",
  "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": "abc123",
  "country_any": ["xyz789"],
  "region_any": ["xyz789"],
  "languages_any": ["xyz789"],
  "occupationId": 4
}
Proposals

ClientProposalHideRequest

Description

client proposal hide request

Fields
Input Field Description
proposalId - ID! client proposal id
jobPostingId - ID! the jobPostingId of the proposal
hide - Boolean! to hide proposal or not?
hideReason - String reason for hiding
hideByClientReasonId - ID what is hideByClientReasonId?
Example
{
  "proposalId": "4",
  "jobPostingId": 4,
  "hide": true,
  "hideReason": "abc123",
  "hideByClientReasonId": "4"
}
Proposals

ClientProposalHourlyRate

Description

hourly rate

Values
Enum Value Description

ANY_HOURLY_RATE

DOLLOR_10_AND_BELOW

DOLLOR_10_TO_30

DOLLOR_30_TO_60

DOLLOR_60_AND_ABOVE

Example
"ANY_HOURLY_RATE"
Proposals

ClientProposalHoursBilled

Description

hours billed

Values
Enum Value Description

ANY_HOURS

ONE_PLUS_HOURS_BILLED

HUNDRED_PLUS_HOURS_BILLED

THOUSAND_PLUS_HOURS_BILLED

Example
"ANY_HOURS"
Proposals

ClientProposalJobSuccessSocre

Description

job success score

Values
Enum Value Description

ANY_JOB_SUCCESS

PERCENTACE_80_AND_ABOVE

PERCENTAGE_90_AND_ABOVE

Example
"ANY_JOB_SUCCESS"
Proposals

ClientProposalLastActivity

Description

last activity

Values
Enum Value Description

ANY_TIME

WITHIN_2_WEEKS

WITHIN_1_MONTH

WITHIN_2_MONTHS

Example
"ANY_TIME"
Proposals

ClientProposalMessageRequest

Description

client proposal message request

Fields
Input Field Description
proposalId - ID! client proposal id
jobPostingId - ID! the jobPostingId of the proposal
message - String! message to send
Example
{
  "proposalId": "4",
  "jobPostingId": "4",
  "message": "xyz789"
}
Proposals

ClientProposalRatedType

Description

top rated type

Values
Enum Value Description

TOP_RATED

NON_TOP_RATED

HIPO

TOP_RATED_PLUS

Example
"TOP_RATED"
Proposals

ClientProposalReadRequest

Description

client proposal mark as read request

Fields
Input Field Description
proposalId - ID! client proposal id
jobPostingId - ID! the jobPostingId of the proposal
Example
{"proposalId": "4", "jobPostingId": 4}
Proposals

ClientProposalsConnection

Description

connection to the client proposal list

Fields
Field Name Description
totalCount - Int Total number of client proposals matching filters
edges - [ClientProposalsEdge] Edges containing client proposals and cursors
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [ClientProposalsEdge],
  "pageInfo": PageInfo
}
Proposals

ClientProposalsEdge

Description

Edge in client proposals connection

Fields
Field Name Description
cursor - String! Cursor for pagination
node - ClientProposal Client proposal node
Example
{
  "cursor": "abc123",
  "node": ClientProposal
}
Proposals

ClientProposalShortlistRequest

Description

client proposal shortlist request

Fields
Input Field Description
proposalId - ID! client proposal id
jobPostingId - ID! the jobPostingId of the proposal
shortlisted - Boolean! is the proposal shortlisted
Example
{"proposalId": 4, "jobPostingId": 4, "shortlisted": false}
Proposals

ClientProposalSortAttribute

Fields
Input Field Description
field - ClientProposalSortAttributeType! Attribute to sort client proposals by
sortOrder - SortOrder! Sorting order
Example
{"field": "CHARGERATE", "sortOrder": "ASC"}
Proposals

ClientProposalSortAttributeType

Description

Sortable attributes for client proposals

Values
Enum Value Description

CHARGERATE

EARNINGS

RECOMMENDATIONSCORE

BILLEDHOURS

CREATEDDATETIME

MODIFIEDDATETIME

Example
"CHARGERATE"
Proposals

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}
Proposals

ClientProposalStatusName

Description

client proposal status name

Values
Enum Value Description

Created

Activated

Declined

Withdrawn

Offered

Replaced

Archived

Hired

Example
"Created"
Proposals

ClientProposalTalentType

Description

talent type

Values
Enum Value Description

FREELANCER

AGENCY

Example
"FREELANCER"
Proposals

CreateDirectUploadLinkInput

Description

Input for create direct upload link

Fields
Input Field Description
fileName - String! file name
expirationDate - String expiration date
maxFileSize - Int maximum file size
contentType - String content type
sslEnabled - Boolean is ssl enabled
metaData - String file metadata
Example
{
  "fileName": "xyz789",
  "expirationDate": "xyz789",
  "maxFileSize": 987,
  "contentType": "abc123",
  "sslEnabled": true,
  "metaData": "abc123"
}
Proposals

FileInfo

Description

File info

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" Form key-values
Example
{
  "id": 4,
  "uploadUrl": "xyz789",
  "formKeyValues": [StringMapElement]
}
Proposals

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
}
Proposals

ProposalEngagementDuration

Description

duration metadata item

Fields
Field Name Description
id - ID!
label - String!
Example
{
  "id": "4",
  "label": "abc123"
}
Proposals

ProposalMetadata

Description

Proposal metadata reference values

Fields
Field Name Description
engagementDurationValues - [ProposalEngagementDuration!]! Available engagement duration options
reasons - [ReasonsMetadata!]! Reasons metadata filtered by type
Arguments
reasonType - ReasonType
Example
{
  "engagementDurationValues": [
    ProposalEngagementDuration
  ],
  "reasons": [ReasonsMetadata]
}
Proposals

ProposalMilestones

Description

TODO: amount needs to be changed back to Money when the API changes are made.

Fields
Field Name Description
description - String!
dueDate - String!
amount - String! amount for the milestone
Example
{
  "description": "xyz789",
  "dueDate": "xyz789",
  "amount": "abc123"
}
Proposals

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]
}
Proposals

ProposalReason

Description

vendor or client proposal reason

Fields
Field Name Description
id - ID! ID of the reason for proposal to switch to current status.
reason - String!
description - String Text of the reason for proposal to switch to current status. Applicable for declined or withdrawn proposals.
Example
{
  "id": "4",
  "reason": "abc123",
  "description": "xyz789"
}
Proposals

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
}
Proposals

ProposalUpdateResultStatus

Description

applications with PENDING status will be retried again by the system

Values
Enum Value Description

SUCCESS

PENDING

Example
"SUCCESS"
Proposals

UpdateClientProposalResult

Description

Update client proposal result

Fields
Field Name Description
proposal - ClientProposal Updated client proposal
status - ProposalUpdateResultStatus! Operation status
Example
{"proposal": ClientProposal, "status": "SUCCESS"}
Proposals

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": "abc123",
  "proposalCoverLetter": "xyz789",
  "projectPlan": ProposalProjectPlan,
  "auditDetails": ProposalAuditDetails,
  "status": VendorProposalStatus,
  "annotations": ["Hidden"]
}
Proposals

VendorProposalAnnotation

Description

vendor proposal annotation

Values
Enum Value Description

Hidden

OnHold

Example
"Hidden"
Proposals

VendorProposalFilter

Description

vendor proposal related filters

Fields
Input Field Description
status_eq - VendorProposalStatusFilterInput! Filter by proposal status
annotations_eq - VendorProposalAnnotation Filter by proposal annotation
freelancerId_eq - ID Filter by freelancer ID
organizationId_eq - ID Filter by organization ID
jobPostingIds_any - [ID!] Filter by job posting IDs
Example
{
  "status_eq": "Accepted",
  "annotations_eq": "Hidden",
  "freelancerId_eq": 4,
  "organizationId_eq": "4",
  "jobPostingIds_any": [4]
}
Proposals

VendorProposalsConnection

Description

connection to the vendor proposal list

Fields
Field Name Description
totalCount - Int Total number of proposals matching filters
edges - [VendorProposalsEdge] Edges containing vendor proposals and cursors
pageInfo - PageInfo Contains information about pagination, such as whether there are more results to fetch.
Example
{
  "totalCount": 987,
  "edges": [VendorProposalsEdge],
  "pageInfo": PageInfo
}
Proposals

VendorProposalsEdge

Description

Edge in vendor proposals connection

Fields
Field Name Description
cursor - String Cursor for pagination
node - VendorProposal Vendor proposal node
Example
{
  "cursor": "abc123",
  "node": VendorProposal
}
Proposals

VendorProposalSortAttribute

Fields
Input Field Description
field - VendorProposalSortAttributeType! Attribute to sort vendor proposals by
sortOrder - SortOrder! Sorting order
Example
{"field": "CREATEDDATETIME", "sortOrder": "ASC"}
Proposals

VendorProposalSortAttributeType

Description

Sortable attributes for vendor proposals

Values
Enum Value Description

CREATEDDATETIME

MODIFIEDDATETIME

Example
"CREATEDDATETIME"
Proposals

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}
Proposals

VendorProposalStatusFilterInput

Description

Possible Status filter input for Vendor Proposal Query

Values
Enum Value Description

Accepted

Application has been created and fully validated

Declined

Application has been declined by the client

Withdrawn

Application was withdrawn by the freelancer

Offered

The freelancer has been sent an Offer, or the Vendor has accepted the invite

Activated

Application has been created as a result of an invite accepted by a freelancer

Archived

The system has archived all the active applications when the associated job posting is closed

Hired

Freelancer accepted the offer, or Vendor accepted the invite with an accepted offer

Pending

If the application creation failed temporarily
Example
"Accepted"
Proposals

VendorProposalStatusName

Description

vendor proposal status name

Values
Enum Value Description

Created

No longer supported

Accepted

Application has been created and fully validated. (i.e. FL has submitted a proposal).

Declined

Application was declined by the client

Withdrawn

Application was wihtdrawn by the freelancer

Replaced

No longer supported

Offered

The freelancer has been sent an Offer by the client | Vendor accepted invite with pending offer

Activated

Application is created as a result of an invite accepted by freelancer. (i.e messaging has been initiated between FL and CL)

Archived

When job posting is closed, SystemArchive event is called to Archive all the active applications of that jobposting

Rejected

No longer supported

Hired

Freelancer acceped the offer | Vendor accepted invite with accepted offer

Pending

When a new application is created, if there is a temp failure in any validation, the application is set with Pending status.

Invalid

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"

Reporting

BillRate

Description

Billing rate information for a time report

Fields
Field Name Description
id - ID! Bill rate id
value - Float! Bill rate value
code - String! Bill rate code
offerRef - ID! Offer reference id of the bill rate
Example
{
  "id": "4",
  "value": 123.45,
  "code": "abc123",
  "offerRef": "4"
}
Reporting

BPAPrivateDataFilter

Fields
Input Field Description
serviceName_eq - String
serviceVersion_eq - String
Example
{
  "serviceName_eq": "xyz789",
  "serviceVersion_eq": "xyz789"
}
Reporting

Cell

Description

Individual time tracking cell representing a 10-minute work segment

Fields
Field Name Description
timestamp - Int! Unix timestamp of the cell
date - String! Date of the cell
manual - Boolean! Whether time was manually logged
overtime - Boolean! Whether this is overtime work
memo - String Optional memo or note for this time entry
Example
{
  "timestamp": 987,
  "date": "xyz789",
  "manual": true,
  "overtime": true,
  "memo": "abc123"
}
Reporting

TimeReport

Description

Detailed time report for work performed on a contract

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": "abc123",
  "freelancer": GenericUser,
  "team": GenericOrganization,
  "contractOffer": ContractOfferResult,
  "contract": ContractDetails,
  "termId": "4",
  "task": "xyz789",
  "taskDescription": "abc123",
  "memo": "abc123",
  "totalHoursWorked": 987.65,
  "totalCharges": 123.45,
  "totalOnlineHoursWorked": 987.65,
  "totalOnlineCharge": 987.65,
  "totalOfflineHoursWorked": 987.65,
  "totalOfflineCharge": 987.65,
  "billRate": BillRate
}
Reporting

TimeReportConnection

Description

Connection type for paginated time report results

Fields
Field Name Description
totalCount - Int Total number of time reports matching the query
edges - [TimeReportEdge!] List of time report edges with pagination cursors
pageInfo - PageInfo Pagination information for navigating results
Example
{
  "totalCount": 123,
  "edges": [TimeReportEdge],
  "pageInfo": PageInfo
}
Reporting

TimeReportEdge

Description

Edge type containing a time report node and cursor for pagination

Fields
Field Name Description
node - TimeReport! Time report data
cursor - String! Cursor for pagination
Example
{
  "node": TimeReport,
  "cursor": "abc123"
}
Reporting

TimeReportFilter

Description

Input filter used to query time reports based on organization, date range, and optional contract IDs.

Fields
Input Field Description
organizationId_eq - ID! Only time reports belonging to this organization will be included.
timeReportDate_bt - DateTimeRange! A date range to filter time reports by their date.
contractIds - [ID] Optional list of contract IDs to filter the time reports. If provided, only reports associated with these contracts will be included.
Example
{
  "organizationId_eq": 4,
  "timeReportDate_bt": DateTimeRange,
  "contractIds": ["4"]
}
Reporting

TransactionHistory

Description

Transaction history containing transaction details and metadata

Fields
Field Name Description
transactionDetail - TransactionHistoryDetail Group of non-pending transactions with totals
Example
{"transactionDetail": TransactionHistoryDetail}
Reporting

TransactionHistoryDetail

Description

Transaction history detail with totals and transaction rows

Fields
Field Name Description
transactionHistoryRow - [TransactionHistoryRow!] List of transaction rows
Example
{"transactionHistoryRow": [TransactionHistoryRow]}
Reporting

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"]
}
Reporting

TransactionHistoryRow

Description

Individual transaction row with details

Fields
Field Name Description
rowNumber - Int Row number in the transaction list
runningChargeableBalance - Money Running chargeable balance after this transaction
recordId - ID Transaction record identifier
remainder - String Remaining amount to be paid
amountCreditedToUser - Money Amount credited to the user
transactionReviewDueDate - String Date when transaction review is due
transactionCreationDate - String Date when transaction was created
relatedUserPaymentMethod - Int Related payment method identifier
accountingSubtype - String Accounting subtype of the transaction
descriptionUI - String UI-friendly description of the transaction
relatedAssignment - Int Related assignment identifier
amountSentInOrigCurrency - Money Amount sent in original currency
paymentGuaranteed - Boolean Whether payment is guaranteed
fixedPriceEARMark - Int Fixed price EAR mark identifier
relatedTransactionId - ID Related transaction identifier
relatedInvoiceId - ID Related invoice identifier
fullyPaidDate - String Date when transaction was fully paid
type - String Transaction type
transactionAmount - Money Transaction amount
relatedAccountingEntity - Int Related accounting entity identifier
description - String Transaction description
purchaseOrderNumber - String Purchase order number
assignmentAgencyName - String Agency name for the assignment
assignmentCompanyName - String Company name for the assignment
assignmentDeveloperName - String Developer name for the assignment
assignmentTeamCompanyId - ID Assignment team company identifier
assignmentTeamCompanyReference - Int Assignment team company reference number
assignmentTeamId - ID Assignment team identifier
assignmentTeamReference - Int Assignment team reference number
assignmentTeamUserId - ID Assignment team user identifier
assignmentTeamUserReference - Int Assignment team user reference number
payment - Money Payment amount
paymentStatus - String Payment status
prefix - String Transaction prefix
Example
{
  "rowNumber": 987,
  "runningChargeableBalance": Money,
  "recordId": "4",
  "remainder": "abc123",
  "amountCreditedToUser": Money,
  "transactionReviewDueDate": "abc123",
  "transactionCreationDate": "abc123",
  "relatedUserPaymentMethod": 123,
  "accountingSubtype": "abc123",
  "descriptionUI": "xyz789",
  "relatedAssignment": 123,
  "amountSentInOrigCurrency": Money,
  "paymentGuaranteed": false,
  "fixedPriceEARMark": 987,
  "relatedTransactionId": "4",
  "relatedInvoiceId": "4",
  "fullyPaidDate": "abc123",
  "type": "abc123",
  "transactionAmount": Money,
  "relatedAccountingEntity": 123,
  "description": "abc123",
  "purchaseOrderNumber": "xyz789",
  "assignmentAgencyName": "xyz789",
  "assignmentCompanyName": "abc123",
  "assignmentDeveloperName": "abc123",
  "assignmentTeamCompanyId": 4,
  "assignmentTeamCompanyReference": 987,
  "assignmentTeamId": 4,
  "assignmentTeamReference": 123,
  "assignmentTeamUserId": 4,
  "assignmentTeamUserReference": 123,
  "payment": Money,
  "paymentStatus": "abc123",
  "prefix": "abc123"
}
Reporting

WorkDay

Description

Represents a single work day with associated work diary data

Fields
Field Name Description
workDiary - WorkDiary Work diary entries for this day
date - String! Date of the work day
Example
{
  "workDiary": WorkDiary,
  "date": "xyz789"
}
Reporting

WorkDiary

Description

Work diary containing time tracking cells for a work day

Fields
Field Name Description
cells - [Cell!] List of time tracking cells
Example
{"cells": [Cell]}

Search

FreelancerProfileSearchAreaInput

Fields
Input Field Description
latitude - Float! Latitude coordinate
longitude - Float! Longitude coordinate
Example
{"latitude": 123.45, "longitude": 123.45}
Search

FreelancerProfileSearchFilter

Fields
Input Field Description
userType - FreelancerProfileSearchUserTypeEnum! Type of user to search (freelancer or client)
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
}
Search

FreelancerProfileSearchLocationInput

Fields
Input Field Description
country - String Country name or code
state - String State or region
city - String City name
area - FreelancerProfileSearchAreaInput Geographic area to narrow the search
Example
{
  "country": "abc123",
  "state": "xyz789",
  "city": "xyz789",
  "area": FreelancerProfileSearchAreaInput
}
Search

FreelancerProfileSearchUserTypeEnum

Values
Enum Value Description

Freelancer

Search among freelancer users

Client

Search among client users
Example
"Freelancer"
Search

FreelancerProfileSearchWeightedOntologyIdInput

Fields
Input Field Description
ontologyId - String! Ontology identifier (e.g., upwork:Skill)
weight - Float! Boost weight to apply for the ontology element
Example
{"ontologyId": "abc123", "weight": 123.45}
Search

FreelancerProfilesSearchRecord

Description

Freelancer profiles search record

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": "abc123",
  "shortName": "abc123",
  "ciphertext": "abc123",
  "portrait": "xyz789",
  "lastActiveDateTime": "abc123",
  "totalHourlyJobs": 987,
  "totalFixedPriceJobs": 123,
  "skills": [Skill],
  "hourlyRate": Money,
  "topRatedStatus": "abc123",
  "avgFeedbackScore": 123.45,
  "hideEarnings": true,
  "freelancer": CurrentUser,
  "location": FreelancerSearchResultLocation,
  "contracts": [FreelancerSearchResultContractSummary]
}
Search

FreelancerProfilesSearchRecordInterface

Fields
Field Name Description
shortName - String shortName of the freelancer
ciphertext - String freelancer's ciphertext
Possible Types
FreelancerProfilesSearchRecordInterface Types

FreelancerProfilesSearchRecord

UserFreelancerProfilesSearchRecord

Example
{
  "shortName": "abc123",
  "ciphertext": "abc123"
}
Search

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 Total number of matching records
Example
{
  "edges": [FreelancerProfilesSearchResultEdge],
  "pageInfo": PageInfo,
  "totalCount": 123
}
Search

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

FreelancerSearchResultContractFeedbackSummary

Description

Contract feedback summary

Fields
Field Name Description
publicComment - Boolean boolean indicating if the feedback is public
comment - String comment provided by the client
score - Float feedback score
Example
{
  "publicComment": false,
  "comment": "xyz789",
  "score": 123.45
}
Search

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": "abc123",
  "hourlyRate": Money,
  "totalHours": 123,
  "totalCharges": Money,
  "startedDateTime": "xyz789",
  "endDateTime": "xyz789"
}
Search

FreelancerSearchResultLocation

Description

Freelancer search result location

Fields
Field Name Description
country - String Country name
city - String City name
state - String State or region
Example
{
  "country": "xyz789",
  "city": "xyz789",
  "state": "xyz789"
}
Search

FreelancerType

Description

Freelancer type

Values
Enum Value Description

Agency

Agency contractors

Independent

Independent freelancers
Example
"Agency"
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": false,
  "previousClients_eq": false,
  "experienceLevel_eq": "ENTRY_LEVEL",
  "locations_any": ["abc123"],
  "timezone_eq": "xyz789",
  "ptcIds_any": ["4"],
  "ptcOnly_eq": true,
  "enterpriseOnly_eq": true,
  "proposalRange_eq": IntRange,
  "pagination_eq": Pagination,
  "area_eq": AreaFilter,
  "preserveFacet_eq": "abc123",
  "userLocationMatch_eq": true,
  "visitorCountry_eq": "abc123"
}
Search

Paging

Description

Pagination input

Fields
Input Field Description
start - Int Starting offset
rows - Int Number of rows to return
Example
{"start": 123, "rows": 123}
Search

PagingInfo

Description

Paging information

Fields
Field Name Description
total - Int Total number of results available
offset - Int Offset of the first result in this page
count - Int Number of results in this page
Example
{"total": 987, "offset": 987, "count": 123}
Search

SemSearchV2DoubleRange

Description

Double range filter

Fields
Input Field Description
min - Float Minimum value
max - Float Maximum value
Example
{"min": 987.65, "max": 123.45}
Search

SemSearchV2IntRange

Description

Integer range filter

Fields
Input Field Description
min - Int Minimum value
max - Int Maximum value
Example
{"min": 123, "max": 987}
Search

SemSearchV2Profile

Description

SEM profile result

Fields
Field Name Description
profile - TalentProfile Talent profile details
Example
{"profile": TalentProfile}
Search

SemSearchV2Request

Description

SEM search request

Fields
Input Field Description
paging - Paging Pagination options
userQuery - String Free text query
occupationUid - String Occupation UID filter
title - String Title filter
countries - [String!] Country filters
states - [String!] State/region filters
cities - [String!] City filters
hourlyRate - SemSearchV2DoubleRange Hourly rate range
jobSuccessScore - SemSearchV2DoubleRange Job Success Score range
totalJobs - SemSearchV2IntRange Total jobs range
topRated - Boolean Filter by Top Rated status
risingTalent - Boolean Filter by Rising Talent status
hasPortrait100 - Boolean Require portrait image (100px)
skillsNames - [String!] Skill name filters
skillsUids - [String!] Skill UID filters
vemSkills - [VemSkill!] VEM skills to boost
type - FreelancerType Freelancer type filter
addAgencyPreview - Boolean Include agency preview data
agencySearch - Boolean Restrict to agency search
publicVisibilityOnly - Boolean Only include publicly visible profiles
Example
{
  "paging": Paging,
  "userQuery": "abc123",
  "occupationUid": "xyz789",
  "title": "abc123",
  "countries": ["xyz789"],
  "states": ["xyz789"],
  "cities": ["abc123"],
  "hourlyRate": SemSearchV2DoubleRange,
  "jobSuccessScore": SemSearchV2DoubleRange,
  "totalJobs": SemSearchV2IntRange,
  "topRated": true,
  "risingTalent": true,
  "hasPortrait100": false,
  "skillsNames": ["abc123"],
  "skillsUids": ["abc123"],
  "vemSkills": [VemSkill],
  "type": "Agency",
  "addAgencyPreview": false,
  "agencySearch": false,
  "publicVisibilityOnly": true
}
Search

SemSearchV2Response

Description

SEM search response

Fields
Field Name Description
pagingInfo - PagingInfo! Paging information for the result set
profiles - [SemSearchV2Profile]! Matching profiles
Example
{
  "pagingInfo": PagingInfo,
  "profiles": [SemSearchV2Profile]
}
Search

UserFreelancerProfilesSearchRecord

Description

Search record for user freelancer profiles

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": "abc123",
  "user": GenericUser,
  "userProfile": FreelancerProfile
}
Search

VemSkill

Description

VEM skill weight

Fields
Input Field Description
skill - String Skill name or identifier
weight - Float Boost weight for the skill
Example
{"skill": "abc123", "weight": 987.65}

Talent Clouds

Day

Values
Enum Value Description

MONDAY

TUESDAY

WEDNESDAY

THURSDAY

FRIDAY

SATURDAY

SUNDAY

Example
"MONDAY"
Talent Clouds

PrivateTalentCloud

Description

A private group of professional freelancers and agencies for Upwork Enterprise clients

Fields
Field Name Description
id - ID! Unique identifier for the talent cloud
name - String! Name of the talent cloud
creator - GenericUser! User who created the talent cloud
creatorOrganization - GenericOrganization! Organization of the talent cloud creator
joinInstructions - String! Instructions displayed to freelancers when requesting to join
welcomeMessageToAddedFreelancers - String! Welcome message displayed to freelancers after joining
joinRequestAutoApproved - Boolean! Whether join requests are automatically approved without manual review
messageAfterJoinRequest - String! Message displayed to freelancers after submitting a join request
joinRejectionMessage - String! Message displayed to freelancers if their join request was rejected
externalName - String Name displayed in external contexts outside the client company
active - Boolean! Whether the talent cloud is currently active
joinRequestNotifyUsers - [GenericUser]! Users to notify when new join requests are created
logoImageLarge - File Large logo image file
logoImageSmall - File Small logo image file
description - String! Description of the talent cloud
onboardingTaskEnabled - Boolean! Whether onboarding tasks are enabled for this talent cloud
onboardingTaskEnableUpdatedDateTime - String Timestamp when onboarding tasks were first enabled
selectable - Boolean! Whether this talent cloud can be selected for new offers
talentCloudTasks - [TalentCloudTask] List of talent cloud task overviews
Example
{
  "id": 4,
  "name": "xyz789",
  "creator": GenericUser,
  "creatorOrganization": GenericOrganization,
  "joinInstructions": "abc123",
  "welcomeMessageToAddedFreelancers": "abc123",
  "joinRequestAutoApproved": false,
  "messageAfterJoinRequest": "xyz789",
  "joinRejectionMessage": "abc123",
  "externalName": "abc123",
  "active": true,
  "joinRequestNotifyUsers": [GenericUser],
  "logoImageLarge": File,
  "logoImageSmall": File,
  "description": "abc123",
  "onboardingTaskEnabled": false,
  "onboardingTaskEnableUpdatedDateTime": "abc123",
  "selectable": true,
  "talentCloudTasks": [TalentCloudTask]
}
Talent Clouds

PrivateTalentCloudConnection

Description

Connection type for paginated private talent cloud results

Fields
Field Name Description
totalCount - Int Total number of talent clouds matching the query
edges - [PrivateTalentCloudEdge] List of talent cloud edges with cursors
pageInfo - PageInfo Pagination information for navigating results
Example
{
  "totalCount": 123,
  "edges": [PrivateTalentCloudEdge],
  "pageInfo": PageInfo
}
Talent Clouds

PrivateTalentCloudEdge

Description

Edge type containing a private talent cloud node and its cursor

Fields
Field Name Description
cursor - String Cursor for this edge used in pagination
node - PrivateTalentCloud The private talent cloud at this edge
Example
{
  "cursor": "abc123",
  "node": PrivateTalentCloud
}
Talent Clouds

TalentAdjustedCategoryScore

Description

Adjusted feedback score for a specific job category

Fields
Field Name Description
averageCategoryScore - Float Average score for this category
Example
{"averageCategoryScore": 987.65}
Talent Clouds

TalentCloudSection

Description

Talent cloud section details

Fields
Field Name Description
id - ID! Section identifier
talentCloud - PrivateTalentCloud The talent cloud this section belongs to
name - String Section name
description - String Section description
type - TalentCloudTaskSectionType Type of section (ONBOARDING, OFFBOARDING, etc.)
attachmentIds - [ID] List of attachment IDs for this section
active - Boolean Whether this section is active
orderIndex - Int Display order index
Example
{
  "id": 4,
  "talentCloud": PrivateTalentCloud,
  "name": "abc123",
  "description": "xyz789",
  "type": "ONBOARDING",
  "attachmentIds": [4],
  "active": true,
  "orderIndex": 123
}
Talent Clouds

TalentCloudTask

Description

Talent cloud task overview with sections

Fields
Field Name Description
talentCloud - PrivateTalentCloud The talent cloud this task belongs to
taskSections - [TalentCloudTaskSection] List of task sections
Example
{
  "talentCloud": PrivateTalentCloud,
  "taskSections": [TalentCloudTaskSection]
}
Talent Clouds

TalentCloudTaskOverview

Description

Overview of a talent cloud task

Fields
Field Name Description
id - ID! Task identifier
taskSectionIds - [ID] List of section IDs this task belongs to
name - String Task name
completionRequired - Boolean Whether completion of this task is required
active - Boolean Whether this task is active
permissions - [TalentCloudTaskOverviewPermission] List of permissions for different roles
primaryTaskOwner - TalentCloudTaskRole Primary owner role for this task
Example
{
  "id": "4",
  "taskSectionIds": [4],
  "name": "xyz789",
  "completionRequired": false,
  "active": false,
  "permissions": [TalentCloudTaskOverviewPermission],
  "primaryTaskOwner": "FREELANCER"
}
Talent Clouds

TalentCloudTaskOverviewPermission

Description

Permission mapping for a specific role on a task

Fields
Field Name Description
role - TalentCloudTaskRole The role this permission applies to
permission - TalentCloudTaskPermission The permission level (NO, VIEW, WRITE)
Example
{"role": "FREELANCER", "permission": "NO"}
Talent Clouds

TalentCloudTaskPermission

Values
Enum Value Description

NO

VIEW

WRITE

Example
"NO"
Talent Clouds

TalentCloudTaskRole

Values
Enum Value Description

FREELANCER

HIRING_MANAGER

ADMINISTRATOR

COMPLIANCE_FUNCTIONS

Example
"FREELANCER"
Talent Clouds

TalentCloudTaskSection

Description

Task section containing section details and tasks

Fields
Field Name Description
taskSectionDetails - TalentCloudSection Details of the task section
tasks - [TalentCloudTaskOverview] List of tasks in this section
Example
{
  "taskSectionDetails": TalentCloudSection,
  "tasks": [TalentCloudTaskOverview]
}
Talent Clouds

TalentCloudTaskSectionType

Values
Enum Value Description

ONBOARDING

OFFBOARDING

FOR_PAYROLLED_EMPLOYEES

Example
"ONBOARDING"
Talent Clouds

TalentCloudTasksInputFilter

Fields
Input Field Description
talentCloudIds_any - [ID!]!
Example
{"talentCloudIds_any": [4]}
Talent Clouds

TalentCommunityCertificate

Description

Community certificate details including provider and verification info

Fields
Field Name Description
name - String Certificate name
description - String Certificate description
logoUrl - String URL to certificate logo
verificationMethod - String Method used to verify the certificate
provider - String Certificate provider organization
providerLink - String Link to provider website
duration - Int Certificate duration in days
classifications - [TalentDiversityCertificateClassification] Diversity classifications for this certificate
status - TalentCommunityCertificateStatus Current status of the certificate
Example
{
  "name": "abc123",
  "description": "xyz789",
  "logoUrl": "xyz789",
  "verificationMethod": "abc123",
  "provider": "abc123",
  "providerLink": "abc123",
  "duration": 123,
  "classifications": [
    TalentDiversityCertificateClassification
  ],
  "status": "PENDING"
}
Talent Clouds

TalentCommunityCertificateStatus

Values
Enum Value Description

PENDING

VERIFIED

REJECTED

EXPIRED

SELF_REPORTED

AWAITING_CONFIRMATION

Example
"PENDING"
Talent Clouds

TalentCommunityCertificateVisibility

Values
Enum Value Description

PUBLIC

ENTERPRISE_CLIENTS_ONLY

PRIVATE

Example
"PUBLIC"
Talent Clouds

TalentContract

Description

Contract details including terms, status, and dates

Fields
Field Name Description
id - ID! Contract identifier
startDate - String Contract start date
endDate - String Contract end date
status - TalentContractStatus Current contract status
clientTeamId - ID Client team identifier
title - String Contract title
terms - TalentContractTerms Contract terms (rate, amount, type)
createDate - String When contract was created
clientOrgId - ID Client organization identifier
Example
{
  "id": 4,
  "startDate": "xyz789",
  "endDate": "xyz789",
  "status": "ACTIVE",
  "clientTeamId": "4",
  "title": "abc123",
  "terms": TalentContractTerms,
  "createDate": "xyz789",
  "clientOrgId": "4"
}
Talent Clouds

TalentContractAccessType

Values
Enum Value Description

PUBLIC

PRIVATE

INDEX

Example
"PUBLIC"
Talent Clouds

TalentContractAggregate

Description

Aggregated contract statistics including charges and hours

Fields
Field Name Description
totalCharge - String Total charges for the contract
hours - String Total hours worked
Example
{
  "totalCharge": "abc123",
  "hours": "xyz789"
}
Talent Clouds

TalentContractFeedback

Description

Feedback given and received for a contract

Fields
Field Name Description
feedbackToFreelancer - TalentWorkFeedback Feedback from client to freelancer
feedbackToClient - TalentWorkFeedback Feedback from freelancer to client
Example
{
  "feedbackToFreelancer": TalentWorkFeedback,
  "feedbackToClient": TalentWorkFeedback
}
Talent Clouds

TalentContractStatus

Values
Enum Value Description

ACTIVE

CLOSED

PAUSED

Example
"ACTIVE"
Talent Clouds

TalentContractTerms

Description

Contract terms including rate and payment structure

Fields
Field Name Description
hourlyRate - String Hourly rate
jobType - TalentJobType Job type (hourly or fixed)
stipendAmount - String Stipend amount if applicable
fixedAmount - String Fixed amount if applicable
Example
{
  "hourlyRate": "xyz789",
  "jobType": "FIXED",
  "stipendAmount": "xyz789",
  "fixedAmount": "abc123"
}
Talent Clouds

TalentDiversityCertificateClassification

Description

Diversity certificate classification type

Fields
Field Name Description
id - String Classification identifier
name - String Classification name
Example
{
  "id": "xyz789",
  "name": "xyz789"
}
Talent Clouds

TalentEducationRecord

Description

Education record (deprecated, use TalentProfileEducationRecord)

Fields
Field Name Description
id - String Education record identifier
personId - String Person identifier
institutionName - String Name of educational institution
standardizedInstitutionId - String Standardized institution identifier
areaOfStudy - String Field of study
standardizedAreaOfStudyId - String Standardized area of study identifier
degree - String Degree obtained
standardizedDegreeId - String Standardized degree identifier
startDateTime - String When education started
endDateTime - String When education ended
comment - String Additional comments
Example
{
  "id": "abc123",
  "personId": "xyz789",
  "institutionName": "abc123",
  "standardizedInstitutionId": "xyz789",
  "areaOfStudy": "xyz789",
  "standardizedAreaOfStudyId": "abc123",
  "degree": "abc123",
  "standardizedDegreeId": "xyz789",
  "startDateTime": "xyz789",
  "endDateTime": "abc123",
  "comment": "abc123"
}
Talent Clouds

TalentFeedbackScore

Description

Individual feedback score by category

Fields
Field Name Description
label - String Category label
score - Int Score value
weight - Float Weight of this score
Example
{
  "label": "abc123",
  "score": 123,
  "weight": 123.45
}
Talent Clouds

TalentJobCategory

Description

Job category or subcategory

Fields
Field Name Description
id - String Category identifier
name - String Category name
Example
{
  "id": "abc123",
  "name": "xyz789"
}
Talent Clouds

TalentJobCategoryGroup

Description

Job category group with selected categories

Fields
Field Name Description
id - String Category group identifier
name - String Category group name
selectedCategories - [TalentJobCategory] List of selected categories in this group
Example
{
  "id": "abc123",
  "name": "xyz789",
  "selectedCategories": [TalentJobCategory]
}
Talent Clouds

TalentJobType

Values
Enum Value Description

FIXED

HOURLY

Example
"FIXED"
Talent Clouds

TalentOpening

Description

Job opening details including title, description, and requirements

Fields
Field Name Description
id - ID Opening identifier
title - String Job title
visibility - TalentContractAccessType Job visibility setting
Example
{
  "id": "4",
  "title": "abc123",
  "visibility": "PUBLIC"
}
Talent Clouds

TalentPersonAvailability

Description

Freelancer availability information including capacity and schedule

Fields
Field Name Description
personId - String Person identifier
capacity - FreelancerProfileAvailabilityCapacity Availability capacity (full-time, part-time, etc.)
createdDateTime - String When availability record was created
availabilityDateTime - String When freelancer becomes available
updatedDateTime - String Last update timestamp
purchasedInvitationBadge - TalentPurchasedInvitationBadge Purchased invitation badge status
minHours - Int Minimum hours available per week
maxHours - Int Maximum hours available per week
availableDays - [Day]! Days of the week available for work
Example
{
  "personId": "abc123",
  "capacity": "fullTime",
  "createdDateTime": "abc123",
  "availabilityDateTime": "abc123",
  "updatedDateTime": "xyz789",
  "purchasedInvitationBadge": TalentPurchasedInvitationBadge,
  "minHours": 123,
  "maxHours": 123,
  "availableDays": ["MONDAY"]
}
Talent Clouds

TalentProfile

Description

Freelancer profile containing all profile information and settings

Fields
Field Name Description
personId - ID! Unique identifier for the person
identity - TalentProfileIdentity Profile identity information
personalData - TalentProfilePersonalData Personal data including name, title, description
preferences - TalentProfileUserPreferences User preferences for profile visibility and privacy
settings - TalentProfileSettings Profile settings and status
personAvailability - TalentPersonAvailability Availability information for the freelancer
projectList - TalentProjectList List of portfolio projects
communityCertificates - [TalentProfileCommunityCertificate] Community and diversity certificates
profileCompleteness - TalentProfileCompletenessSummary Profile completeness summary with PCI score
otherExperiences - [TalentProfileOtherExperience] Other professional experiences
educationRecords - [TalentEducationRecord] Education history records
employmentRecords - [TalentProfileEmploymentRecord] Employment history records
skills - [TalentProfilePersonSkill] Skills listed on the profile
jobCategories - [TalentJobCategoryGroup] Job categories and subcategories
profileAggregates - TalentProfileAggregate Aggregated profile statistics and metrics
specializedProfiles - [TalentSpecializedProfile!] Specialized profiles for different services
specializedProfilesSkills - [TalentSpecializedProfileSkill!] Skills for specialized profiles
specializedProfilesProjects - [TalentSpecializedProfilesProject!] Projects for specialized profiles
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
  ]
}
Talent Clouds

TalentProfileAggregate

Description

Aggregated profile statistics and metrics for a freelancer

Fields
Field Name Description
lastWorkedOn - String Last date freelancer worked
totalHourlyJobs - Int Total number of hourly jobs completed
totalFixedJobs - Int Total number of fixed-price jobs completed
topRatedStatus - String Top Rated status
totalFeedback - Float Total feedback score
totalEarnings - Float Total earnings across all jobs
adjustedCategoryScores - [TalentAdjustedCategoryScore] Adjusted scores by category
totalJobs - Int Total number of jobs completed
Example
{
  "lastWorkedOn": "abc123",
  "totalHourlyJobs": 123,
  "totalFixedJobs": 123,
  "topRatedStatus": "abc123",
  "totalFeedback": 987.65,
  "totalEarnings": 987.65,
  "adjustedCategoryScores": [TalentAdjustedCategoryScore],
  "totalJobs": 987
}
Talent Clouds

TalentProfileCommunityCertificate

Description

Community or diversity certificate associated with a freelancer profile

Fields
Field Name Description
personId - String Person identifier
certificateAttachmentId - String Attachment ID for certificate document
certificationNumber - String Certificate number or identifier
expirationDate - String Certificate expiration date
businessName - String Business name on the certificate
visibility - TalentCommunityCertificateVisibility Visibility setting for the certificate
certificate - TalentCommunityCertificate Certificate details
Example
{
  "personId": "abc123",
  "certificateAttachmentId": "xyz789",
  "certificationNumber": "xyz789",
  "expirationDate": "xyz789",
  "businessName": "abc123",
  "visibility": "PUBLIC",
  "certificate": TalentCommunityCertificate
}
Talent Clouds

TalentProfileCompletenessSummary

Description

Profile completeness summary with PCI score and section counts

Fields
Field Name Description
personId - String Person identifier
pciActual - Int Actual profile completeness index score
pciDisplay - Int Display-friendly PCI score
pciAction - String Suggested action to improve completeness
pciActionCredit - Int Points awarded for completing the action
pciDateTime - String When PCI was last calculated
actionForEmptySection - String Action to take for empty profile sections
skillsCount - Int Number of skills on profile
employmentRecordCount - Int Number of employment records
portraitExists - Boolean Whether profile has a portrait photo
overviewExists - Boolean Whether profile has an overview/description
passedTestsCount - Int Number of passed tests
educationRecordCount - Int Number of education records
certificatesCount - Int Number of certificates
otherExperiencesCount - Int Number of other experiences
portfolioCount - Int Number of portfolio items
esnCount - Int Employment Security Number count
updatedDateTime - String Last update timestamp
Example
{
  "personId": "abc123",
  "pciActual": 123,
  "pciDisplay": 123,
  "pciAction": "abc123",
  "pciActionCredit": 123,
  "pciDateTime": "abc123",
  "actionForEmptySection": "abc123",
  "skillsCount": 987,
  "employmentRecordCount": 987,
  "portraitExists": false,
  "overviewExists": true,
  "passedTestsCount": 987,
  "educationRecordCount": 123,
  "certificatesCount": 123,
  "otherExperiencesCount": 123,
  "portfolioCount": 987,
  "esnCount": 987,
  "updatedDateTime": "abc123"
}
Talent Clouds

TalentProfileEmploymentRecord

Description

Employment history record (deprecated, use TalentProfileEmploymentHistoryRecord)

Fields
Field Name Description
id - String Employment record identifier
personId - String Person identifier
companyName - String Company name
jobTitle - String Job title
standardizedCompanyId - String Standardized company identifier
standardizedJobTitleId - String Standardized job title identifier
role - String Role description
startDateTime - String Employment start timestamp
endDateTime - String Employment end timestamp
description - String Job description
city - String City of employment
country - String Country of employment
Example
{
  "id": "abc123",
  "personId": "xyz789",
  "companyName": "abc123",
  "jobTitle": "abc123",
  "standardizedCompanyId": "abc123",
  "standardizedJobTitleId": "abc123",
  "role": "xyz789",
  "startDateTime": "xyz789",
  "endDateTime": "abc123",
  "description": "xyz789",
  "city": "xyz789",
  "country": "xyz789"
}
Talent Clouds

TalentProfileIdentity

Description

Profile identity information including ID and ciphertext

Fields
Field Name Description
id - String Profile identity ID
ciphertext - String Encrypted profile identifier
Example
{
  "id": "xyz789",
  "ciphertext": "xyz789"
}
Talent Clouds

TalentProfileOtherExperience

Description

Other professional experience not categorized elsewhere

Fields
Field Name Description
id - ID! Experience identifier
personId - ID Person identifier
subject - String Experience subject or title
description - String Experience description
active - Boolean Whether experience is active
Example
{
  "id": 4,
  "personId": "4",
  "subject": "abc123",
  "description": "abc123",
  "active": true
}
Talent Clouds

TalentProfilePersonalData

Description

Personal data including name, title, description, and billing rate

Fields
Field Name Description
firstName - String! Freelancer's first name
lastName - String! Freelancer's last name
portrait - Portrait Profile photo or avatar
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": "abc123",
  "portrait": Portrait,
  "title": "abc123",
  "description": "abc123",
  "chargeRate": Money,
  "profileUrl": "abc123",
  "profileState": "IN_PROGRESS",
  "location": PersonalDataLocation
}
Talent Clouds

TalentProfilePersonSkill

Description

Skill listed on a freelancer profile with ontology mapping

Fields
Field Name Description
id - ID Skill identifier
skill - String Skill name
prettyName - String Display-friendly skill name
status - String Skill status
description - String Skill description
externalLink - String External reference link
wikipediaPageId - String Wikipedia page identifier
freebaseMachineId - String Freebase machine identifier
migrateTo - String Migration target skill identifier
ctime - String Creation timestamp
mtime - String Modification timestamp
rank - String Display rank
ontologySkill - Skill Ontology skill mapping
parentOntologySkill - Skill Parent ontology skill if applicable
Example
{
  "id": "4",
  "skill": "abc123",
  "prettyName": "abc123",
  "status": "xyz789",
  "description": "xyz789",
  "externalLink": "xyz789",
  "wikipediaPageId": "xyz789",
  "freebaseMachineId": "xyz789",
  "migrateTo": "xyz789",
  "ctime": "xyz789",
  "mtime": "abc123",
  "rank": "xyz789",
  "ontologySkill": Skill,
  "parentOntologySkill": Skill
}
Talent Clouds

TalentProfileProject

Description

Portfolio project showcasing freelancer work

Fields
Field Name Description
id - ID! Project identifier
title - String Project title
description - String Project description
projectContractLink - TalentProjectContractLink Link to related contract if applicable
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": "xyz789",
  "projectContractLink": TalentProjectContractLink,
  "thumbnail": "xyz789",
  "thumbnailOriginal": "abc123",
  "projectUrl": "abc123",
  "completionDateTime": "xyz789",
  "public": true,
  "rank": 123,
  "attachments": [TalentProfileProjectAttachment],
  "skills": ["abc123"],
  "creationDateTime": "xyz789",
  "categoryId": 4,
  "videoUrl": "xyz789",
  "occupationId": "abc123",
  "projectType": "CLASSIC_VIEW",
  "role": "abc123",
  "projectGoal": "abc123",
  "solution": "xyz789",
  "primaryImageId": "xyz789",
  "tags": [TalentProfileProjectTag],
  "modificationDateTime": "abc123",
  "developerId": "xyz789",
  "thumbnailId": "xyz789",
  "thumbnailOriginalId": "xyz789",
  "category": "xyz789",
  "subCategory": "xyz789"
}
Talent Clouds

TalentProfileProjectAttachment

Description

File or media attachment for a portfolio project

Fields
Field Name Description
id - ID Attachment identifier
type - String Attachment type (image, video, document)
title - String Attachment title
attachmentName - String Original filename
attachmentSize - Int File size in bytes
originalAttachment - String URL to original attachment
imageSmall - String URL to small image version
imageMiddle - String URL to medium image version
imageLarge - String URL to large image version
rank - Int Display order rank
creationDateTime - String When attachment was created
description - String Attachment description
videoUrl - String Video URL if applicable
imageFixedWidth - String URL to fixed-width image version
group - String Attachment group
Example
{
  "id": "4",
  "type": "xyz789",
  "title": "xyz789",
  "attachmentName": "xyz789",
  "attachmentSize": 987,
  "originalAttachment": "xyz789",
  "imageSmall": "xyz789",
  "imageMiddle": "abc123",
  "imageLarge": "abc123",
  "rank": 123,
  "creationDateTime": "xyz789",
  "description": "xyz789",
  "videoUrl": "abc123",
  "imageFixedWidth": "abc123",
  "group": "xyz789"
}
Talent Clouds

TalentProfileProjectTag

Description

Skill or tag associated with a portfolio project

Fields
Field Name Description
id - ID Tag identifier
skill - Skill Skill associated with the tag
parentSkill - Skill Parent skill if applicable
Example
{
  "id": 4,
  "skill": Skill,
  "parentSkill": Skill
}
Talent Clouds

TalentProfileSettings

Description

Profile settings and account status information

Fields
Field Name Description
provider - Boolean Whether user is a service provider use idbc or legacySignalsDS
suspended - Boolean Whether account is suspended use idbc or legacySignalsDS
disabled - Boolean Whether account is disabled
status - String Current profile status
updatedDateTime - String Last update timestamp
Example
{
  "provider": true,
  "suspended": false,
  "disabled": false,
  "status": "abc123",
  "updatedDateTime": "xyz789"
}
Talent Clouds

TalentProfileSpecializedProject

Description

Portfolio project for a specialized profile

Fields
Field Name Description
id - ID! Project identifier
title - String Project title
description - String Project description
projectContractLink - TalentProjectContractLink Link to related contract if applicable
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": "abc123",
  "description": "abc123",
  "projectContractLink": TalentProjectContractLink,
  "thumbnail": "abc123",
  "thumbnailOriginal": "xyz789",
  "projectUrl": "abc123",
  "completionDateTime": "xyz789",
  "public": true,
  "rank": 123,
  "attachments": [TalentProfileProjectAttachment],
  "creationDateTime": "abc123",
  "categoryId": "4",
  "videoUrl": "abc123",
  "occupationId": "xyz789",
  "projectType": "CLASSIC_VIEW",
  "role": "abc123",
  "projectGoal": "abc123",
  "solution": "xyz789",
  "primaryImageId": "abc123",
  "modificationDateTime": "xyz789",
  "thumbnailId": "abc123",
  "thumbnailOriginalId": "abc123",
  "category": "xyz789",
  "subCategory": "abc123"
}
Talent Clouds

TalentProfileStatus

Values
Enum Value Description

DRAFT

PUBLISHED

Example
"DRAFT"
Talent Clouds

TalentProfileUserPreferences

Description

User preferences for profile visibility and privacy settings

Fields
Field Name Description
visibilityLevel - FreelancerProfileVisibility Profile visibility level (public, auth, private)
hideAgencyEarnings - Boolean Whether to hide agency earnings from profile
hideEarnings - Boolean Whether to hide all earnings from profile
exposeFullName - Boolean Whether to expose full name on profile
clientFeedbackOptional - Boolean Whether client feedback is optional
contractToHire - Boolean flag of whether the freelancer is open to contract to hire
Example
{
  "visibilityLevel": "PUBLIC",
  "hideAgencyEarnings": false,
  "hideEarnings": false,
  "exposeFullName": false,
  "clientFeedbackOptional": false,
  "contractToHire": true
}
Talent Clouds

TalentProjectList

Description

List of portfolio projects for a freelancer

Fields
Field Name Description
projects - [TalentProfileProject] Array of profile projects
totalProjects - Int Total number of projects
updatedDateTime - String Last update timestamp
Example
{
  "projects": [TalentProfileProject],
  "totalProjects": 987,
  "updatedDateTime": "xyz789"
}
Talent Clouds

TalentPurchasedInvitationBadge

Description

Purchased invitation badge details for premium visibility

Fields
Field Name Description
active - Boolean Whether badge is currently active
maxPrice - Int Maximum price for jobs to display badge
nextRenewalAt - String Next renewal date for the badge
Example
{
  "active": false,
  "maxPrice": 123,
  "nextRenewalAt": "xyz789"
}
Talent Clouds

TalentSkillNodeEdge

Description

Skill edge with ontology mapping

Fields
Field Name Description
skill - Skill Skill details
Example
{"skill": Skill}
Talent Clouds

TalentSpecializedProfile

Description

Specialized profile for a specific service or occupation

Fields
Field Name Description
personId - String Person identifier
profileId - String Profile identifier
occupationId - String Occupation identifier
status - TalentProfileStatus Profile status (draft or published)
rank - Int Display rank
occupations - [String] List of occupations
primary - Boolean Whether this is the primary profile
title - String Profile title
description - String Profile description
hourlyRate - Money Hourly rate for this profile
weblink - String Web link to profile
Example
{
  "personId": "xyz789",
  "profileId": "xyz789",
  "occupationId": "xyz789",
  "status": "DRAFT",
  "rank": 987,
  "occupations": ["xyz789"],
  "primary": true,
  "title": "xyz789",
  "description": "abc123",
  "hourlyRate": Money,
  "weblink": "xyz789"
}
Talent Clouds

TalentSpecializedProfileSkill

Description

Skills for a specialized profile

Fields
Field Name Description
skills - [TalentSpecializedProfileSkillNode] List of skills for this specialized profile
Example
{"skills": [TalentSpecializedProfileSkillNode]}
Talent Clouds

TalentSpecializedProfileSkillNode

Description

Skill node with ontology mapping for specialized profiles

Fields
Field Name Description
ontologySkill - TalentSkillNodeEdge Ontology skill reference
parentOntologySkill - TalentSkillNodeEdge Parent ontology skill if applicable
Example
{
  "ontologySkill": TalentSkillNodeEdge,
  "parentOntologySkill": TalentSkillNodeEdge
}
Talent Clouds

TalentSpecializedProfilesProject

Description

Project associated with a specialized profile

Fields
Field Name Description
personId - ID Person identifier
profileId - ID Profile identifier
project - TalentProfileSpecializedProject Project details
Example
{
  "personId": "4",
  "profileId": "4",
  "project": TalentProfileSpecializedProject
}
Talent Clouds

TalentWorkAccessType

Values
Enum Value Description

PUBLIC

PRIVATE

INDEX

Example
"PUBLIC"
Talent Clouds

TalentWorkFeedback

Description

Feedback details including comment, score, and visibility

Fields
Field Name Description
comment - String Feedback comment text
response - String Response to feedback
score - Float Overall feedback score
scores - [TalentFeedbackScore] Detailed scores by category
feedbackSuppressed - Boolean Whether feedback is suppressed
isPublic - Boolean Whether feedback is public
commentPublic - Boolean Whether comment is public
point - String Feedback point value
Example
{
  "comment": "abc123",
  "response": "abc123",
  "score": 987.65,
  "scores": [TalentFeedbackScore],
  "feedbackSuppressed": false,
  "isPublic": true,
  "commentPublic": false,
  "point": "xyz789"
}
Talent Clouds

TalentWorkHistory

Description

Work history entry including contract, feedback, and job details

Fields
Field Name Description
contract - TalentContract Contract details
contractAggregate - TalentContractAggregate Aggregated contract statistics
feedback - TalentContractFeedback Feedback for this contract
opening - TalentOpening Job opening details
Example
{
  "contract": TalentContract,
  "contractAggregate": TalentContractAggregate,
  "feedback": TalentContractFeedback,
  "opening": TalentOpening
}
Talent Clouds

TalentWorkHistoryConnection

Description

Connection type for paginated work history results

Fields
Field Name Description
workHistoryList - [TalentWorkHistory] List of work history items
totalCount - Int Total number of work history items
Example
{
  "workHistoryList": [TalentWorkHistory],
  "totalCount": 987
}
Talent Clouds

TalentWorkHistoryFilterInput

Description

input parameters for the talentWorkHistory

Fields
Input Field Description
personId - ID! Unique identifier for the person
contractIds - [ID] person contract ids
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
}
Talent Clouds

TalentWorkHistoryPagination

Fields
Input Field Description
offset - Int!
limit - Int!
Example
{"offset": 123, "limit": 123}
Talent Clouds

TalentWorkHistorySort

Fields
Input Field Description
type - TalentWorkHistorySortType!
order - SortOrder!
Example
{"type": "NEWEST", "order": "ASC"}
Talent Clouds

TalentWorkHistorySortType

Values
Enum Value Description

NEWEST

FEEDBACK_RATE

LARGEST

Example
"NEWEST"

Users and teams

AccessRestictionReason

Description

Reason why access is restricted

Values
Enum Value Description

ROLES_MISMATCH

SUSPENSION

MONETIZATION

Example
"ROLES_MISMATCH"
Users and teams

AccountAuditRecord

Description

Account audit record

Fields
Field Name Description
processInstanceId - ID! Process instace Id
status - String Status
metadata - [StringMapElement!]! Metadata
Example
{
  "processInstanceId": 4,
  "status": "abc123",
  "metadata": [StringMapElement]
}
Users and teams

AccountProcessInstance

Description

Account process instance

Fields
Field Name Description
id - ID Unique Id
success - Boolean! Success flag
Example
{"id": 4, "success": true}
Users and teams

ActivitiesConnection

Description

Paginated collection of activities

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
}
Users and teams

Activity

Description

Represents a task/activity available for time tracking

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": "abc123",
  "status": "xyz789",
  "level": "xyz789",
  "contracts": [ActivityContract],
  "userId": "4",
  "code": "abc123",
  "createdTime": "xyz789",
  "companyId": "abc123",
  "recordId": 4,
  "teamId": 4,
  "description": "abc123"
}
Users and teams

ActivityContract

Description

Link between an activity and a contract

Fields
Field Name Description
contractId - ID!

Defines contract ID

Example: "12345"

Example
{"contractId": 4}
Users and teams

ActivityEdge

Description

Edge wrapper containing an activity node for pagination

Fields
Field Name Description
node - Activity Defines activity node
Example
{"node": Activity}
Users and teams

ActivityFilterInput

Fields
Input Field Description
contractId - ID Filter activities assigned to a specific contract
search - String Search term to filter tasks by code and description
status - String Filter activities by status
detailsLimit - Int Amount of contracts to return
Example
{
  "contractId": "4",
  "search": "xyz789",
  "status": "xyz789",
  "detailsLimit": 123
}
Users and teams

AddTeamActivityRequest

Description

Defines activity object that is going to be created

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": 123.45,
  "batchAssignment": "selectedContracts"
}
Users and teams

AgencyDetails

Description

Agency profile details

Fields
Field Name Description
vetted - Boolean Whether the agency is vetted
topRatedStatus - String Top Rated status
topRatedPlusStatus - String Top Rated Plus status
Example
{
  "vetted": false,
  "topRatedStatus": "abc123",
  "topRatedPlusStatus": "abc123"
}
Users and teams

AvailabilitySource

Description

Sources of availability updates for a freelancer

Values
Enum Value Description

st_assgn_e

endassgn_e

m_ignore_e

a_ignore_e

onboarding

fwh_ui

profile_ui

ui_tobusy

automatic

manual

Example
"st_assgn_e"
Users and teams

BatchAssignmentOptions

Description

Assignment scope options for activities

Values
Enum Value Description

selectedContracts

Selected contracts only

allInOrg

All contracts within the immediate organization

allInTopLevelOrg

All contracts within the top-level organization

allInMyOrgs

All contracts across organizations the user manages
Example
"selectedContracts"
Users and teams

BillingType

Description

Billing relationship type

Values
Enum Value Description

BILL

MANAGED_EMPLOYER

MANAGED_SERVICES

Example
"BILL"
Users and teams

ClientVerificationStatus

Description

Client identity verification status

Values
Enum Value Description

VERIFIED

NOT_VERIFIED

1

ACTIVE_BUT_NOT_VERIFIED

2

VERIFICATION_IN_PROGRESS

3

UNKNOWN

4
Example
"VERIFIED"
Users and teams

CompanyInfo

Description

Public and private company info bundle

Fields
Field Name Description
public - PublicCompanyInfo Public-facing company information
private - PrivateCompanyInfo Private/internal company information
Example
{
  "public": PublicCompanyInfo,
  "private": PrivateCompanyInfo
}
Users and teams

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]}
Users and teams

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": "xyz789",
  "photoUrl": "xyz789",
  "organizationId": "xyz789",
  "organizationRid": "abc123",
  "organizationType": "Business",
  "organizationLegacyType": "Client",
  "organizationEnterpriseType": "Standard",
  "legacyEnterpriseOrganization": true,
  "typeTitle": "xyz789"
}
Users and teams

CompanySelectorOrganizationEnterpriseType

Description

The enterprise type of the organization

Values
Enum Value Description

Standard

Compliance

Example
"Standard"
Users and teams

CompanySelectorOrganizationLegacyType

Description

The legacy type of the organization

Values
Enum Value Description

Client

Vendor

Example
"Client"
Users and teams

CompanySelectorOrganizationType

Description

The type of the organization

Values
Enum Value Description

Business

SoleProprietor

Example
"Business"
Users and teams

CreateEmploymentRecordInput

Description

Create employment record input

Fields
Input Field Description
userId - ID User identifier
companyName - String! Company name
jobTitle - String! Job title
standardizedCompanyId - String Standardized company identifier
standardizedJobTitleId - String Standardized job title identifier
role - String! Role in the company
startDate - String! start date - e.g: "1999-01-01"
endDate - String end date - e.g: "2002-01-01"
description - String Role description
city - String! City name
country - String! Country name
Example
{
  "userId": 4,
  "companyName": "abc123",
  "jobTitle": "abc123",
  "standardizedCompanyId": "xyz789",
  "standardizedJobTitleId": "abc123",
  "role": "xyz789",
  "startDate": "xyz789",
  "endDate": "abc123",
  "description": "xyz789",
  "city": "abc123",
  "country": "xyz789"
}
Users and teams

CreateOrganizationInput

Fields
Input Field Description
parentOrganizationId - ID!
organizationName - String!
aceRid - String
country - String
type - OrganizationRequestType
Example
{
  "parentOrganizationId": 4,
  "organizationName": "xyz789",
  "aceRid": "abc123",
  "country": "xyz789",
  "type": "AGENCY"
}
Users and teams

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
userId - ID

User identifier (optional)

pagination - Pagination

Pagination options

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
Arguments
id - ID!

Organization identifier

userId - ID

User identifier (optional)

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
pagination - Pagination

Pagination options

userPermissions - UserPermissions Get user permissions under organization
Arguments
filter - OrgUserPermissionFilterV2!

Filter to load users` permissions under organization

agencyOffers - ContractOfferConnection List of offers for root agency organization
Arguments
offerByRootCompanyFilter - OfferByRootCompanyFilter
sortAttribute - SortAttribute
pagination - Pagination!
clientOffers - ContractOfferConnection List of offers for the client organization The maximum page size is 50
Arguments
offerByClientFilter - OfferByClientFilter
sortAttribute - SortAttribute
pagination - Pagination!
clientTimeReport - [TimeReport!] List of client time reports for the given date time range, both inclusive use clientContractTimeReport instead
Arguments
timeReportDate_bt - DateTimeRange!
clientContractTimeReport - TimeReportConnection!
Arguments
timeReportDate_bt - DateTimeRange!
pagination - Pagination
agencyTimeReport - [TimeReport!] List of agency time reports for the given date time range, both inclusive use agencyContractTimeReport instead
Arguments
timeReportDate_bt - DateTimeRange!
agencyContractTimeReport - TimeReportConnection
Arguments
timeReportDate_bt - DateTimeRange!
pagination - Pagination
privateTalentClouds - [PrivateTalentCloud!]
jobPosting - JobPostingConnection
Arguments
jobPostingFilter - JobPostingsFilter!

Filter for job posts

sortAttribute - SortAttribute

Sort attribute

Example
{
  "id": 4,
  "rid": 4,
  "legacyId": "4",
  "name": "abc123",
  "type": "BUSINESS",
  "legacyType": "CLIENT",
  "flag": OrganizationFlag,
  "parentOrganization": CurrentOrganization,
  "active": false,
  "hidden": true,
  "childOrganizations": [CurrentOrganization],
  "childOrganization": CurrentOrganization,
  "company": PrivateCompanyInfo,
  "photoUrl": "xyz789",
  "creationDate": "abc123",
  "staffs": StaffsConnection,
  "userPermissions": UserPermissions,
  "agencyOffers": ContractOfferConnection,
  "clientOffers": ContractOfferConnection,
  "clientTimeReport": [TimeReport],
  "clientContractTimeReport": TimeReportConnection,
  "agencyTimeReport": [TimeReport],
  "agencyContractTimeReport": TimeReportConnection,
  "privateTalentClouds": [PrivateTalentCloud],
  "jobPosting": JobPostingConnection
}
Users and teams

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.
userPermissions - UserPermissions Get user permissions
Arguments
filter - UserPermissionFilterV2!

Filter to load specific user's permissions

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
offerForFreelancerFilter - OfferForFreelancerFilter
sortAttribute - SortAttribute
pagination - Pagination!
timeReport - [TimeReport!] List of time reports for the current user(freelancer) and given date range, both inclusive use contractTimeReport instead
Arguments
timeReportDate_bt - DateTimeRange!
contractTimeReport - TimeReportConnection!
Arguments
timeReportDate_bt - DateTimeRange!
pagination - Pagination
freelancerProfile - FreelancerProfile Freelancer profile for the current user
ciphertext - String Unique ciphertext identifier
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
companyReferencedId - ID

Company referenced identifier

talentProfile - TalentProfile Current user's primary freelancer profile data
Example
{
  "id": "4",
  "nid": 4,
  "rid": "4",
  "email": "abc123",
  "name": "xyz789",
  "userPermissions": UserPermissions,
  "photoUrl": "xyz789",
  "offer": ContractOfferConnection,
  "timeReport": [TimeReport],
  "contractTimeReport": TimeReportConnection,
  "freelancerProfile": FreelancerProfile,
  "ciphertext": "abc123",
  "i18NSettings": I18nSettings,
  "talentProfile": TalentProfile
}
Users and teams

FailedInvitation

Description

Failed invitation

Fields
Field Name Description
email - String Invitee email
username - String Invitee username
Example
{
  "email": "abc123",
  "username": "abc123"
}
Users and teams

FreelancerLanguageInput

Description

Create freelancer language input

Fields
Input Field Description
userId - ID User identifier
iso639Code - String ISO 639 language code
language - LanguageDataInput! Language details
Example
{
  "userId": 4,
  "iso639Code": "xyz789",
  "language": LanguageDataInput
}
Users and teams

FreelancerLocation

Description

Location of the freelancer

Fields
Field Name Description
countryName - String
cityName - String
zip - String
timezone - String!
street - String
Example
{
  "countryName": "xyz789",
  "cityName": "abc123",
  "zip": "xyz789",
  "timezone": "xyz789",
  "street": "xyz789"
}
Users and teams

FreelancerProfile

Description

Freelancer Profile details.

Fields
Field Name Description
user - CurrentUser! the user (freelancer) who owns this profile(must be used only for current user use case)
userDetails - GenericUser! the user (freelancer) who owns this profile(can be used for any user use case)
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
SortAttribute - SortAttribute
pagination - Pagination
languages - FreelancerProfileLanguagesConnection! list of languages that freelancer can speak
educationRecords - [FreelancerProfileEducationRecord!]! list of educationRecords. eg: educationRecords where areaOfStudy eq Computer Engineering
Arguments
SortAttribute - SortAttribute
pagination - Pagination
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
id - ID!

Project identifier

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 Country details
email - String Email address
portrait - Portrait Profile portrait
phoneNumber - PhoneNumber phone number visible only for the current user
privateTalentCloud - PrivateTalentCloudConnection! talent clouds that the freelancer is part of
Example
{
  "user": CurrentUser,
  "userDetails": GenericUser,
  "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": "abc123",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "countryDetails": Country,
  "email": "abc123",
  "portrait": Portrait,
  "phoneNumber": PhoneNumber,
  "privateTalentCloud": PrivateTalentCloudConnection
}
Users and teams

FreelancerProfileAggregates

Description

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": "abc123",
  "lastApplicationDate": "xyz789",
  "totalHourlyJobs": 987,
  "totalHourlyJobsRecent": 123,
  "totalFixedJobs": 123,
  "totalFixedJobsRecent": 987,
  "responsiveness": "xyz789",
  "totalRevenue": Money,
  "activeInterviews": 123,
  "currentContracts": 123,
  "jobSuccessScore": 987.65,
  "topRatedStatus": "xyz789",
  "topRatedPlusStatus": "xyz789",
  "vetted": true,
  "totalHoursActual": 123.45,
  "totalHours": 987.65,
  "totalHoursRecent": 987.65,
  "totalFeedback": 123.45,
  "totalFeedbackRecent": 987.65,
  "billedContracts": 123,
  "billedContractsRecent": 987,
  "adjustedFeedbackScore": 987.65,
  "adjustedFeedbackScoreRecent": 123.45,
  "profileStats": FreelancerProfileStats,
  "lastActivityDateTime": "xyz789",
  "totalEarnings": Money,
  "topRatedStatusDatetime": "xyz789",
  "recentEarnings": Money,
  "averageRecentEarnings": Money,
  "recentCharge": Money,
  "averageRecentCharge": Money,
  "qualityScore": 987.65,
  "totalHoursRounded": 123
}
Users and teams

FreelancerProfileAvailability

Description

ProfilePart: Freelancer's Availability

Fields
Field Name Description
id - ID! Availability record identifier
user - GenericUser! User this availability belongs to
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": "xyz789"
}
Users and teams

FreelancerProfileAvailabilityCapacity

Values
Enum Value Description

fullTime

Full-time availability

partTime

Part-time availability

lessThen

Less than a specified amount

notSure

Not sure about availability

rangeOfHours

Specific range of hours

none

No availability specified
Example
"fullTime"
Users and teams

FreelancerProfileAvailabilityInput

Description

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! Updated availability payload
Example
{
  "userId": "4",
  "availability": FreelancerProfileCapacityInput
}
Users and teams

FreelancerProfileCapacityInput

Fields
Input Field Description
capacity - FreelancerProfileAvailabilityCapacity Availability capacity selection
availabilityDateTime - String Next availability date
creationDateTime - String! Creation timestamp
sourceInput - AvailabilitySource Source of the availability update
Example
{
  "capacity": "fullTime",
  "availabilityDateTime": "xyz789",
  "creationDateTime": "xyz789",
  "sourceInput": "st_assgn_e"
}
Users and teams

FreelancerProfileCertificate

Description

End ProfilePart: Freelancer's Education Records

ProfilePart: Freelancer's Certificates

Fields
Field Name Description
id - ID! Certificate record identifier
earnedDate - String
submissionCode - String
notes - String
score - String
active - Boolean
verified - Boolean
url - String
createdDateTime - String
lastUpdatedDateTime - String
expirationDate - String
externalId - String
Example
{
  "id": "4",
  "earnedDate": "abc123",
  "submissionCode": "xyz789",
  "notes": "abc123",
  "score": "xyz789",
  "active": false,
  "verified": false,
  "url": "xyz789",
  "createdDateTime": "xyz789",
  "lastUpdatedDateTime": "abc123",
  "expirationDate": "abc123",
  "externalId": "xyz789"
}
Users and teams

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": "xyz789"
}
Users and teams

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": 123,
  "display": 987,
  "action": "xyz789",
  "actionCredit": 987,
  "actionForEmptySection": "xyz789",
  "skillsCount": 123,
  "employmentRecordCount": 987,
  "portraitRecordCount": 123,
  "overviewRecordCount": 987,
  "videoRecordCount": 987,
  "educationRecordCount": 123,
  "certificatesCount": 987,
  "otherExperiencesCount": 987,
  "portfolioCount": 987,
  "linkedExternalAccountsCount": 123,
  "createdDateTime": "abc123"
}
Users and teams

FreelancerProfileContract

Description

End ProfilePart: ProfileAggregates

isFromElance - TODO: Probably Legacy: clarification required

Fields
Field Name Description
id - ID! Contract identifier
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! Whether the contract is private
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 this flag determines where this contract is from ; either Elance or ODesk ?
Example
{
  "id": "4",
  "description": "xyz789",
  "title": "xyz789",
  "clientOrganization": GenericOrganization,
  "type": "Fixed",
  "accessType": "PublicAccess",
  "private": false,
  "job": JobPosting,
  "startDateTime": "xyz789",
  "endDateTime": "xyz789",
  "totalCharges": Money,
  "totalHours": 987.65,
  "hourlyRate": Money,
  "initialAmount": Money,
  "feedbackToTheClient": FreelancerProfileContractFeedback,
  "feedbackToTheFreelancer": FreelancerProfileContractFeedback,
  "isFromElance": false
}
Users and teams

FreelancerProfileContractAccessType

Values
Enum Value Description

PublicAccess

Visible publicly

PrivateAccess

Visible to invited roles only

AuthAccess

Visible to authenticated users
Example
"PublicAccess"
Users and teams

FreelancerProfileContractFeedback

Description

Contract feedback

Fields
Field Name Description
score - Float! Overall feedback score
comment - String Optional comment from the rater
publicComment - Boolean! Whether the comment is public
response - String Response from the recipient
scoreDetails - [FreelancerProfileContractFeedbackScore!] Detailed category scores
Example
{
  "score": 987.65,
  "comment": "abc123",
  "publicComment": true,
  "response": "xyz789",
  "scoreDetails": [FreelancerProfileContractFeedbackScore]
}
Users and teams

FreelancerProfileContractFeedbackScore

Description

Contract feedback score

Fields
Field Name Description
score - Float! Value of the category score
label - String! Category label
description - String Optional description
Example
{
  "score": 987.65,
  "label": "xyz789",
  "description": "abc123"
}
Users and teams

FreelancerProfileContractType

Values
Enum Value Description

Fixed

Fixed-price contract

Hourly

Hourly contract
Example
"Fixed"
Users and teams

FreelancerProfileEducationRecord

Description

End ProfilePart: Freelancer's Languages

ProfilePart: Freelancer's Education Records

Fields
Field Name Description
id - ID! Education record identifier
user - GenericUser User linked to this education record
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": "abc123",
  "standardizedInstitutionId": "4",
  "areaOfStudy": "xyz789",
  "standardizedAreaOfStudyId": "4",
  "degree": "abc123",
  "standardizedDegreeId": "4",
  "startDate": "abc123",
  "endDate": "xyz789",
  "description": "abc123"
}
Users and teams

FreelancerProfileEducationRecordsFilter

Description

EducationRecords related filters

Fields
Input Field Description
institutionName_eq - String Filter by institution name
degree_eq - String Filter by degree name
Example
{
  "institutionName_eq": "abc123",
  "degree_eq": "abc123"
}
Users and teams

FreelancerProfileEmploymentRecord

Description

ProfilePart: Freelancer's Employment Record

Fields
Field Name Description
id - ID! Employment record identifier
user - GenericUser! User who owns this record
companyName - String! Company name
jobTitle - String! Job title
standardizedCompanyId - String Standardized company identifier
standardizedJobTitleId - String Standardized job title identifier
role - String Role or position held
startDate - String! start date formatted according to ISO-8601
endDate - String end date - e.g: "2002-01-01"
description - String Role description
city - String! City where employed
country - String! Country where employed
Example
{
  "id": 4,
  "user": GenericUser,
  "companyName": "xyz789",
  "jobTitle": "xyz789",
  "standardizedCompanyId": "abc123",
  "standardizedJobTitleId": "abc123",
  "role": "abc123",
  "startDate": "abc123",
  "endDate": "abc123",
  "description": "abc123",
  "city": "abc123",
  "country": "abc123"
}
Users and teams

FreelancerProfileExperienceLevel

Values
Enum Value Description

NONE

No level specified

ENTRY_LEVEL

Entry-level experience

INTERMEDIATE

Intermediate experience

EXPERT

Expert experience
Example
"NONE"
Users and teams

FreelancerProfileJobCategoriesConnection

Description

End ProfilePart: Freelancer's Contracts

ProfilePart: Job Categories

Fields
Field Name Description
edges - [FreelancerProfileJobCategoryEdge!] Edges in the job categories connection
Example
{"edges": [FreelancerProfileJobCategoryEdge]}
Users and teams

FreelancerProfileJobCategory

Description

Selected job categories

Fields
Field Name Description
category - JobCategory Top-level job category
selectedSubCategories - [JobCategory!]! Selected subcategories for this category
Example
{
  "category": JobCategory,
  "selectedSubCategories": [JobCategory]
}
Users and teams

FreelancerProfileJobCategoryEdge

Description

Job category connection edge

Fields
Field Name Description
node - FreelancerProfileJobCategory! Job category node
Example
{"node": FreelancerProfileJobCategory}
Users and teams

FreelancerProfileLanguage

Description

Freelancer language with proficiency and verification

Fields
Field Name Description
id - ID! Language record identifier
language - Language! Language details
verified - Boolean Whether the language is verified
verifiedByCertificate - Boolean Verified via certificate
verifiedByFeedback - Boolean Verified via feedback
Example
{
  "id": "4",
  "language": Language,
  "verified": false,
  "verifiedByCertificate": false,
  "verifiedByFeedback": true
}
Users and teams

FreelancerProfileLanguageEdge

Description

Language connection edge

Fields
Field Name Description
node - FreelancerProfileLanguage! Language item node
Example
{"node": FreelancerProfileLanguage}
Users and teams

FreelancerProfileLanguageProficiencyTitle

Values
Enum Value Description

BASIC

Basic proficiency

CONVERSATIONAL

Conversational proficiency

FLUENT

Fluent proficiency

NATIVE_OR_BILINGUAL

Native or bilingual proficiency
Example
"BASIC"
Users and teams

FreelancerProfileLanguagesConnection

Description

End ProfilePart: Other Experiences of the the freelancer

ProfilePart: Freelancer's Languages

Fields
Field Name Description
edges - [FreelancerProfileLanguageEdge!] Edges in the languages connection
Example
{"edges": [FreelancerProfileLanguageEdge]}
Users and teams

FreelancerProfileLinkedExternalAccounts

Description

Linked external account details

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": "abc123",
  "expiryDateTime": "abc123",
  "revokedDateTime": "xyz789",
  "authorizedDateTime": "xyz789",
  "userProfile": "xyz789"
}
Users and teams

FreelancerProfileLinkedExternalAccountsConnection

Description

End ProfilePart: PCI

ProfilePart: Linked External Accounts

Fields
Field Name Description
edges - [FreelancerProfileLinkedExternalAccountsEdge!] Edges in the linked external accounts connection
Example
{"edges": [FreelancerProfileLinkedExternalAccountsEdge]}
Users and teams

FreelancerProfileLinkedExternalAccountsEdge

Description

Linked external accounts connection edge

Fields
Field Name Description
node - FreelancerProfileLinkedExternalAccounts! Linked external account node
Example
{"node": FreelancerProfileLinkedExternalAccounts}
Users and teams

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": "xyz789",
  "updatedDateTime": "xyz789"
}
Users and teams

FreelancerProfileOtherExperienceEdge

Fields
Field Name Description
node - FreelancerProfileOtherExperience! Other experience node
cursor - String! Cursor for pagination
Example
{
  "node": FreelancerProfileOtherExperience,
  "cursor": "abc123"
}
Users and teams

FreelancerProfileOtherExperiencesConnection

Description

End ProfilePart: Freelancer Profile UserPreferences

ProfilePart: Other Experiences of the the freelancer

Fields
Field Name Description
totalCount - Int Total number of other experiences
edges - [FreelancerProfileOtherExperienceEdge!] Edges in the connection
pageInfo - PageInfo Pagination information
Example
{
  "totalCount": 123,
  "edges": [FreelancerProfileOtherExperienceEdge],
  "pageInfo": PageInfo
}
Users and teams

FreelancerProfileOtherExperiencesFilter

Description

OtherExperiences related filters

Fields
Input Field Description
subject_eq - String Filter by subject
Example
{"subject_eq": "abc123"}
Users and teams

FreelancerProfilePersonalData

Description

ProfilePart: Personal data of the freelancer

Fields
Field Name Description
firstName - String! First name
lastName - String! Last name
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": "xyz789",
  "description": "abc123",
  "address": FreelancerLocation,
  "chargeRate": Money,
  "workPhone": "xyz789",
  "profileUrl": "xyz789",
  "profileState": "IN_PROGRESS"
}
Users and teams

FreelancerProfileProject

Description

Portfolio projects of the Freelancer

Fields
Field Name Description
id - ID! Project identifier
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 Primary image file identifier
createdDateTime - String!
Example
{
  "id": "4",
  "title": "xyz789",
  "description": "xyz789",
  "contractLink": FreelancerProfileProjectContractLink,
  "thumbnailId": "abc123",
  "thumbnailOriginalId": "xyz789",
  "thumbnail": "xyz789",
  "thumbnailOriginal": "abc123",
  "projectUrl": "abc123",
  "completionDateTime": "abc123",
  "public": false,
  "rank": 987,
  "attachments": [FreelancerProfileProjectAttachment],
  "skills": FreelancerSkillsConnection,
  "category": JobCategory,
  "subCategory": JobCategory,
  "occupationId": "abc123",
  "projectType": "CLASSIC_VIEW",
  "role": "xyz789",
  "projectGoal": "abc123",
  "solution": "abc123",
  "primaryImageId": "abc123",
  "createdDateTime": "abc123"
}
Users and teams

FreelancerProfileProjectAttachment

Description

Project attachment

Fields
Field Name Description
id - ID Attachment identifier
link - String Public URL to the attachment
fileName - String Original file name
fileSize - Int File size in bytes
rank - Int Display order of the attachment
videoUrl - String Video URL if attachment is a video
type - String Attachment type (e.g., IMAGE, VIDEO)
title - String Attachment title
description - String Attachment description
imageSmall - String Small image URL
imageMiddle - String Medium image URL
imageLarge - String Large image URL
Example
{
  "id": 4,
  "link": "abc123",
  "fileName": "xyz789",
  "fileSize": 123,
  "rank": 987,
  "videoUrl": "abc123",
  "type": "abc123",
  "title": "xyz789",
  "description": "abc123",
  "imageSmall": "xyz789",
  "imageMiddle": "xyz789",
  "imageLarge": "abc123"
}
Users and teams

FreelancerProfileProjectType

Values
Enum Value Description

CLASSIC_VIEW

Classic project view

CASE_STUDY

Case study format

GALLERY

Image gallery format

MULTIMEDIA_PORTFOLIO_VIEW

Multimedia portfolio view
Example
"CLASSIC_VIEW"
Users and teams

FreelancerProfileResponseTime

Values
Enum Value Description

NEVER

Never responds

SOON

Responds soon (e.g., within hours)

IMMEDIATE

Responds immediately (e.g., within minutes)
Example
"NEVER"
Users and teams

FreelancerProfileStats

Description

Aggregated freelancer performance stats

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": 987,
  "suspensions90limited": 987,
  "topLevelJobCategoryApplied90Days": "abc123",
  "proposalsCount90Days": 987,
  "medianProposalsForTheTopLevelCategory365": 987,
  "fitProposalsViewRatio90Days": 123.45,
  "hiddenProposalsViewedRatio90Days": 987.65,
  "totalProposalsViewedRatio90Days": 987.65,
  "proposalInterviewedRation90Days": 123.45,
  "proposalsHiredRatio90Days": 987.65,
  "hideReasonsForProposals": ["xyz789"],
  "totalInvites90Days": 987,
  "totalInviteResponses90Days": 123,
  "inviteResponsesPerDay90Days": 987,
  "totalCharge365NoPending": Money,
  "totalCharge90": Money,
  "weeksEligibleWithin16wks": 123.45
}
Users and teams

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": false,
  "clientFeedbackOptional": false,
  "projectTypePreference": "BOTH_LONGTERM_AND_ONETIME",
  "hideJss": true
}
Users and teams

FreelancerProfileVerifications

Description

ProfilePart: Verifications

Fields
Field Name Description
idVerified - Boolean! if the freelancers id is verified
phoneVerified - Boolean! if the freelancers phone number is verified
webcamVerified - Boolean! if the identification through webcam is done
idBadgeStatus - String ID badge status
Example
{
  "idVerified": true,
  "phoneVerified": false,
  "webcamVerified": true,
  "idBadgeStatus": "abc123"
}
Users and teams

FreelancerProfileVisibility

Values
Enum Value Description

PUBLIC

Visible to everyone

ONLY_UPWORK_USERS

Visible to Upwork users only

PRIVATE

Visible only to the user

AUTH

Visible to authenticated users
Example
"PUBLIC"
Users and teams

FreelancerProjectTypePreference

Values
Enum Value Description

BOTH_LONGTERM_AND_ONETIME

Both long-term and one-time projects

LONGER_TERM_3PLUS_MONTHS

Longer than 3 months

SHORTER_TERM_LESS_THAN_3MONTHS

Shorter than 3 months
Example
"BOTH_LONGTERM_AND_ONETIME"
Users and teams

FreeLancerSkillEdge

Description

Skill connection edge

Fields
Field Name Description
node - Skill! Skill node
Example
{"node": Skill}
Users and teams

FreelancerSkillsConnection

Description

End ProfilePart: Personal data of the freelancer

ProfilePart: Skills data of the freelancer

Fields
Field Name Description
edges - [FreeLancerSkillEdge!] Edges in the skills connection
Example
{"edges": [FreeLancerSkillEdge]}
Users and teams

FreelancerVisibility

Description

Freelancer visibility settings

Fields
Field Name Description
locked - Boolean Whether visibility is locked by policy or hold
risky - Boolean Whether the profile is flagged as risky
currentVisibility - String Current visibility selection
originalVisibility - String Original visibility before changes
Example
{
  "locked": true,
  "risky": false,
  "currentVisibility": "xyz789",
  "originalVisibility": "xyz789"
}
Users and teams

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
offerByRootCompanyFilter - OfferByRootCompanyFilter
sortAttribute - SortAttribute
pagination - Pagination!
clientOffers - ContractOfferConnection List of offers for the client organization The maximum page size is 50
Arguments
offerByClientFilter - OfferByClientFilter
sortAttribute - SortAttribute
pagination - Pagination!
jobPosting - JobPostingConnection
Arguments
jobPostingFilter - JobPostingsFilter!

Filter for job posts

sortAttribute - SortAttribute

Sort attribute

Example
{
  "id": 4,
  "rid": "4",
  "legacyId": 4,
  "name": "xyz789",
  "type": "BUSINESS",
  "legacyType": "CLIENT",
  "flag": OrganizationFlag,
  "parentOrganization": GenericOrganization,
  "active": true,
  "hidden": true,
  "company": PrivateCompanyInfo,
  "photoUrl": "abc123",
  "creationDate": "abc123",
  "agencyOffers": ContractOfferConnection,
  "clientOffers": ContractOfferConnection,
  "jobPosting": JobPostingConnection
}
Users and teams

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 Freelancer profile for the specified user
ciphertext - String Unique ciphertext identifier
talentProfile - TalentProfile Get talent profile for the user
Example
{
  "id": "4",
  "nid": 4,
  "rid": "4",
  "name": "abc123",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "photoUrl": "xyz789",
  "publicUrl": "abc123",
  "email": "xyz789",
  "location": UserLocation,
  "freelancerProfile": FreelancerProfile,
  "ciphertext": "abc123",
  "talentProfile": TalentProfile
}
Users and teams

I18nLocation

Description

Contains location information used in i18n settings

Fields
Field Name Description
country - Country Country information for the user's location
Example
{"country": Country}
Users and teams

I18nSettings

Description

User's i18n entity

Fields
Field Name Description
countrySupported - Boolean Whether the user's country is supported for i18n features
location - I18nLocation Location information for i18n settings
status - I18nSettingsStatus Current i18n eligibility status
locationViewType - LocationViewType How location should be displayed to the user
userPreferredLocationType - UserPreferredLocationType User's preferred location type preference
settingsFlags - I18nSettingsFlags Collection of i18n feature flags
Example
{
  "countrySupported": true,
  "location": I18nLocation,
  "status": "ELIGIBLE",
  "locationViewType": "COUNTRY",
  "userPreferredLocationType": "WORLD",
  "settingsFlags": I18nSettingsFlags
}
Users and teams

I18nSettingsFlags

Description

A set of i18n flags/checks

Fields
Field Name Description
showDomesticLocationFilterOnFLSearch - Boolean Whether to show domestic location filter on freelancer search
showJobSearch - Boolean Whether to show job search functionality
showPhoneVerification - Boolean Whether to show phone verification option
showSmfToUpdateAddress - Boolean Whether to show site message to update address
showPersonalAddressAutocomplete - Boolean Whether to show personal address autocomplete
showMessageContainer - Boolean Whether to show message container
showLocationPreferenceOnJobPost - Boolean Whether to show location preference on job post
defaultDomesticEnabled - Boolean Whether domestic filtering is enabled by default
jobSearchDefaultedToON - Boolean Whether job search is defaulted to ON
showLocationVerificationOnFWH - Boolean Whether to show location verification on find work home
domesticEnabledForFreelancersOnFLSearch - Boolean Whether domestic is enabled for freelancers on freelancer search
Example
{
  "showDomesticLocationFilterOnFLSearch": true,
  "showJobSearch": true,
  "showPhoneVerification": true,
  "showSmfToUpdateAddress": true,
  "showPersonalAddressAutocomplete": true,
  "showMessageContainer": true,
  "showLocationPreferenceOnJobPost": false,
  "defaultDomesticEnabled": false,
  "jobSearchDefaultedToON": true,
  "showLocationVerificationOnFWH": true,
  "domesticEnabledForFreelancersOnFLSearch": true
}
Users and teams

I18nSettingsStatus

Description

I18n status values

Values
Enum Value Description

ELIGIBLE

NON_ELIGIBLE

Example
"ELIGIBLE"
Users and teams

InvitationToTeamInput

Fields
Input Field Description
flow - InviteToTeamFlow! inviteFlow
inviteeEmail - String email of the invitee
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",
  "invitedToTopLevelOrganizationId": 4,
  "invitedToOrganizationsIds": [4],
  "inviterUserId": "4",
  "landingUrl": "abc123",
  "emailParams": InviteToTeamEmailParams,
  "metadata": [StringMapElementInput],
  "frankoRolesToBeAssigned": ["xyz789"],
  "hierarchical": false,
  "includeFirstOrgIdAsParticipant": true
}
Users and teams

InviteToTeamEmailParams

Fields
Input Field Description
message - String! message to be sent to invitee
Example
{"message": "xyz789"}
Users and teams

InviteToTeamFailedResponse

Description

Failed response for invite to team

Fields
Field Name Description
code - String Failure code
message - String Human-readable failure message
invitation - FailedInvitation Failed invitation payload
Example
{
  "code": "abc123",
  "message": "xyz789",
  "invitation": FailedInvitation
}
Users and teams

InviteToTeamFlow

Values
Enum Value Description

HELP_ME_HIRE

Help Me Hire entry point

DETECT_AND_REDIRECT

Detect-and-redirect flow

HELP_ME_HIRE_JOB_POST_FORM

Help Me Hire job post form

HELP_ME_HIRE_PROPOSAL_MANAGER

Proposal manager flow

HELP_ME_HIRE_FREELANCER_PROFILE

Freelancer profile entry

HELP_ME_HIRE_STANDALONE_PAGE

Standalone page entry

HELP_ME_HIRE_DASH_INTERVIEW_ROOM

Dash interview room entry

HELP_ME_HIRE_DASH_CONTRACT_ROOM

Dash contract room entry

HELP_ME_HIRE_GLOBAL_NAV

Global navigation entry

HELP_ME_HIRE_JOBS_HOME_MOBILE

Jobs home mobile entry

HELP_ME_HIRE_JOBS_HOME_DESKTOP

Jobs home desktop entry

CLIENT_INVITE_TO_TEAM

Client invites to team

AGENCY_INVITE_TO_TEAM

Agency invites to team

HELP_ME_HIRE_DASH

Help Me Hire dashboard

DASH_INVITE_TO_ROOM

Dash invite to room

AC_TO_EAC_INVITE

AC to EAC invite

BYO_EOR_AGENCY

BYO EOR agency flow

HELP_ME_HIRE2_JOB_POST_FORM

Help Me Hire 2 job post form

HELP_ME_HIRE_TEST_RESEND

Help Me Hire test resend

HELP_ME_HIRE2_JOBS_HOME_SHARE

Help Me Hire 2 jobs home share

HELP_ME_HIRE2_ALL_JOBS_SHARE

Help Me Hire 2 all jobs share

HELP_ME_HIRE2_GLOBAL_NAV

Help Me Hire 2 global navigation

HELP_ME_HIRE2_JOBS_HOME_MOBILE

Help Me Hire 2 jobs home mobile

HELP_ME_HIRE2_JOBS_HOME_DESKTOP

Help Me Hire 2 jobs home desktop
Example
"HELP_ME_HIRE"
Users and teams

InviteToTeamResponse

Description

Invite to team response details

Fields
Field Name Description
succeeded - [InviteToTeamSucceededResponse]! Successfully processed invitations
failed - [InviteToTeamFailedResponse]! Failed invitations with reasons
Example
{
  "succeeded": [InviteToTeamSucceededResponse],
  "failed": [InviteToTeamFailedResponse]
}
Users and teams

InviteToTeamSucceededResponse

Description

Success response for invite to team

Fields
Field Name Description
id - ID! Invitation identifier
token - String Invitation token
Example
{"id": 4, "token": "xyz789"}
Users and teams

LanguageDataInput

Description

Language input

Fields
Input Field Description
id - ID Language record identifier
personRid - ID Person RID linking this language
verified - Boolean Whether the language is verified
verifiedByCertificate - Boolean Whether verified via certificate
verifiedByFeedback - Boolean Whether verified via feedback
language - LanguageInput! Language core details
proficiencyLevel - LanguageProficiencyLevelInput! Proficiency level details
Example
{
  "id": 4,
  "personRid": "4",
  "verified": true,
  "verifiedByCertificate": false,
  "verifiedByFeedback": false,
  "language": LanguageInput,
  "proficiencyLevel": LanguageProficiencyLevelInput
}
Users and teams

LanguageInput

Description

Language details input

Fields
Input Field Description
iso639Code - String! ISO 639 language code
active - Boolean! Whether the language is active
englishName - String! English name of the language
Example
{
  "iso639Code": "xyz789",
  "active": true,
  "englishName": "abc123"
}
Users and teams

LanguageProficiencyLevelInput

Description

Proficiency level input

Fields
Input Field Description
code - String! Proficiency level code
rank - Int Ordering rank
active - Boolean Whether the level is active
description - String Human-readable description
type - String Category/type of the level
proficiencyTitle - FreelancerProfileLanguageProficiencyTitle Title of the proficiency level
Example
{
  "code": "abc123",
  "rank": 123,
  "active": false,
  "description": "xyz789",
  "type": "abc123",
  "proficiencyTitle": "BASIC"
}
Users and teams

LocationViewType

Description

User's i18n location view type values

Values
Enum Value Description

COUNTRY

CITY_STATE

CITY

Example
"COUNTRY"
Users and teams

MessageAttachments

Description

Attachments associated with a message in a room

Fields
Field Name Description
objectReferenceId - ID Reference ID of the attached object
objectType - String Type of the attached object
metadata - [StringMapElement!] Additional metadata for the attachment
createdDateTime - String When the attachment was created
author - RoomUser User who created the attachment
Example
{
  "objectReferenceId": 4,
  "objectType": "abc123",
  "metadata": [StringMapElement],
  "createdDateTime": "abc123",
  "author": RoomUser
}
Users and teams

Organization

Description

Base organization interface

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

CurrentOrganization

GenericOrganization

Example
{
  "id": "4",
  "rid": "4",
  "legacyId": "4",
  "name": "xyz789",
  "type": "BUSINESS",
  "legacyType": "CLIENT",
  "flag": OrganizationFlag,
  "active": false,
  "hidden": false,
  "company": PrivateCompanyInfo,
  "photoUrl": "xyz789",
  "creationDate": "abc123"
}
Users and teams

OrganizationFlag

Description

Organization category flags

Fields
Field Name Description
client - Boolean Whether organization is a client
vendor - Boolean Whether organization is a vendor
agency - Boolean Whether organization is an agency
individual - Boolean Whether organization is an individual
Example
{"client": false, "vendor": true, "agency": false, "individual": true}
Users and teams

OrganizationLegacyType

Description

Legacy organization type

Values
Enum Value Description

CLIENT

VENDOR

Example
"CLIENT"
Users and teams

OrganizationLocationInput

Fields
Input Field Description
address - String
city - String
state - String
country - String
zipCode - String
Example
{
  "address": "xyz789",
  "city": "xyz789",
  "state": "abc123",
  "country": "xyz789",
  "zipCode": "xyz789"
}
Users and teams

OrganizationRequestType

Values
Enum Value Description

AGENCY

CLIENT

SOLE_PROPRIETOR

Example
"AGENCY"
Users and teams

OrganizationType

Description

Organization legal type

Values
Enum Value Description

BUSINESS

SOLE_PROPRIETOR

Example
"BUSINESS"
Users and teams

OrgLegacyType

Values
Enum Value Description

Client

Vendor

Example
"Client"
Users and teams

OrgType

Values
Enum Value Description

Business

SoleProprietor

Example
"Business"
Users and teams

OrgUserPermissionFilterV2

Description

Filter to load users` permissions under organization

Fields
Input Field Description
userId - String user id
resourceType_eq - ResourceType! Type of the resource: CONTRACT, OFFER, etc.
limit - Int The maximum number of results to return. The actual number of results returned may be less than the limit for intermediate pages.
offset - String First request must have this as null. Subsequent requests must use the offset returned by the previous request.
performExternalChecks_eq - Boolean perform external checks. Default = false
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",
  "limit": 987,
  "offset": "xyz789",
  "performExternalChecks_eq": false,
  "teamOrgIds_any": ["4"],
  "returnAllTeams": true
}
Users and teams

OtherExperienceInput

Description

Profile Mutation: create other experience input

Fields
Input Field Description
userId - ID User identifier
subject - String! Subject of the experience
description - String! Description of the experience
active - Boolean Whether the experience is active
Example
{
  "userId": 4,
  "subject": "abc123",
  "description": "xyz789",
  "active": true
}
Users and teams

Page

Description

Pagination metadata

Fields
Field Name Description
pageOffset - Int! Defines page offset
pageSize - Int! Defines page size
Example
{"pageOffset": 123, "pageSize": 987}
Users and teams

PageFilterInput

Fields
Input Field Description
pageOffset - Int! Defines page offset
pageSize - Int! Defines page size
Example
{"pageOffset": 123, "pageSize": 123}
Users and teams

PaymentVerificationResult

Description

Payment verification result

Fields
Field Name Description
status - PaymentVerificationStatus Payment verification status
paymentVerified - Boolean A flag that indicates whether the payment method is verified or not
Example
{"status": "DEPOSIT_UNSUPPORTED", "paymentVerified": true}
Users and teams

PaymentVerificationStatus

Description

Payment verification status codes

Values
Enum Value Description

DEPOSIT_UNSUPPORTED

ONHOLD

EXPIRED

DECLINED

VERIFICATIONFAILED

VERIFICATIONINPROGRESS

VERIFIED

ACTIVE

Example
"DEPOSIT_UNSUPPORTED"
Users and teams

PersonalDataLocation

Description

Personal data location

Fields
Field Name Description
country - String Country name
state - String State or region name
city - String City name
zip - String Postal or ZIP code
timezone - String IANA timezone identifier (e.g., America/Los_Angeles)
Example
{
  "country": "abc123",
  "state": "xyz789",
  "city": "xyz789",
  "zip": "abc123",
  "timezone": "xyz789"
}
Users and teams

PersonalDataProfileState

Description

Personal data profile states

Values
Enum Value Description

IN_PROGRESS

Profile creation in progress

ACCEPTED

Profile accepted and visible

DRAFT

Draft state not yet submitted

REJECTED

Profile rejected

UNDER_REVIEW

Awaiting manual review

NOT_STARTED

No setup has been started

FAILED_REVIEW_QUEUE_SUBMISSION

Failed automated review queue

ELANCER_ONBOARDING

Legacy onboarding flow

AUTO_REJECTED_DELAYED

Auto rejection after delay

IN_PROCESS

Processing state

AUTO_ACCEPTED

Automatically accepted

AUTO_REJECTED

Automatically rejected
Example
"IN_PROGRESS"
Users and teams

PhoneNumber

Description

Phone number

Fields
Field Name Description
code - String Country code
number - String Local number
Example
{
  "code": "abc123",
  "number": "abc123"
}
Users and teams

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
Example
{
  "id": "4",
  "nid": 4,
  "rid": 4,
  "name": "xyz789",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "photoUrl": "abc123",
  "publicUrl": "xyz789",
  "email": "abc123",
  "location": UserLocation
}
Users and teams

PrivateCompanyInfo

Description

Private company info

Fields
Field Name Description
id - ID! Company identifier
name - String Company name
description - String Company description
legacyType - PrivateCompanyLegacyType Legacy private company type
logoURL - String Logo URL
contactUser - GenericUser Contact person
phone - String Business phone number
displayName - String Display name
teamsEnabled - Boolean Whether teams feature is enabled
canHire - Boolean Whether the company can hire
hidden - Boolean Whether the company is hidden
includeInStats - Boolean No longer available for orgs
companyName - String Legal company name
country - Country Country of registration
state - String State or region
city - String City
address - String Street address
zip - String Postal or ZIP code
timezone - String Timezone identifier
accountingEntity - String Accounting entity identifier
billingType - BillingType Billing type
summary - String Summary/description
paymentVerificationStatus - PaymentVerificationStatus Payment verification status use paymentVerification instead
paymentVerification - PaymentVerificationResult Payment verification result
agencyDetails - AgencyDetails Agency details
jobPosts - JobPostingConnection! Job posts of the company
Arguments
jobPostsFilter - JobPostsFilter

Filter for job posts

pagination - Pagination

Pagination options

Example
{
  "id": 4,
  "name": "xyz789",
  "description": "xyz789",
  "legacyType": "CLIENT",
  "logoURL": "xyz789",
  "contactUser": GenericUser,
  "phone": "abc123",
  "displayName": "abc123",
  "teamsEnabled": false,
  "canHire": true,
  "hidden": true,
  "includeInStats": true,
  "companyName": "abc123",
  "country": Country,
  "state": "xyz789",
  "city": "xyz789",
  "address": "xyz789",
  "zip": "xyz789",
  "timezone": "abc123",
  "accountingEntity": "abc123",
  "billingType": "BILL",
  "summary": "xyz789",
  "paymentVerificationStatus": "DEPOSIT_UNSUPPORTED",
  "paymentVerification": PaymentVerificationResult,
  "agencyDetails": AgencyDetails,
  "jobPosts": JobPostingConnection
}
Users and teams

PrivateCompanyLegacyType

Description

Legacy private company type

Values
Enum Value Description

CLIENT

AGENCY

Example
"CLIENT"
Users and teams

ProcessAddResponse

Description

Result of add operation including created record identifier

Fields
Field Name Description
id - ID! Defines record ID of the created activity
success - Boolean! Defines success status
Example
{"id": 4, "success": false}
Users and teams

ProcessUpdateResponse

Description

Result of update operation

Fields
Field Name Description
success - Boolean! Defines success status
Example
{"success": false}
Users and teams

PublicCompanyInfo

Description

Public-facing company info

Fields
Field Name Description
id - ID! Company identifier
name - String Company name
description - String Company description
legacyType - OrganizationLegacyType Legacy organization type
logoURL - String Logo URL
Example
{
  "id": 4,
  "name": "abc123",
  "description": "abc123",
  "legacyType": "CLIENT",
  "logoURL": "xyz789"
}
Users and teams

ReasonType

Values
Enum Value Description

PROPOSAL_DECLINE

Reject invite to apply to a job posting by freelancer

PROPOSAL_WITHDRAW

Withdraw application for job posting by freelancer

CONTRACT_END_HOURLY

End contract by either client or freelancer, hourly contract

CONTRACT_END_FIXED

End contract by either client or freelancer, fixed price contract

CONTRACT_FEEDBACK_NOT_STARTED_CLIENT

When client ends contract which for which work hasn't started and provides low score, we ask for reason

CONTRACT_FEEDBACK_STARTED_CLIENT

When client ends contract which for which work has been started and provides low score, we ask for reason

CONTRACT_FEEDBACK_NOT_STARTED_FREELANCER

When freelancer ends contract which for which work hasn't started and provides low score, we ask for reason

CONTRACT_FEEDBACK_STARTED_FREELANCER

When freelancer ends contract which for which work has been started and provides low score, we ask for reason

PROPOSAL_REJECT

Reject job application by a client

JOB_POSTING_CLOSE

Close job posting by a client

OFFER_DECLINE

Decline offer by freelancer

INVITATION_WITHDRAW

Withdraw invitation to apply to a job posting by client

END_PROVIDER_CONTRACT

END_CUSTOMER_CONTRACT

DEACTIVATION_ACCOUNT

Deactivation account by freelancer
Example
"PROPOSAL_DECLINE"
Users and teams

ResourceType

Description

Resource kinds used for permission checks

Values
Enum Value Description

OPENING

ORGANIZATION

JOB_APPLICATION

CONTRACT

OBO_CONFIG

OBO_QUEUE

JOB_APPLICATION_INVITATION

MILESTONE_PROPOSAL

OFFER

FLS_CONTRACT

TALENT_CLOUD

ACCOUNTING_ENTITY

QUESTIONNAIRE_RESPONSE_SET

BYO_INVITATION

PURCHASE_ORDER

CUSTOM_FIELD

CONTRACT_PROPOSAL

PAYROLL

TESTIMONIAL

UBO_USER_ACTIVITY_LOGGING

DISPUTE

CATALOG_PROJECT

GRAPHQL_SUBSCRIPTION

DIVERSITY_CERTIFICATE

FREELANCER_PROFILE

UBO_SUSPENSION

APPROVAL_REQUEST

INTEGRATION

RMT_CONTRACT

GRAPHQL

ONBOARDING_GROUP

COMPANY_PRICING

UBO_TALENT_FEE

UBO_TS_TOOLS

PSM_TREATMENT

UBO_USER_VERIFICATION

CONNECTS

UPWORK_OUTCOMES

AD_CREDIT_PROMOTION

UBO_BLACKLIST_TOOL

TNS_RULES

Example
"OPENING"
Users and teams

Room

Description

Room details

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
id - ID!
stories - RoomStoryConnection List of stories posted in the room
Arguments
filter - StoryFilter
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": false,
  "numUnreadMentions": 987,
  "roomUsers": [RoomUser],
  "numUsers": 123,
  "joinDateTime": "abc123",
  "lastVisitedDateTime": "abc123",
  "lastReadDateTime": "xyz789",
  "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": "abc123",
  "roomNotePresent": false,
  "offerIds": [4],
  "recruiters": [GenericUser],
  "latestStory": RoomStory,
  "story": RoomStory,
  "stories": RoomStoryConnection,
  "latestStoryPreRendered": RoomStory
}
Users and teams

RoomCategoryFilter

Values
Enum Value Description

FAVORITES

PEOPLE

INTERVIEW

GROUP

Example
"FAVORITES"
Users and teams

RoomConnection

Description

Connection type for paginated room results

Fields
Field Name Description
totalCount - Int Total number of rooms matching the query
edges - [RoomEdge] List of room edges with pagination cursors
pageInfo - PageInfo Pagination information for navigating results
Example
{
  "totalCount": 987,
  "edges": [RoomEdge],
  "pageInfo": PageInfo
}
Users and teams

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": "abc123",
  "users": [RoomUserInput],
  "roomType": "ONE_ON_ONE"
}
Users and teams

RoomEdge

Description

Edge type containing a room node for pagination

Fields
Field Name Description
node - Room Room data
Example
{"node": Room}
Users and teams

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": 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"
}
Users and teams

RoomPrivacyFilter

Values
Enum Value Description

ALL

PRIVATE

PUBLIC

Example
"ALL"
Users and teams

RoomStory

Description

Message or event posted in a room

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": "xyz789",
  "user": GenericUser,
  "message": "xyz789",
  "organization": GenericOrganization,
  "roomStoryNote": RoomStoryNote,
  "attachments": [MessageAttachments]
}
Users and teams

RoomStoryAbuseType

Values
Enum Value Description

NONE

ABUSE

THIRDPARTY

DISINTERMEDIATION

OTHER

MESSAGE_IS_THREATENING

SPAM

BUY_UPWORK_ACCOUNT

MISREPRESENTING_IDENTITY

MISREPRESENTING_SKILLS

Example
"NONE"
Users and teams

RoomStoryConnection

Description

Connection type for paginated room story results

Fields
Field Name Description
totalCount - Int Total number of stories matching the query
edges - [RoomStoryEdge] List of story edges with pagination cursors
pageInfo - PageInfo Pagination information for navigating results
Example
{
  "totalCount": 987,
  "edges": [RoomStoryEdge],
  "pageInfo": PageInfo
}
Users and teams

RoomStoryCreateInputV2

Fields
Input Field Description
roomId - ID ID of the target room
message - String Message to be added in the room
Example
{"roomId": 4, "message": "xyz789"}
Users and teams

RoomStoryEdge

Description

Edge type containing a room story node and cursor for pagination

Fields
Field Name Description
cursor - String Cursor for pagination
node - RoomStory Room story data
Example
{
  "cursor": "abc123",
  "node": RoomStory
}
Users and teams

RoomStoryFilter

Fields
Input Field Description
roomId_eq - ID!
storyFilter - StoryFilter
Example
{
  "roomId_eq": "4",
  "storyFilter": StoryFilter
}
Users and teams

RoomStoryNote

Description

Notes/Flags attached to the story by the user

Fields
Field Name Description
favorite - Boolean! Whether the story is marked as favorite
abuseType - RoomStoryAbuseType Type of abuse reported for this story
whitelisted - Boolean! Whether the story is whitelisted despite abuse reports
abuseDetails - String Additional details about the abuse report
Example
{
  "favorite": true,
  "abuseType": "NONE",
  "whitelisted": true,
  "abuseDetails": "abc123"
}
Users and teams

RoomStoryUpdateInputV2

Fields
Input Field Description
storyId - ID! Id of the story to be updated
roomId - ID! Id of the room where the story is associated
message - String Updated message for the story
Example
{
  "storyId": 4,
  "roomId": "4",
  "message": "xyz789"
}
Users and teams

RoomType

Values
Enum Value Description

ONE_ON_ONE

Designed for direct chat between two users (can't add others and can never leave the room)

GROUP

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

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"
Users and teams

RoomTypeFilter

Values
Enum Value Description

ALL

GROUP

ONE_ON_ONE

INTERVIEW

Example
"ALL"
Users and teams

RoomTypeV2

Values
Enum Value Description

ONE_ON_ONE

Designed for direct chat between two users (can't add others and can never leave the room)

GROUP

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"
Users and teams

RoomUpdateInputV2

Description

Input required to update a room

Fields
Input Field Description
roomId - ID! ID of the target room
roomName - String Updated name of the room
topic - String Updated topic name of the room
reason - String Optional note to store reason for the update
readOnly - Boolean Make the room archived
Example
{
  "roomId": "4",
  "roomName": "xyz789",
  "topic": "xyz789",
  "reason": "xyz789",
  "readOnly": false
}
Users and teams

RoomUser

Description

User participating in a room with their organization and role

Fields
Field Name Description
user - GenericUser User information
organization - GenericOrganization Organization the user belongs to
role - String User's role in the room (owner, admin, participant)
Example
{
  "user": GenericUser,
  "organization": GenericOrganization,
  "role": "xyz789"
}
Users and teams

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": "abc123",
  "inviteEmail": "abc123"
}
Users and teams

Snapshot

Description

Complete snapshot of work with screenshots, activity tracking, and metadata

Fields
Field Name Description
id - ID Unique identifier for the Snapshot
time - Int Time of the snapshot (epoch seconds)
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": "abc123",
  "mouseEventsCount": 123,
  "keyboardEventsCount": 987,
  "teamName": "xyz789",
  "status": "xyz789",
  "activeWindowTitle": "abc123",
  "memo": "xyz789",
  "companyId": "xyz789",
  "hasScreenshot": false,
  "screenshotUrl": "abc123",
  "screenshotImage": "abc123",
  "screenshotImageLarge": "abc123",
  "screenshotImageMedium": "abc123",
  "screenshotImageThumbnail": "abc123",
  "hasWebcam": true,
  "webcamUrl": "xyz789",
  "webcamImage": "xyz789",
  "webcamImageThumbnail": "abc123",
  "task": "xyz789",
  "minutes": SnapshotMinutes
}
Users and teams

SnapshotMinute

Description

Activity events for a single minute within a snapshot

Fields
Field Name Description
time - Int Event timestamp (epoch seconds)
mouse - Int Number of mouse events
keyboard - Int Number of keyboard events
Example
{"time": 987, "mouse": 123, "keyboard": 123}
Users and teams

SnapshotMinutes

Description

Collection of per-minute activity data for a snapshot

Fields
Field Name Description
minute - [SnapshotMinute] List of minute-by-minute activity events
Example
{"minute": [SnapshotMinute]}
Users and teams

SnapshotsByContractIdInput

Fields
Input Field Description
contractId - ID!
timestamp - Int!
Example
{"contractId": "4", "timestamp": 123}
Users and teams

Staff

Description

Staff membership details

Fields
Field Name Description
id - ID Staff record identifier
user - GenericUser Related user
activationStatus - Int

Enum representing the activation status

  • '1': Active
  • '2': Inactive
creationDate - String Creation date
staffType - Int

Enum representing the type of staff within the organization.

  • '2': Invitation
  • '3': Ownership
Example
{
  "id": 4,
  "user": GenericUser,
  "activationStatus": 987,
  "creationDate": "xyz789",
  "staffType": 987
}
Users and teams

StaffsConnection

Description

Connection of staff records

Fields
Field Name Description
edges - [StaffsConnectionEdge]! Staffs data
totalCount - Int Total count of records
pageInfo - PageInfo Page info
Example
{
  "edges": [StaffsConnectionEdge],
  "totalCount": 987,
  "pageInfo": PageInfo
}
Users and teams

StaffsConnectionEdge

Description

Edge in staff connection

Fields
Field Name Description
node - Staff Staff node
Example
{"node": Staff}
Users and teams

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
}
Users and teams

UpdateEmploymentRecordInput

Description

Update employment record input

Fields
Input Field Description
id - ID! Employment record identifier
userId - ID User identifier
companyName - String Company name
jobTitle - String Job title
standardizedCompanyId - String Standardized company identifier
standardizedJobTitleId - String Standardized job title identifier
role - String! Role in the company
startDate - String start date - e.g: "1999-01-01"
endDate - String end date - e.g: "2002-01-01"
description - String Role description
city - String City name
country - String Country name
Example
{
  "id": 4,
  "userId": 4,
  "companyName": "xyz789",
  "jobTitle": "abc123",
  "standardizedCompanyId": "xyz789",
  "standardizedJobTitleId": "xyz789",
  "role": "xyz789",
  "startDate": "xyz789",
  "endDate": "abc123",
  "description": "xyz789",
  "city": "xyz789",
  "country": "xyz789"
}
Users and teams

UpdateOrganizationInput

Fields
Input Field Description
id - ID
parentOrganizationId - ID
organizationName - String!
hidden - Boolean
address - OrganizationLocationInput
vatId - String
Example
{
  "id": 4,
  "parentOrganizationId": "4",
  "organizationName": "xyz789",
  "hidden": false,
  "address": OrganizationLocationInput,
  "vatId": "abc123"
}
Users and teams

UpdateOtherExperienceInput

Description

Update other experience input

Fields
Input Field Description
id - ID! Experience identifier
userId - ID User identifier
subject - String Updated subject
description - String Updated description
active - Boolean Updated active flag
Example
{
  "id": 4,
  "userId": "4",
  "subject": "abc123",
  "description": "xyz789",
  "active": false
}
Users and teams

UpdateRoomStoryResponse

Description

Response for room story update operations

Fields
Field Name Description
status - String! Status of the update operation
Example
{"status": "abc123"}
Users and teams

UpdateTeamActivityRequest

Description

Defines activity object that is going to be updated

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
status - String Activity status (active or archived)
Example
{
  "code": "abc123",
  "description": "abc123",
  "url": "abc123",
  "contractIds": [4],
  "budget": 987.65,
  "batchAssignment": "selectedContracts",
  "status": "xyz789"
}
Users and teams

User

Description

Base user interface

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

Possible Types
User Types

CurrentUser

GenericUser

PiiUser

Example
{
  "id": "4",
  "nid": "4",
  "rid": 4
}
Users and teams

UserIdsByEmailRecordEdge

Description

Edge in users-by-email response

Fields
Field Name Description
cursor - String Cursor for pagination
node - UserIdsByEmailRecordNode Record node
Example
{
  "cursor": "abc123",
  "node": UserIdsByEmailRecordNode
}
Users and teams

UserIdsByEmailRecordNode

Description

Node with user identifiers by email

Fields
Field Name Description
id - ID User identifier
email - String User email
visibilityLevel - FreelancerProfileVisibility Visibility level of the profile
title - String Profile title
user - GenericUser Linked user
Example
{
  "id": "4",
  "email": "xyz789",
  "visibilityLevel": "PUBLIC",
  "title": "xyz789",
  "user": GenericUser
}
Users and teams

UserIdsByEmailResponse

Description

Result of user lookup by email

Fields
Field Name Description
totalCount - Int Total number of records
edges - [UserIdsByEmailRecordEdge!] Connection edges
Example
{"totalCount": 123, "edges": [UserIdsByEmailRecordEdge]}
Users and teams

UserLocation

Description

Location of the user

Fields
Field Name Description
countryName - String Country name
cityName - String City name
zip - String Postal or ZIP code
timezone - String! Timezone identifier
timezoneName - String Human-readable timezone name
street - String Street address
stateCode - String State or province code
offsetToUTC - Int Offset from UTC in minutes
Example
{
  "countryName": "xyz789",
  "cityName": "xyz789",
  "zip": "abc123",
  "timezone": "xyz789",
  "timezoneName": "abc123",
  "street": "xyz789",
  "stateCode": "xyz789",
  "offsetToUTC": 987
}
Users and teams

UserPermissionAccess

Description

Access evaluation outcome

Values
Enum Value Description

ACCESS_DENIED

ACCESS_UNKNOWN

ACCESS_GRANTED

Example
"ACCESS_DENIED"
Users and teams

UserPermissionEdge

Description

Edge in user permissions

Fields
Field Name Description
node - UserPermissionNode Permission node
Example
{"node": UserPermissionNode}
Users and teams

UserPermissionFilterV2

Description

Filter to load specific user's permissions

Fields
Input Field Description
resourceType_eq - ResourceType! Type of the resource: CONTRACT, OFFER, etc.
limit - Int The maximum number of results to return. The actual number of results returned may be less than the limit for intermediate pages.
offset - String First request must have this as null. Subsequent requests must use the offset returned by the previous request.
performExternalChecks_eq - Boolean perform external checks. Default = false
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",
  "limit": 987,
  "offset": "abc123",
  "performExternalChecks_eq": false,
  "teamOrgIds_any": ["4"],
  "returnAllTeams": false,
  "returnFirstGrantedResult_eq": true
}
Users and teams

UserPermissionNode

Description

User permission node details

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! Action being evaluated
access - UserPermissionAccess! Access decision
reason - AccessRestictionReason Reason for restriction (if any)
Example
{
  "organization": CurrentOrganization,
  "team": GenericOrganization,
  "action": "xyz789",
  "access": "ACCESS_DENIED",
  "reason": "ROLES_MISMATCH"
}
Users and teams

UserPermissions

Description

Container of user permissions

Fields
Field Name Description
edges - [UserPermissionEdge] Permission edges
offset - String Paging offset for next page
Example
{
  "edges": [UserPermissionEdge],
  "offset": "xyz789"
}
Users and teams

UserPreferredLocationType

Description

User's i18n preferred location type values

Values
Enum Value Description

WORLD

COUNTRY

Example
"WORLD"
Users and teams

WorkdayResult

Description

Result containing list of working days

Fields
Field Name Description
workDays - [String] list of working days or calendar days that are highlighted in the date picker
Example
{"workDays": ["xyz789"]}
Users and teams

WorkdaysInput

Fields
Input Field Description
contractIds - [ID!]!
timeRange - DateTimeRange!
offsetInSeconds - Int
Example
{
  "contractIds": ["4"],
  "timeRange": DateTimeRange,
  "offsetInSeconds": 123
}
Users and teams

WorkDiaryCompany

Description

Work diary data for a company including snapshots and metadata

Fields
Field Name Description
total - Int Total number of snapshots
snapshots - [WorkDiaryCompanySnapshot] List of work diary snapshots
Example
{"total": 987, "snapshots": [WorkDiaryCompanySnapshot]}
Users and teams

WorkDiaryCompanyContract

Description

Contract information in work diary context

Fields
Field Name Description
id - ID Contract identifier
userId - String User identifier associated with contract
contractTitle - String Contract title
Example
{
  "id": "4",
  "userId": "xyz789",
  "contractTitle": "xyz789"
}
Users and teams

WorkDiaryCompanyInput

Fields
Input Field Description
companyId - ID!
date - String!
paging - String
sortBy - String
activity - String
freelancer - String
Example
{
  "companyId": "4",
  "date": "xyz789",
  "paging": "xyz789",
  "sortBy": "xyz789",
  "activity": "xyz789",
  "freelancer": "abc123"
}
Users and teams

WorkDiaryCompanySnapshot

Description

Complete snapshot of work diary data including time, task, and screenshots

Fields
Field Name Description
contract - WorkDiaryCompanyContract Associated contract
user - WorkDiaryCompanyUser User who performed the work
duration - String Duration of work as string
durationInt - Int Duration as integer (seconds)
task - WorkDiaryCompanySnapshotTask Task being worked on
time - WorkDiaryCompanyTime Time tracking details
screenshots - [WorkDiaryCompanySnapshotScreenshot] Screenshot and webcam images
Example
{
  "contract": WorkDiaryCompanyContract,
  "user": WorkDiaryCompanyUser,
  "duration": "xyz789",
  "durationInt": 123,
  "task": WorkDiaryCompanySnapshotTask,
  "time": WorkDiaryCompanyTime,
  "screenshots": [WorkDiaryCompanySnapshotScreenshot]
}
Users and teams

WorkDiaryCompanySnapshotScreenshot

Description

Screenshot and webcam data for a work diary snapshot

Fields
Field Name Description
activity - Int Activity level percentage
screenshotUrl - String URL to screenshot
screenshotImage - String Path to screenshot image
screenshotImageLarge - String Path to large screenshot image
screenshotImageMedium - String Path to medium screenshot image
screenshotImageThumbnail - String Path to screenshot thumbnail
hasScreenshot - Boolean Whether snapshot has a screenshot
hasWebcam - Boolean Whether snapshot has webcam image
webcamUrl - String URL to webcam image
webcamImage - String Path to webcam image
webcamImageThumbnail - String Path to webcam thumbnail
flags - WorkDiaryCompanySnapshotScreenshotFlag Screenshot display flags
Example
{
  "activity": 987,
  "screenshotUrl": "abc123",
  "screenshotImage": "abc123",
  "screenshotImageLarge": "xyz789",
  "screenshotImageMedium": "abc123",
  "screenshotImageThumbnail": "abc123",
  "hasScreenshot": true,
  "hasWebcam": false,
  "webcamUrl": "xyz789",
  "webcamImage": "abc123",
  "webcamImageThumbnail": "xyz789",
  "flags": WorkDiaryCompanySnapshotScreenshotFlag
}
Users and teams

WorkDiaryCompanySnapshotScreenshotFlag

Description

Flags controlling screenshot display behavior

Fields
Field Name Description
hideScreenshot - Boolean Whether to hide the screenshot
downSampleScreenshots - Boolean Whether to downsample screenshots for display
Example
{"hideScreenshot": false, "downSampleScreenshots": true}
Users and teams

WorkDiaryCompanySnapshotTask

Description

Task information associated with a work diary snapshot

Fields
Field Name Description
id - String Task identifier
code - String Task code
description - String Task description
memo - String Task memo or note
Example
{
  "id": "xyz789",
  "code": "xyz789",
  "description": "xyz789",
  "memo": "abc123"
}
Users and teams

WorkDiaryCompanyTime

Description

Time tracking information for a work diary entry

Fields
Field Name Description
trackedTime - String Time tracked by the system
manualTime - String Manually entered time
overtime - String Overtime hours
firstWorked - String Timestamp when first work occurred
lastWorked - String Timestamp when last work occurred
firstWorkedInt - Int First worked time as integer (epoch)
lastWorkedInt - Int Last worked time as integer (epoch)
lastScreenshot - String Timestamp of last screenshot
Example
{
  "trackedTime": "abc123",
  "manualTime": "xyz789",
  "overtime": "abc123",
  "firstWorked": "abc123",
  "lastWorked": "abc123",
  "firstWorkedInt": 987,
  "lastWorkedInt": 123,
  "lastScreenshot": "xyz789"
}
Users and teams

WorkDiaryCompanyUser

Description

User information in work diary context

Fields
Field Name Description
id - ID User identifier
name - String User's display name
portraitUrl - String URL to user's portrait image
Example
{
  "id": "4",
  "name": "abc123",
  "portraitUrl": "abc123"
}
Users and teams

WorkDiaryContract

Description

Work diary data for a specific contract and date

Fields
Field Name Description
workDiaryMetadata - WorkDiaryMetadata Metadata about the work diary
workDiaryTimeCells - [WorkDiaryTimeCell!] List of timecells with tracking data
Example
{
  "workDiaryMetadata": WorkDiaryMetadata,
  "workDiaryTimeCells": [WorkDiaryTimeCell]
}
Users and teams

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": "abc123",
  "offsetInSeconds": 987,
  "useLegacy": true
}
Users and teams

WorkDiaryMetadata

Description

Metadata for work diary including timezone and user information

Fields
Field Name Description
timezoneOffset - String! Timezone offset for displaying times
archivingDateTime - String! When work diary data will be archived
Example
{
  "timezoneOffset": "xyz789",
  "archivingDateTime": "abc123"
}
Users and teams

WorkDiaryTask

Description

Task associated with work diary timecell

Fields
Field Name Description
id - ID! id of the associated task, eg: Jira task
description - String description of the task
Example
{
  "id": "4",
  "description": "abc123"
}
Users and teams

WorkDiaryTimeCell

Description

10-minute billable time period with activity tracking and screenshots

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": false,
  "manual": true,
  "activityLevel": 987,
  "memo": "xyz789",
  "task": WorkDiaryTask,
  "mouseEventsCount": 123,
  "keyboardEventsCount": 123,
  "activeWindowTitle": "xyz789",
  "hideScreenshots": false,
  "hasScreenshot": true,
  "screenshotImageUrl": "abc123",
  "screenshotImageUrlMedium": "abc123",
  "screenshotImageThumbnail": "xyz789",
  "webcamEnabled": false,
  "webcamImageUrl": "abc123",
  "webcamImageThumbnail": "xyz789",
  "snapshotExpired": true
}

Workflow

UpdateWorkflowTaskDetailsInput

Fields
Input Field Description
status - WorkflowTaskStatus
labels - [WorkflowTaskPatchLabelInput!]
Example
{
  "status": "NOT_OPEN",
  "labels": [WorkflowTaskPatchLabelInput]
}
Workflow

UpdateWorkflowTaskResult

Description

Result of updating a workflow task

Fields
Field Name Description
workflowId - ID Workflow identifier
updatedTaskView - WorkflowTaskView Updated task view details
Example
{"workflowId": 4, "updatedTaskView": WorkflowTaskView}
Workflow

WorkflowAssociationView

Description

Association between a workflow and an external entity

Fields
Field Name Description
entityType - String Type of the associated entity
entityValue - String Value or identifier of the associated entity
Example
{
  "entityType": "abc123",
  "entityValue": "abc123"
}
Workflow

WorkflowOnboardingStatus

Values
Enum Value Description

NOT_STARTED

IN_PROGRESS

COMPLETED

CONTINGENT_START

WITHDRAWN

WAIVED

Example
"NOT_STARTED"
Workflow

WorkflowTaskAssigneeView

Description

Entity assigned to a workflow task

Fields
Field Name Description
entityType - String Type of the assignee entity
entityId - ID Identifier of the assignee entity
Example
{"entityType": "abc123", "entityId": 4}
Workflow

WorkflowTaskComment

Description

Comment added to a workflow task

Fields
Field Name Description
id - ID Comment identifier
message - String Comment message text
createdDateTime - String Comment creation date and time
createdBy - String User who created the comment
visibleToClient - Boolean Whether the comment is visible to the client
attachments - [WorkflowTaskCommentAttachments] Attachments associated with this comment
Example
{
  "id": 4,
  "message": "xyz789",
  "createdDateTime": "abc123",
  "createdBy": "abc123",
  "visibleToClient": false,
  "attachments": [WorkflowTaskCommentAttachments]
}
Workflow

WorkflowTaskCommentAttachments

Description

File or document attached to a workflow task comment

Fields
Field Name Description
id - ID Attachment identifier
name - String Attachment name
type - String Attachment type
Example
{
  "id": 4,
  "name": "xyz789",
  "type": "abc123"
}
Workflow

WorkflowTaskCustomAttribute

Description

Custom key-value attribute for a workflow task

Fields
Field Name Description
key - String Attribute key
value - String Attribute value
Example
{
  "key": "abc123",
  "value": "xyz789"
}
Workflow

WorkflowTaskLabel

Values
Enum Value Description

FLAGGED

OVERDUE

Example
"FLAGGED"
Workflow

WorkflowTaskPatchLabelInput

Fields
Input Field Description
label - WorkflowTaskLabel
enabled - Boolean
Example
{"label": "FLAGGED", "enabled": false}
Workflow

WorkflowTaskStatus

Values
Enum Value Description

NOT_OPEN

OPEN

IN_PROGRESS

COMPLETED

WAIVED

PAUSED

PENDING

Example
"NOT_OPEN"
Workflow

WorkflowTaskView

Description

Detailed view of a single task within a workflow

Fields
Field Name Description
id - ID Task identifier
type - String Task type
title - String Task title
description - String Task description
status - WorkflowTaskStatus! Current status of the task
assignee - WorkflowTaskAssigneeView User or entity assigned to this task
comments - [WorkflowTaskComment!] Comments associated with this task
createdDateTime - String Task creation date and time
finishedDateTime - String Task completion date and time
dueDate - String Task due date
modifiedDateTime - String Task last modification date and time
createdBy - String User who created the task
modifiedBy - String User who last modified the task
labels - [WorkflowTaskLabel!] Labels applied to this task
active - Boolean Whether the task is active
notRequired - Boolean Whether the task is not required
dependsOn - String Task dependencies
externalTaskId - String External task identifier
delayReasons - String Reasons for task delay
customAttributes - [WorkflowTaskCustomAttribute!] Custom attributes for this task
order - Int Display order of the task
canEdit - Boolean Whether the current user can edit this task
owner - Boolean Provides a possibility for the user to filter on UI it's own tasks .
Example
{
  "id": 4,
  "type": "xyz789",
  "title": "abc123",
  "description": "abc123",
  "status": "NOT_OPEN",
  "assignee": WorkflowTaskAssigneeView,
  "comments": [WorkflowTaskComment],
  "createdDateTime": "xyz789",
  "finishedDateTime": "abc123",
  "dueDate": "xyz789",
  "modifiedDateTime": "abc123",
  "createdBy": "abc123",
  "modifiedBy": "xyz789",
  "labels": ["FLAGGED"],
  "active": true,
  "notRequired": true,
  "dependsOn": "abc123",
  "externalTaskId": "abc123",
  "delayReasons": "xyz789",
  "customAttributes": [WorkflowTaskCustomAttribute],
  "order": 987,
  "canEdit": false,
  "owner": true
}
Workflow

WorkflowView

Description

Comprehensive view of a workflow instance with all its tasks and metadata

Fields
Field Name Description
id - ID Workflow identifier
type - String Workflow type
onboardedStatus - WorkflowOnboardingStatus Current onboarding status of the workflow
totalTasks - Int Total number of tasks in the workflow
notStartedTasksCount - Int Number of tasks not yet started
inProgressTasksCount - Int Number of tasks currently in progress
completedTasksCount - Int Number of completed tasks
tasksOverdue - Int Number of overdue tasks
percentComplete - Int Percentage of workflow completion
startDateTime - String Workflow start date and time
completionDateTime - String Workflow completion date and time
associations - [WorkflowAssociationView!] Associated entities for this workflow
tasks - [WorkflowTaskView!] List of tasks in the workflow
createdDateTime - String Workflow creation date and time
modifiedDateTime - String Workflow last modification date and time
createdBy - String User who created the workflow
modifiedBy - String User who last modified the workflow
Example
{
  "id": "4",
  "type": "xyz789",
  "onboardedStatus": "NOT_STARTED",
  "totalTasks": 987,
  "notStartedTasksCount": 123,
  "inProgressTasksCount": 987,
  "completedTasksCount": 123,
  "tasksOverdue": 987,
  "percentComplete": 123,
  "startDateTime": "abc123",
  "completionDateTime": "xyz789",
  "associations": [WorkflowAssociationView],
  "tasks": [WorkflowTaskView],
  "createdDateTime": "xyz789",
  "modifiedDateTime": "abc123",
  "createdBy": "abc123",
  "modifiedBy": "abc123"
}

Other

AccountingEntity

Description

Account entity

Fields
Field Name Description
id - ID! Unique identifier for the accounting entity
Example
{"id": 4}
Other

ClientJobInvitationCreateRequestInput

Description

Input for creating client job invitation

Fields
Input Field Description
jobPostingId - ID! ID of the associated job
invitationLetter - String Invitation letter from client
freelancerId - ID! Freelancer ID
Example
{
  "jobPostingId": 4,
  "invitationLetter": "xyz789",
  "freelancerId": "4"
}
Other

CustomPaymentInput

Fields
Input Field Description
contractId - ID!
amount - Float!
comment - String!
notes - String!
type - CustomPaymentType
allowSubsequent - Boolean
Example
{
  "contractId": "4",
  "amount": 987.65,
  "comment": "abc123",
  "notes": "abc123",
  "type": "BONUS",
  "allowSubsequent": false
}
Other

CustomPaymentResponse

Description

Custom Payment Response

Fields
Field Name Description
invoiceId - ID! Invoice ID
Example
{"invoiceId": 4}
Other

CustomPaymentType

Values
Enum Value Description

BONUS

Example
"BONUS"
Other

ManualReviewStatus

Values
Enum Value Description

APPROVED

CANCELLED

Example
"APPROVED"
Other

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": "abc123",
  "currency": "xyz789"
}

Other

AuditTime

Description

Type to represent both entity creation and modified time

Fields
Field Name Description
createdDateTime - String Creation date time formatted according to ISO-8601
modifiedDateTime - String Modified date time formatted according to ISO-8601
Example
{
  "createdDateTime": "abc123",
  "modifiedDateTime": "abc123"
}
Other

AvailableScope

Description

Scope availability levels for fields and types

Values
Enum Value Description

INTERNAL

PUBLIC

ENTERPRISE

Example
"INTERNAL"
Other

Boolean

Description

Built-in Boolean

Other

ContractType

Description

Type of contract payment model

Values
Enum Value Description

HOURLY

Hourly-payed

FIXED

Fixed-price
Example
"HOURLY"
Other

DateTime

Description

Time of day with raw seconds and display value

Fields
Field Name Description
rawValue - String! Number of seconds since beginning of the day (since 00:00:00 same day)
displayValue - String! Time in format HH:MM
Example
{
  "rawValue": "abc123",
  "displayValue": "abc123"
}
Other

DateTimeRange

Description

Input range for date-time values (ISO-8601 strings)

Fields
Input Field Description
rangeStart - String Start timestamp
rangeEnd - String End timestamp
Example
{
  "rangeStart": "abc123",
  "rangeEnd": "xyz789"
}
Other

EngagementDuration

Description

Engagement duration option with label and weeks

Fields
Field Name Description
id - ID! Unique identifier
label - String! Label
weeks - Int! Amount of weeks needed for the engagement
Example
{"id": 4, "label": "abc123", "weeks": 987}
Other

File

Description

Represents a generic file resource

Fields
Field Name Description
name - String! The file name
uri - String! Location of file
encoding - String File encoding
size - Int File size in bytes
createdDateTime - String File upload date in the format 'yyyy-mm-ddThh:MM:ss.SSSZ', e.g. '2022-06-14T08:49:03.325Z'
Example
{
  "name": "xyz789",
  "uri": "xyz789",
  "encoding": "xyz789",
  "size": 123,
  "createdDateTime": "abc123"
}
Other

Float

Description

Built-in Float

Example
123.45
Other

FloatRange

Description

Input range for floating point values

Fields
Input Field Description
rangeStart - Float Start of range
rangeEnd - Float End of range
Example
{"rangeStart": 123.45, "rangeEnd": 987.65}
Other

FreelancerProfilesSearchRecordType

Example
FreelancerProfilesSearchRecord
Other

ID

Description

Built-in ID

Example
4
Other

Int

Description

Built-in Int

Example
123
Other

IntRange

Description

Input range for integer values

Fields
Input Field Description
rangeStart - Int Start of range
rangeEnd - Int End of range
Example
{"rangeStart": 123, "rangeEnd": 123}
Other

JobCategory

Description

Job category ontology entity

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.

  • Active: Skill is active and available for use
  • Deprecated: Skill has been deprecated
  • Pending: Skill has been created recently and is not active yet
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": "abc123",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "abc123"
}
Other

Language

Description

Language definition with ISO code and display name

Fields
Field Name Description
iso639Code - String! ISO 639 standards - https://en.wikipedia.org/wiki/ISO_639(example: en)
active - Boolean! Flag indicates if the language is active
englishName - String! English name of the language
Example
{
  "iso639Code": "xyz789",
  "active": false,
  "englishName": "abc123"
}
Other

Money

Description

Monetary amount with raw, currency and display representations

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": "xyz789"
}
Other

OntologyEntityResult

Types
Union Types

Skill

Occupation

Example
Skill
Other

PageInfo

Description

Pagination metadata for list responses

Fields
Field Name Description
endCursor - String Cursor to be used to fetch next page in list
hasNextPage - Boolean Boolean indicating whether there is a next page in the list
Example
{"endCursor": "xyz789", "hasNextPage": true}
Other

Pagination

Description

Pagination

Fields
Input Field Description
after - String Identifies the start place of the pagination, e.g. after: "0" will indicate "from the very first element"
first - Int! Identifies how many records must be returns in a single response, e.g. first: 30 will return 30 elements
Example
{"after": "abc123", "first": 123}
Other

Portrait

Description

Portrait of the freelancer

Fields
Field Name Description
portrait - String Link to profile portrait
portrait32 - String Link to profile portrait (size 32)
portrait50 - String Link to profile portrait (size 50)
portrait100 - String Link to profile portrait (size 100)
portrait150 - String Link to profile portrait (size 150)
portrait500 - String Link to profile portrait (size 500)
Example
{
  "portrait": "xyz789",
  "portrait32": "xyz789",
  "portrait50": "xyz789",
  "portrait100": "abc123",
  "portrait150": "abc123",
  "portrait500": "abc123"
}
Other

SortAttribute

Description

Sorting attribute and order

Fields
Input Field Description
field - String! Field name to sort by
sortOrder - SortOrder! Sort direction
Example
{"field": "xyz789", "sortOrder": "ASC"}
Other

SortOrder

Description

Sort direction values

Values
Enum Value Description

ASC

Ascending

DESC

Descending
Example
"ASC"
Other

String

Description

Built-in String

Example
"abc123"
Other

StringMapElement

Description

Key-value pair element for string maps

Fields
Field Name Description
key - String! Map key
value - String! Value
Example
{
  "key": "abc123",
  "value": "abc123"
}
Other

StringMapElementInput

Description

Input for key-value element with non-null value

Fields
Input Field Description
key - String! Map key
value - String! Non-null value
Example
{
  "key": "abc123",
  "value": "abc123"
}
Other

TnsRuleStructureInput

Description

Input for rule structure - polymorphic type representing either a leaf node or group node Type field determines which fields are used

Fields
Input Field Description
type - String! Type of node: 'rule' for leaf or 'group' for group node
attributeType - Int For leaf nodes: attribute type code (1-9)
ruleOperator - Int For leaf nodes: rule operator code (1=CONTAINS, 2=EQUALS, 3=STARTS_WITH, 4=ENDS_WITH, 5=MATCHES_REGEX, 6=NOT_CONTAINS, 7=NOT_EQUALS)
value - String For leaf nodes: value to compare against
mergingOperator - Int For group nodes: merging operator code (1=AND, 2=OR)
children - [TnsRuleStructureInput!] For group nodes: child rules
Example
{
  "type": "abc123",
  "attributeType": 123,
  "ruleOperator": 123,
  "value": "abc123",
  "mergingOperator": 123,
  "children": [TnsRuleStructureInput]
}