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
  • Community Forum
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.

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.

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.

Authentication (OAuth2)

To access Upwork API, you need to go through an authentication process. Currently, we support the OAuth 2.0 method.

You need to authenticate for all requests following the OAuth 2.0, RFC 6749.

OAuth2 Basics

The OAuth 2.0 protocol enables websites or applications (clients) to access protected resources from a Web service (server) via an API, without requiring resource owners to disclose their service provider credentials to the clients. For more information on the OAuth 2.0 workflow process, visit the OAuth 2.0 protocol official site.

Client ID

For each application you develop, you need to obtain new client credentials. These include a client identifier and a client shared-secret. You can request these credentials in the API Center while logged into your Upwork account (select Key Type OAuth 2.0). You will receive a key (client_id) for each client identifier and client shared-secret you request.

Required X-Upwork-API-TenantId header

Each request requires the organization context. In order to specify on behalf of which context the request should be executed, you need to send X-Upwork-API-TenantId header. When the header is missing, the request will use the default organization of the user.

How X-Upwork-API-TenantId header can be used to set the Organization for the execution context

In order to get a value for the X-Upwork-API-TenantId header, you need company selector query.

Sample company selector query:

                  companySelector {
                    items {
                      title
                      organizationId
                    }
                  }
                  

The request with X-Upwork-API-TenantId would look like:

                  curl --request POST \
                    --url https://api.upwork.com/graphql \
                    --header 'Authorization: bearer oauth2v2_f5*************************' \
                    --header 'Content-Type: application/json' \
                    --header 'X-Upwork-API-TenantId: 470*************' \
                    --data '{"query":"query {
                        organization {
                        id
                        childOrganizations {
                        id
                        name
                      }
                    }
                  }"}'
                  

In this case query.organization and organization.childOrganizations will contain information about organization with id 470***********97.

Without the header query.organization will contain the information about 584***********76 which is the default organization for the user.

How the default Organization is selected when the header is not present

A default organization is one of the organizations that the user has access to. It is the same Organization that gets selected as the current Organization when a user logs in into the platform.

Flow and Supported Grants

For authenticating via OAuth 2.0 protocol, API requests MUST follow RFC 6749 specification.
At a basic level, the OAuth 2.0 authentication process involves the following steps:

  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  /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  /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:
/#access_token=abcdefghijklmnopqrstuvwxyz&expires_in=86399 // Authorization Code Grant

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

REST to GraphQL examples

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

Messages

GraphQL OAuth2 scopes:

Name Description
Messaging - Read-Only Access Grants read-only access to rooms and messages
Messaging - Read and Write Access Grants read/write access to rooms and messages

Retrieve rooms information

Gets the rooms for the current user and organization

REST
GET  /api/messages/v3/{company_id}/rooms.{format} 
GraphQL
query roomList(
  $filter: RoomFilter,
  $pagination: Pagination,
  $sortOrder: SortOrder
) {
  roomList(
    filter: $filter,
    pagination: $pagination,
    sortOrder: $sortOrder
  ) {
    totalCount
    pageInfo {
      endCursor
      hasNextPage
    }
    edges {
      node {
        numUnread
        numUnreadMentions
        numUsers
        favorite
        latestStory {
          createdDateTime
          updatedDateTime
        }
        topic
        roomType
        id
        roomName
        organization {
          id
          legacyId
        }
        roomUsers {
          user {
            id
          }
          organization {
            id
          }
          role
        }
        creator {
          user {
            id
            nid
            name
          }
        }
        createdAtDateTime
        public
        owner {
          user {
            id
          }
        }
      }
    }
  }
}
Variables
{
  "filter": {
    "roomType_eq": "ALL",
    "roomPrivacy_eq": "ALL",
    "subscribed_eq": false,
    "activeSince_eq": "xyz789",
    "includeFavorites_eq": false,
    "includeUnreadIfActive_eq": false,
    "unreadRoomsOnly_eq": false,
    "local_eq": "abc123",
    "includeHidden_eq": true,
    "objectReferenceId_eq": "4",
    "roomCategory_eq": "FAVORITES"
  },
  "pagination": {"after": "abc123", "first": 987},
  "sortOrder": "ASC"
}

Fields:

REST Field GraphQL Path Description
rooms.roomId roomList.edges.node.id The ID of the room
rooms.orgId roomList.edges.node.organization.id The ID of the org that the room belongs to
rooms.roomName roomList.edges.node.name The name of the room
rooms.roomType roomList.edges.node.roomType The room type
rooms.topic roomList.edges.node.topic The topic of the room
rooms.numUnread roomList.edges.node.numUnread The number of unread messages in the room for the current user
rooms.numUnreadMentions roomList.edges.node.numUnreadMentions The number of unread messages with @ mentions in the room for the current user
rooms.numUsers roomList.edges.node.numUsers The number of users in the room
rooms.isFavorite roomList.edges.node.favorite Indicates whether the user marked the room as a favorite or not
rooms.latestStory.created roomList.edges.node.latestStory.createdDateTime The creation timestamp of the story
rooms.latestStory.updated roomList.edges.node.latestStory.updatedDateTime The update timestamp of the story
rooms.users.userId roomList.edges.node.roomUsers.user.id The ID of the user
rooms.users.orgId roomList.edges.node.roomUsers.organization.id The ID of the org (company context) that the user is subscribed with
rooms.users.role roomList.edges.node.roomUsers.user.role Role of the user. Returned only if returnUserRoles is set
rooms.cursor roomList.edge.cursor The ID of the last room returned in the call
rooms.total roomList.totalCount The total number of matching rooms, for paging purposes
rooms.appId roomList.edges.node.vendorProposal.id Unique application ID

Get a specific room information

Gets a specific room information

REST
GET  /api/messages/v3/{company_user_id}/rooms/{room_id}.{format} 
GraphQL
query room($roomId: ID!) {
  room(id: $roomId) {
    id
    organization {
      id
    }
    roomName
    roomType
    topic
    lastVisitedDateTime
    lastReadDateTime
    favorite
    readOnly
    hidden
    roomUsers {
      user {
        id
      }
      organization {
        id
      }
      role
    }
    stories {
      totalCount
      pageInfo {
        endCursor
      }
      edges {
        node {
          id
          createdDateTime
          updatedDateTime
          user {
            id
          }
          message
          systemStory
        }
      }
    }
  }
}
Variables
{"roomId": 4}

Fields:

REST Field GraphQL Path Description
roomId room.id The ID of the room
orgId room.organization.id The ID of the org that the room belongs to
roomName room.roomName The name of the room
roomType room.roomType The room type
topic room.topic The topic of the room
lastReadTimestamp room.lastVisitedDateTime Timestamp of the last time the user accessed the room
recentTimestamp room.lastReadDateTime Timestamp of the latest activity in the room for sorting purposes
isFavorite room.favorite Indicates whether the user marked the room as favorite or not
isReadOnly room.readOnly Indicates whether the room is archived or not
isHidden room.hidden Indicates whether the room marked as hidden/archived or not
roleI room.roomUsers.role Indicates a role of the user in the particular room
users.userId room.roomUsers.user.id The ID of the user
users.orgId room.roomUsers.organization.id The ID of the org that the user is subscribed with
users.role room.roomUsers.role The role of the user. Returned only if returnUserRoles is set
stories.stories.storyId room.stories.edge.node.id Story ID
stories.stories.created room.stories.edge.node.createdDateTime Indicates when the message was created
stories.stories.updated room.stories.edge.node.updatedDateTime Indicates when the message was updated
stories.stories.userId room.stories.edge.node.user.id ID of a user who posted the message
stories.stories.message room.stories.edge.node.message Message
stories.stories.isSystemStory room.stories.edge.node.systemStory Flag indicates whether the message is system
stories.cursor room.stories.edge.cursor Current position of a cursor
stories.total room.stories.totalCount Total number of messages

Get messages from the room

Gets messages/stories from a specific room

REST
GET  /api/messages/v3/{company_user_id}/rooms/{room_id}/stories.{format} 
GraphQL
query RoomStories($roomId: ID!) {
  roomStories(filter: {roomId_eq: $roomId}) {
    totalCount
    edges {
      node {
        id
        message
      }
    }
  }
}
Variables
{"roomId": "4"}

Fields:

REST Field GraphQL Path Description
stories.storyId roomStories.edge.node.id Story ID
stories.created roomStories.edge.node.createdDateTime Indicates when the message was created
stories.updated roomStories.edge.node.updatedDateTime Indicates when the message was updated
stories.userId roomStories.edge.node.user.id ID of a user who posted the message
stories.message roomStories.edge.node.message Message
stories.isSystemStory roomStories.edge.node.systemStory Flag indicates whether the message is system
stories.cursor roomStories.edge.cursor Current position of a cursor
stories.total roomStories.totalCount Total number of messages

Get a specific room by offer ID

Gets the room information for the interview room with the offerId passed on the URL

REST
GET  /api/messages/v3/{company_user_id}/rooms/offers/{offer_id}.{format} 
GraphQL
query offerRoom($offerId: ID!) {
  offerRoom(id: $offerId) {
    id
    roomName
  }
}
Variables
{"offerId": "4"}

Fields:

REST Field GraphQL Path Description
roomId offerRoom.id The ID of the room
orgId offerRoom.organization.id The ID of the org that the room belongs to
roomName offerRoom.roomName The name of the room
roomType offerRoom.roomType The room type
topic offerRoom.topic The topic of the room
lastReadTimestamp offerRoom.lastVisitedDateTime Timestamp of the last time the user accessed the room
recentTimestamp offerRoom.lastReadDateTime Timestamp of the latest activity in the room for sorting purposes
isFavorite offerRoom.favorite Indicates whether the user marked the room as favorite or not
isReadOnly offerRoom.readOnly Indicates whether the room is archived or not
isHidden offerRoom.hidden Indicates whether the room marked as hidden/archived or not
roleI offerRoom.roomUsers.role Indicates a role of the user in the particular room
users.userId offerRoom.roomUsers.user.id The ID of the user
users.orgId offerRoom.roomUsers.organization.id The ID of the org that the user is subscribed with
users.role offerRoom.roomUsers.role The role of the user. Returned only if returnUserRoles is set
stories.stories.storyId offerRoom.stories.edge.node.id Story ID
stories.stories.created offerRoom.stories.edge.node.createdDateTime Indicates when the message was created
stories.stories.updated offerRoom.stories.edge.node.updatedDateTime Indicates when the message was updated
stories.stories.userId offerRoom.stories.edge.node.user.id ID of a user who posted the message
stories.stories.message offerRoom.stories.edge.node.message Message
stories.stories.isSystemStory offerRoom.stories.edge.node.systemStory Flag indicates whether the message is system
stories.cursor offerRoom.stories.edge.cursor Current position of a cursor
stories.total offerRoom.stories.totalCount Total number of messages

Get a specific room by application ID

Gets the room information for the interview room with the applicationId passed on the URL

REST
GET  /api/messages/v3/{company_user_id}/rooms/applications/{application_id}.{format} 
GraphQL
query proposalRoom($vendorProposalId: ID!) {
  proposalRoom(id: $vendorProposalId) {
    id
    roomName
  }
}
Variables
{"vendorProposalId": "4"}

Fields:

REST Field GraphQL Path Description
roomId proposalRoom.id The ID of the room
orgId proposalRoom.organization.id The ID of the org that the room belongs to
roomName proposalRoom.roomName The name of the room
roomType proposalRoom.roomType The room type
topic proposalRoom.topic The topic of the room
lastReadTimestamp proposalRoom.lastVisitedDateTime Timestamp of the last time the user accessed the room
recentTimestamp proposalRoom.lastReadDateTime Timestamp of the latest activity in the room for sorting purposes
isFavorite proposalRoom.favorite Indicates whether the user marked the room as favorite or not
isReadOnly proposalRoom.readOnly Indicates whether the room is archived or not
isHidden proposalRoom.hidden Indicates whether the room marked as hidden/archived or not
roleI proposalRoom.roomUsers.role Indicates a role of the user in the particular room
users.userId proposalRoom.roomUsers.user.id The ID of the user
users.orgId proposalRoom.roomUsers.organization.id The ID of the org that the user is subscribed with
users.role proposalRoom.roomUsers.role The role of the user. Returned only if returnUserRoles is set
stories.stories.storyId proposalRoom.stories.edge.node.id Story ID
stories.stories.created proposalRoom.stories.edge.node.createdDateTime Indicates when the message was created
stories.stories.updated proposalRoom.stories.edge.node.updatedDateTime Indicates when the message was updated
stories.stories.userId proposalRoom.stories.edge.node.user.id ID of a user who posted the message
stories.stories.message proposalRoom.stories.edge.node.message Message
stories.stories.isSystemStory proposalRoom.stories.edge.node.systemStory Flag indicates whether the message is system
stories.cursor proposalRoom.stories.edge.cursor Current position of a cursor
stories.total proposalRoom.stories.totalCount Total number of messages

Get a specific room by contract ID

Gets the room information for the interview room with the contractId passed on the URL

REST
GET  /api/messages/v3/{company_user_id}/rooms/contracts/{contract_id}.{format} 
GraphQL
query contractRoom($contractId: ID!) {
  contractRoom(id: $contractId) {
    id
    roomName
  }
}
Variables
{"contractId": 4}

Fields:

REST Field GraphQL Path Description
roomId contractRoom.id The ID of the room
orgId contractRoom.organization.id The ID of the org that the room belongs to
roomName contractRoom.roomName The name of the room
roomType contractRoom.roomType The room type
topic contractRoom.topic The topic of the room
lastReadTimestamp contractRoom.lastVisitedDateTime Timestamp of the last time the user accessed the room
recentTimestamp contractRoom.lastReadDateTime Timestamp of the latest activity in the room for sorting purposes
isFavorite contractRoom.favorite Indicates whether the user marked the room as favorite or not
isReadOnly contractRoom.readOnly Indicates whether the room is archived or not
isHidden contractRoom.hidden Indicates whether the room marked as hidden/archived or not
roleI contractRoom.roomUsers.role Indicates a role of the user in the particular room
users.userId contractRoom.roomUsers.user.id The ID of the user
users.orgId contractRoom.roomUsers.organization.id The ID of the org that the user is subscribed with
users.role contractRoom.roomUsers.role The role of the user. Returned only if returnUserRoles is set
stories.stories.storyId contractRoom.stories.edge.node.id Story ID
stories.stories.created contractRoom.stories.edge.node.createdDateTime Indicates when the message was created
stories.stories.updated contractRoom.stories.edge.node.updatedDateTime Indicates when the message was updated
stories.stories.userId contractRoom.stories.edge.node.user.id ID of a user who posted the message
stories.stories.message contractRoom.stories.edge.node.message Message
stories.stories.isSystemStory contractRoom.stories.edge.node.systemStory Flag indicates whether the message is system
stories.cursor contractRoom.stories.edge.cursor Current position of a cursor
stories.total contractRoom.stories.totalCount Total number of messages

Create a new room

Creates a new room. Note that 1-1 rooms must be passed in a single user in the users array. Both users are created with `admin` role in the room and the role you pass is ignored (there is no owner)

REST
POST  /api/messages/v3/{company_user_id}/rooms.{format} 
GraphQL
mutation createRoom($roomName: String!, $publicRoom: Boolean!, $roomType: RoomType!, $readOnly: Boolean!, $systemRoom: Boolean!) {
  createRoom(
    input: {roomName: $roomName, public: $publicRoom, roomType: $roomType, readOnly: $readOnly, systemRoom: $systemRoom}
  ) {
    id
    roomName
  }
}
Variables
{
  "roomName": "abc123",
  "publicRoom": true,
  "roomType": "ONE_ON_ONE",
  "readOnly": false,
  "systemRoom": false
}

Send a message to a room

Adds a new story to the given room

REST
POST  /api/messages/v3/{company_user_id}/rooms/{room_id}/stories.{format} 
GraphQL
mutation createRoomStoryV2($input: RoomStoryCreateInputV2!) {
  createRoomStoryV2(input: $input) {
    id
    room {
      ...RoomFragment
    }
    createdDateTime
    updatedDateTime
    user {
      ...GenericUserFragment
    }
    message
    organization {
      ...GenericOrganizationFragment
    }
    roomStoryNote {
      ...RoomStoryNoteFragment
    }
  }
}
Variables
{"input": {"roomId": "4", "message": "xyz789"}}

Send a message to a batch of rooms

Adds a new story to the list of the given rooms

REST
POST  /api/messages/v3/{company_user_id}/stories/batch.{format} 
GraphQL
Same as sending a single message, but multiple mutations in one request

Update a room settings

Updates a room settings

REST
PUT  /api/messages/v3/{company_user_id}/rooms/{room_id}/users/{user_id}.{format} 
GraphQL
mutation updateRoom($roomId: ID!, $topic: String!) {
  updateRoom(input: {roomId: $roomId, topic: $topic}) {
    id
    roomName
  }
}
Variables
{"roomId": 4, "topic": "abc123"}

Archive or rename a room

Updates the metadata of an existing room and archives it

REST
PUT  /api/messages/v3/{company_user_id}/rooms/{room_id}.{format} 
GraphQL
mutation archiveRoom($roomId: ID!) {
  archiveRoom(roomId: $roomId) {
    id
    roomName
  }
}
Variables
{"roomId": 4}

Contracts & Offers

Fields:

REST Field GraphQL Path Notes
buyer_team__id No direct match Possible alternative: organization/clientOffers/edges/node/team/id
buyer_team__reference organization/clientOffers/edges/node/team/rid
category_uid organization/clientOffers/edges/node/contract/jobCategory/id
cj_job_application_uid No direct match
created_time organization/clientOffers/edges/node/contract/createdDateTime
dev_recno_ciphertext No direct match
downsample_screenshots No direct match
engagement_end_date organization/clientOffers/edges/node/contract/endDateTime
engagement_end_ts organization/clientOffers/edges/node/contract/endDateTime
engagement_job_type organization/clientOffers/edges/node/contract/contractType
engagement_start_date organization/clientOffers/edges/node/contract/startDateTime
engagement_start_ts organization/clientOffers/edges/node/contract/startDateTime
engagement_title organization/clientOffers/edges/node/contract/title
estimated_duration organization/clientOffers/edges/node/contract/estimatedDuration Deprecated
estimated_duration_id No direct match
first_engagement_start_ts organization/clientOffers/edges/node/contract/firstContractStartDateTime
freelancer_country organization/clientOffers/edges/node/contract/freelancer/countryDetails/name
freelancer_title No direct match
hide_screenshots organization/clientOffers/edges/node/contract/hideScreenshots Deprecated
hourly_charge_rate organization/clientOffers/edges/node/contract/hourlyChargeRate/rawValue
is_fls No direct match
isfp2 organization/clientOffers/edges/node/contract/contractType
is_last organization/clientOffers/edges/node/contract/last
is_paused organization/clientOffers/edges/node/contract/paused
job__reference organization/clientOffers/edges/node/contract/offer/job/id
job__title organization/clientOffers/edges/node/contract/job/content/title
job_application_ref organization/clientOffers/edges/node/contract/offer/vendorProposal/id
job_posting_uid organization/clientOffers/edges/node/contract/job/
job_ref_ciphertext No direct match
manual_time_allowed organization/clientOffers/edges/node/contract/manualTimeAllowed
modified_time organization/clientOffers/edges/node/contract/modifiedDateTime
offer__reference No direct match
offer_id organization/clientOffers/edges/node/contract/offer/id
parent_reference No direct match Possible alternative: organization/clientOffers/edges/node/contract/offer/id
provider__has_agency organization/clientOffers/edges/node/contract/hasAgency
provider__id organization/clientOffers/edges/node/contract/freelancer/user/nid
provider__reference organization/clientOffers/edges/node/contract/freelancer/user/rid
provider_team__id No direct match Possible alternative: organization/clientOffers/edges/node/contract/offer/agency/id
provider_team__reference No direct match Possible alternative: organization/clientOffers/edges/node/contract/offer/agency/rid
reference organization/clientOffers/edges/node/contract/id
status organization/clientOffers/edges/node/contract/status
weekly_hours_limit organization/clientOffers/edges/node/contract/weeklyHoursLimit
weekly_salary_charge_amount organization/clientOffers/edges/node/contract/weeklyChargeAmount
weekly_stipend_hours organization/clientOffers/edges/node/contract/weeklyStipendHours

GraphQL OAuth2 scopes:

Name Description
Offer - Read-Only Access Grants read-only access to offer's information
Offer - Read And Write Access Grants read/write access to offers

List engagements

This call returns engagement(s) based on the parameters supplied in the API call

REST
GET  /api/hr/v2/engagements
GET /api/hr/v2/engagements.{format}
GraphQL
query organization {
  organization {
    id
    clientOffers(pagination: {after: "98", first: 1}) {
      totalCount
      edges {
        cursor
        node {
          id
          team {
            id
            rid
            legacyId
            name
            type
            legacyType
          }
          contract {
            offer {
              id
              offerTerms {
                fixedPriceTerm {
                  budget {
                    rawValue
                  }
                }
              }
              agencyOffers {
                totalCount
                edges
                pageInfo
              }
            }
            clientProposal {
              id
            }
            contractType
            createdDateTime
            endDateTime
            estimatedDuration {
              id
            }
            firstContractStartDateTime
            freelancer {
              user {
                id
                nid
                rid
                ciphertext
              }
              countryDetails {
                id
                name
              }
            }
            hasAgency
            hideScreenshots
            hourlyChargeRate {
              rawValue
            }
            id
            job {
              id
              classification {
                category {
                  id
                  type
                }
              }
              content {
                title
              }
            }
            jobCategories {
              id
              name
              selectedCategories
            }
            last
            manualTimeAllowed
            milestones {
              id
            }
            modifiedDateTime
            offer {
              id
            }
            paused
            startDateTime
            status
            suspended
            title
            weeklyChargeAmount {
              rawValue
            }
            weeklyHoursLimit
            weeklyStipendHours
          }
        }
      }
    }
  }
}

Get engagement

This call retrieves details about a specific engagement.

REST
GET  /api/hr/v2/engagements/{engagement_reference}.{format} 
GraphQL
query contract($id: ID!) {
  contract(id: $id) {
    id
    offer {
      id
      offerTerms {
        fixedPriceTerm {
          budget {
            rawValue
          }
        }
      }
    }
    clientProposal {
      id
    }
    contractType
    createdDateTime
    endDateTime
    estimatedDuration {
      id
    }
    firstContractStartDateTime
    freelancer {
      user {
        id
        nid
        rid
        ciphertext
      }
      countryDetails {
        id
        name
      }
    }
    hasAgency
    hideScreenshots
    hourlyChargeRate {
      rawValue
    }
    id
    job {
      id
      classification {
        category {
          id
          type
        }
      }
      content {
        title
      }
    }
    last
    manualTimeAllowed
    milestones {
      id
    }
    modifiedDateTime
    offer {
      id
    }
    paused
    startDateTime
    status
    suspended
    title
    weeklyChargeAmount {
      rawValue
    }
    weeklyHoursLimit
    weeklyStipendHours
  }
}
Variables
{"id": 4}


Payments

GraphQL OAuth2 scopes:

Name Description
Payments - Read and Write Access Grants read and write access to payment activities

Make custom payment

This call is designed for making custom payments for a specific team and engagement in that team

REST
POST  /api/hr/v2/teams/{team_reference}/adjustments.{format} 
GraphQL
mutation sendCustomPayment(
  $contractId: ID!
  $amount: Float!
  $comment: String!
  $notes: String!
  $allowSubsequent: Boolean
) {
  sendCustomPayment(input: {
    contractId: $contractId
    amount: $amount
    comment: $comment
    notes: $notes
    allowSubsequent: $allowSubsequent
  }) {
    invoiceId
  }
}
Variables
{
  "contractId": 4,
  "amount": 123.45,
  "comment": "xyz789",
  "notes": "xyz789",
  "allowSubsequent": false
}

Fields:

REST Field GraphQL Path
reference mutation.sendCustomPayment.invoiceId

Public Profiles

GraphQL OAuth2 scopes:

Name Description
Freelancer Profile - Read And Write Access Grants read/write access to freelancer profile

Search for Freelancers

The search parameters include the options available on the site and additional options to configure the format of your results.

REST
GET  /api/profiles/v2/search/providers.{format} 
GraphQL
{
  search {
    searchFreelancerPublicProfile(
      request: {
        paging: $paging,
        userQuery: $userQuery,
        occupationUid: $occupationUid,
        title: $title,
        countries: $countries,
        states: $states,
        cities: $cities,
        hourlyRate: $hourlyRate,
        jobSuccessScore: $jobSuccessScore,
        totalJobs: $totalJobs,
        topRated: $topRated,
        risingTalent: $risingTalent,
        hasPortrait100: $hasPortrait100,
        skillsNames: $skillsNames,
        skillsUids: $skillsUids,
        vemSkills: $vemSkills,
        type: $type,
        addAgencyPreview: $addAgencyPreview,
        agencySearch: $agencySearch,
        publicVisibilityOnly: $publicVisibilityOnly
      }
    ) {
      profiles {
        profile {
          identity {
            id
            ciphertext
          }
          profileAggregates {
            lastWorkedOn
            topRatedStatus
            totalJobs
            totalFeedback
            totalHourlyJobs
            totalFixedJobs
            adjustedCategoryScores {
              averageCategoryScore
            }
          }
          personalData {
            portrait {
              portrait
            }
            firstName
            lastName
            title
            description
            location {
              country
              state
              city
            }
          }
          specializedProfilesSkills {
            skills {
              ontologySkill {
                skill {
                  id
                }
                skillUid
              }
            }
          }
        }
      }
    }
  }
}
Variables
{
  "paging": {"start": 123, "rows": 123},
  "userQuery": "xyz789",
  "occupationUid": "xyz789",
  "title": "xyz789",
  "countries": ["abc123"],
  "states": ["xyz789"],
  "cities": ["xyz789"],
  "hourlyRate": {"min": 987.65, "max": 987.65},
  "jobSuccessScore": {"min": 987.65, "max": 987.65},
  "totalJobs": {"min": 123, "max": 123},
  "topRated": false,
  "risingTalent": false,
  "hasPortrait100": true,
  "skillsNames": ["abc123"],
  "skillsUids": ["abc123"],
  "vemSkills": [{"skill": "abc123", "weight": 987.65}],
  "type": "Agency",
  "addAgencyPreview": false,
  "agencySearch": false,
  "publicVisibilityOnly": false
}

Fields:

REST Field GraphQL Path Description
q userQuery The search query. At least one of the `q`, `title`, `skill` parameters should be specified.
title title Searches for the title in the freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified.
skills skillsNames Searches for skills of freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified.
groups Searches for groups in the freelancer's profile. The freelancer must be a member of the group provided.
tests Searches for tests in the freelancer's profile.
tests_top_10 Searches for freelancers that are in the top 10 of the test.
tests_top_30 Searches for freelancers that are in the top 30 of the test.
category2 The category (V2) of the freelancer's profile. Use Metadata resource to get it. You can get it via Metadata Category (v2) resource.
subcategory2 The subcategory of the job according to the list of Categories 2.0. Example: `Web & Mobile Development`. You can get it via Metadata Category (v2) resource.
region countries Searches for profiles of freelancers who live in the region provided. Valid values are provided by Metadata Regions resource. Example: `Latin America`.
feedback Searches for freelancers with specific feedback score. Single values such as `3` or `3,4` (comma-separated values results in OR queries) and ranges such as `[3 TO 4]` are valid.
rate A number or range used to filter the search by freelancer's profile rate. Single values such as `20` or `20,30` (comma-separated values result in `OR` queries) and ranges such as `[20 TO 40]` are valid.
topRated Note we have topRated Boolean
hours Searches for profiles of freelancers who have worked the number of hours provided. Single values such as `20` or `20,30` (comma-separated values result in `OR` queries) and ranges such as `[20 TO 40]` are valid.
recent_hours Searches for profiles of freelancers who have recently worked the number of hours provided. Single values such as `20` or `20,30` (comma-separated values result to `OR` queries) and ranges such as `[20 TO 40]` are valid.
last_activity The date of the last time the freelancer worked. The value should be formatted according to ISO 8601 date syntax with hours always set at 00:00:00.000. Example: `2013-01-04T00:00:00.000Z`.
english_skill The freelancer's English skills assessment result. Valid values: 0, 1, 2, 3, 4, 5
is_odesk_ready Defines if the freelancer is Upwork ready or not. Valid values: 0, 1
profile_type type The freelancer type. Valid values: Agency, Independent
include_entities If set to `1` the data in the response will only contain a profile IDs array. Valid values: 0, 1
profile_access publicVisibilityOnly The access type of the profile. Valid values: auth, public
nss100 jobSuccessScore Job success score. Example: value `[0.8 TO *]` returns freelancers with job success score more than 0.8 (80%).
paging Pagination, formed as `$offset;$count`. Page size is restricted to be <= 50. Example: page=100;30.

Get brief profile summary

Read and search profiles of contractors and jobs, and get lists of public metadata

REST
GET  /api/profiles/v1/providers/{profile_key}/brief.{format} 
GraphQL
query getFreelancerProfile($profileKey: String!) {
  freelancerProfileByProfileKey(profileKey: $profileKey) {
    aggregates {
      ...FreelancerProfileAggregatesFragment
    }
    personalData {
      ...FreelancerProfilePersonalDataFragment
    }
  }
}
Variables
{"profileKey": "abc123"}

Fields:

REST Field GraphQL Path Notes
ciphertext This is the profile_key Not available yet
dev_ac_agencies FreelancerProfile.agencies
dev_adj_score FreelancerProfile.aggregates.adjustedFeedbackScore
dev_adj_score_recent FreelancerProfile.aggregates.adjustedFeedbackScoreRecent
dev_billed_assignments FreelancerProfile.aggregates.billedAssignments
dev_city FreelancerProfile.personalData.location.city
dev_country FreelancerProfile.personalData.location.country
dev_eng_skill FreelancerProfile.languages
dev_groups FreelancerProfile.jobCategories.groups
dev_is_affiliated Not available yet
dev_last_activity FreelancerProfile.aggregates.lastActivity
dev_last_worked FreelancerProfile.aggregates.lastWorkedOn
dev_last_worked_ts FreelancerProfile.aggregates.lastWorkedOn
dev_portfolio_items_count FreelancerProfile.profileCompletenessSummary.portfolioCount
dev_portrait FreelancerProfile.personalData.portrait.portrait
dev_portrait_100 FreelancerProfile.personalData.portrait.portrait100
dev_portrait_32 FreelancerProfile.personalData.portrait.portrait32
dev_portrait_50 FreelancerProfile.personalData.portrait.portrait50
dev_profile_title FreelancerProfile.personalData.title
dev_recno_ciphertext Not available yet
dev_short_name Get the short name format. Name can be composed with FreelancerProfile.personalData.firstName & FreelancerProfile.personalData.lastName
dev_timezone FreelancerProfile.personalData.location.timezone
dev_tot_feedback FreelancerProfile.aggregates.totalFeedback
dev_total_hours FreelancerProfile.aggregates.totalHours
dev_ui_profile_access FreelancerProfile.userPreferences.visibilityLevel

Get freelancer profile by key

The API takes a profile key and returns detailed profile information about a freelancer or list of freelancers. This call returns an exhaustive list of attributes associated with the freelancer. If you're looking for a shorter summary, use the brief version of this call (GET /api/profiles/v1/providers/{profile_key}/brief.{format}).

REST
GET  /api/profiles/v1/providers/{profile_key}.{format} 
GraphQL
query talentProfileByProfileKey($profileKey: String!) {
  talentProfileByProfileKey(profileKey: $profileKey) {
    personId
    identity {
      ...TalentProfileIdentityFragment
    }
    personalData {
      ...TalentProfilePersonalDataFragment
    }
    preferences {
      ...TalentProfileUserPreferencesFragment
    }
    settings {
      ...TalentProfileSettingsFragment
    }
    personAvailability {
      ...TalentPersonAvailabilityFragment
    }
    projectList {
      ...TalentProjectListFragment
    }
    communityCertificates {
      ...TalentProfileCommunityCertificateFragment
    }
    profileCompleteness {
      ...TalentProfileCompletenessSummaryFragment
    }
    otherExperiences {
      ...TalentProfileOtherExperienceFragment
    }
    educationRecords {
      ...TalentEducationRecordFragment
    }
    employmentRecords {
      ...TalentProfileEmploymentRecordFragment
    }
    skills {
      ...TalentProfilePersonSkillFragment
    }
    jobCategories {
      ...TalentJobCategoryGroupFragment
    }
    profileAggregates {
      ...TalentProfileAggregateFragment
    }
    specializedProfiles {
      ...TalentSpecializedProfileFragment
    }
    specializedProfilesSkills {
      ...TalentSpecializedProfileSkillFragment
    }
    specializedProfilesProjects {
      ...TalentSpecializedProfilesProjectFragment
    }
  }
}
Variables
{"profileKey": "abc123"}

Fields:

REST Field GraphQL Path
ciphertext This is the profile_key
dev_ui_profile_access TalentProfile.preferences.visibilityLevel
skills TalentProfile.skills
dev_adj_score TalentProfile.TalentProfileAggregate.adjustedCategoryScores
experiences TalentProfile.otherExperiences

Companies and Teams

GraphQL OAuth2 scopes:

Name Description
Common Entities - Read-Only Access Grants read-only access to common entities like Organization, User, Freelancer Profile, etc.
Read Work diary company for public user Fetch workdiary snapshots information through for a input company

List companies

This call returns all the companies the currently authorized user has access to on Upwork. It is important to take into account that just because a user has access to a company does not mean he/she has access to all areas of a company. To find out exactly what permissions a user has within a specific company use 'Get roles' API call.

REST
GET  /api/hr/v2/companies.{format} 
GraphQL
query companies($userId: ID!) {
  companies(userId: $userId) {
    company {
      private {
        id
        companyName
        paymentVerification {
          status
        }
      }
    }
  }
}
Variables
{"userId": 4}

Fields:

REST Field GraphQL Path Description
reference companies.company.private.id Company reference
name companies.company.private.companyName Company name
payment_verification_status companies.company.private.paymentVerification.status Payment verified

Get company

Returns details regarding a specific company. If a user does not have access to this company, the call returns a 403 error. This API call does not return a list of teams within the company.

REST
GET  /api/hr/v2/companies/{company_reference}.{format} 
GraphQL
query getCompanyDetails($companyId: ID!) {
  company(id: $id) {
    private {
      id
      companyName
      paymentVerification {
        status
      }
    }
  }
}
Variables
{"id": "4"}

Fields:

REST Field GraphQL Path Description
reference query.company.private.id Company reference
name query.company.private.companyName Company name
payment_verification_status query.company.private.paymentVerification.status Payment verified

List teams

This call returns all the teams that a user has access to. Keep in mind that it returns teams across different companies.

REST
GET  /api/hr/v2/teams.{format} 
GraphQL
{
  organization {
    childOrganization {
      id
      company {
        name
      }
      parentOrganization {
        id
        company {
          name
        }
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description
id query/organization/childOrganization/id Team ID
name query/organization/childOrganization/company/name Company name
parent_team__id query/organization/childOrganization/parentOrganization/id Parent team ID
company_name query/organization/childOrganization/parentOrganization/company/name Parent company name

List users in team

This call returns a list of teams within the company being referenced (as long as the user has access to the referenced company).

REST
GET  /api/hr/v2/teams/{team_reference}/users.{format} 
GraphQL
query getChildOrganizationStaff($childOrganizationId: ID!) {
  organization {
    childOrganization(id: $childOrganizationId) {
      staffs {
        edges {
          node {
            user {
              id
              name
              publicUrl
            }
            staffType
            activationStatus
          }
        }
      }
    }
  }
}
Variables
{"childOrganizationId": "yourChildOrganizationIdHere"}

Fields:

REST Field GraphQL Path Description
Id query/organization/childOrganization/staffs/edges/node/user/id User ID
reference query/organization/childOrganization/staffs/edges/node/id User reference
public_url query/organization/childOrganization/staffs/edges/node/user/publicUrl User's public profile url
is_provider query/organization/childOrganization/staffs/edges/node/organization/legacyType Is it a contractor
status query/organization/childOrganization/staffs/edges/node/staffType User status in this team

Get Work Diary

The Work Diary method retrieves all snapshots from a single user account within a single day. Keep in mind that a day is dependent on server time and not the day in which the query is made. Make sure to test with various locations before you're done. If task ID is empty, the endpoint will group the data by contract and memo, otherwise by task ID.

REST
GET  /api/team/v3/workdiaries/companies/{company_id}/{date}.{format} 
GraphQL
query getWorkDiaryCompany($companyId: ID!, $date: String!) {
  workDiaryCompany(workDiaryCompanyInput: { companyId: $companyId, date: $date }) {
    total
    snapshots {
      contract {
        id
        contractTitle
        userId
      }
      user {
        id
        name
        portraitUrl
      }
      duration
      durationInt
      task {
        id
        code
        description
        memo
      }
      time {
        trackedTime
        manualTime
        overtime
        firstWorked
        lastWorked
        firstWorkedInt
        lastWorkedInt
        lastScreenshot
      }
      screenshots {
        activity
        screenshotUrl
        screenshotImage
        screenshotImageLarge
        screenshotImageMedium
        screenshotImageThumbnail
        hasWebcam
        hasScreenshot
        webcamUrl
        webcamImage
        webcamImageThumbnail
        flags {
          hideScreenshot
          downSampleScreenshots
        }
      }
    }
  }
}
Variables
{"companyId": 4, "date": "abc123"}

Fields:

REST Field GraphQL Path Description
total total Total number of records
contracts.user_id snapshots.contract.userId User ID
contracts.contract_title snapshots.contract.contractTitle Contract title
users.name snapshots.user.name User name
users.portrait_url snapshots.user.portraitUrl Portrait URL
snapshots.task.id Snapshots.task.id ID
snapshots.task.code Snapshots.task.code Code
snapshots.task.description Snapshots.task.description Description
snapshots.task.memo Snapshots.task.memo Memo
snapshots.contract_id snapshots.contract.id Contract ID
snapshots.duration snapshots.duration Duration
snapshots.duration_int snapshots.durationInt Durarion (in minutes)
snapshots.user_id snapshots.userId User ID
snapshots.time.tracked_time snapshots.time.trackedTime Tracked time
snapshots.time.manual_time snapshots.time.manualTime Manual time
snapshots.time.overtime snapshots.time.overtime Overtime
snapshots.time.first_worked snapshots.time.firstWorked First worked time
snapshots.time.last_worked snapshots.time.lastWorked Last worked time
snapshots.time.first_worked_int snapshots.time.firstWorkedInt First worked timestamp
snapshots.time.last_worked_int snapshots.time.lastWorkedInt Last worked timestamp
snapshots.time.last_screenshot snapshots.time.lastScreenshot Last screenshot
snapshots.screenshots snapshots.screenshots List of screenshots
snapshots.snapshot_api snapshots.screenshots[*].screenshotUrl Link to snapshot API
snapshots.last_worked_snapshot_api deprecated Link to snapshots API with the last worked snapshot

Get Work Diary by Contract

The Work Diary method retrieves all snapshots from a single user account within a single day.

REST
GET  /api/team/v3/workdiaries/contracts/{contract_id}/{date}.{format} 
GraphQL
{
  workDiaryContract(
    workDiaryContractInput: {
      contractId: $contractId,
      date: $date,
      offsetInSeconds: offsetInSeconds,
      useLegacy: useLegacy
    }
  ) {
    workDiaryMetadata {
      user {
        id
        name
      }
      timezoneOffset
      archivingDateTime
    }
    workDiaryTimeCells {
      cellDateTime {
        rawValue
        displayValue
      }
      overtime
      activityLevel
      memo
    }
  }
}
Variables
{"contractId": "4", "date": "abc123", "offsetInSeconds": 987, "useLegacy": true}

Fields:

REST Field GraphQL Path Description
snapshots.assignment.id workDiaryContract/id Contract ID
snapshots.user.uid workDiaryContract/workDiaryMetadata/user/id User ID
snapshots.user.first_name workDiaryContract/workDiaryMetadata/user/lastName Last name
snapshots.user.portrait_url workDiaryContract/workDiaryMetadata/user/photoUrl Portrait URL
snapshots.user.timezone_offset workDiaryContract/workDiaryMetadata/timezoneOffset Timezone offset
snapshots.user.archiving_time workDiaryContract/workDiaryMetadata/archivingDateTime Archiving time
snapshots.snapshots.cell_time workDiaryContract/workDiaryTimeCells/cellDateTime Cell timestamp
snapshots.snapshots.time workDiaryContract/workDiaryTimeCells/snapshotDateTime Snapshot timestamp
snapshots.snapshots.activity workDiaryContract/workDiaryTimeCells/activityLevel Flag indicates the level of activity
snapshots.snapshots.memo workDiaryContract/workDiaryTimeCells/memo Memo
snapshots.snapshots.task.id workDiaryContract/workDiaryTimeCells/task/id ID
snapshots.snapshots.task.description workDiaryContract/workDiaryTimeCells/task/description Description
snapshots.snapshots.mouse_events_count workDiaryContract/workDiaryTimeCells/mouseEventsCount Mouse events
snapshots.snapshots.keyboard_events_count workDiaryContract/workDiaryTimeCells/keyboardEventsCount Keyboard events
snapshots.snapshots.active_window_title workDiaryContract/workDiaryTimeCells/activeWindowTitle Active window title
snapshots.snapshots.flags.hide_screenshots workDiaryContract/workDiaryTimeCells/hideScreenshots Flag indicates hidden screenshot
snapshots.snapshots.has_screenshot workDiaryContract/workDiaryTimeCells/hasScreenshot Flag indicates if the cell has a screenshot
snapshots.snapshots.screenshot_url workDiaryContract/workDiaryTimeCells/screenshotImageUrl Screenshot URL
snapshots.snapshots.screenshot_img_med workDiaryContract/workDiaryTimeCells/screenshotImageUrlMedium Medium screenshot image
snapshots.snapshots.screenshot_img_thmb workDiaryContract/workDiaryTimeCells/screenshotImageThumbnail Screenshot thumbnail
snapshots.snapshots.has_webcam workDiaryContract/workDiaryTimeCells/webcamEnabled Flag indicates if webcam image exists
snapshots.snapshots.webcam_url workDiaryContract/workDiaryTimeCells/webcamImageUrl Webcam URL
snapshots.snapshots.webcam_img_thmb workDiaryContract/workDiaryTimeCells/webcamImageThumbnail Webcam thumbnail

Milestone Submissions

GraphQL OAuth2 scopes:

Name Description
Offer - Read And Write Access Grants read/write access to offers

Submit work to a milestone

This API call allows a freelancer to submit work to a milestone to be approved by the client. Note that the user must be authorized in Upwork and must be a freelancer of a contract or AM of such freelancer.

REST
POST  /api/hr/v3/fp/submissions.{format} 
GraphQL
mutation freelancerSubmitMilestone($milestoneId: String, $noteToClient: String, $amount: String) {
  submitMilestoneByFreelancer(
    input: { id: $id, noteToClient: $noteToClient, amount: $amount }
  ) {
    id
  }
}
Variables
{"id": 4, "noteToClient": "abc123", "amount": "abc123"}

Fields:

REST Field GraphQL Path Description
milestone_id FreelancerSubmitMilestoneInput.id Milestone reference
noteToClient FreelancerSubmitMilestoneInput.noteToClient Notes from freelancer to client about work that was done
amount FreelancerSubmitMilestoneInput.amount Amount requested by the freelancer

Approve a milestone submission

This API call allows a Hiring Manager to approve the submission of work to a milestone made by the freelancer. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to approve a milestone submission

REST
PUT  /api/hr/v3/fp/submissions/{submission_id}/approve.{format} 
GraphQL
mutation approveSubmitMilestone($milestoneId: String, $paidAmount: String, $bonusAmount: String, $paymentComment: String, $underpaymentReason: String, $noteToContractor: String) {
  approveMilestone(
    input: {
      id: $milestoneId,
      paidAmount: $paidAmount,
      bonusAmount: $bonusAmount,
      paymentComment: $paymentComment,
      underpaymentReason: $underpaymentReason,
      noteToContractor: $noteToContractor
    }
  ) {
    id
  }
}
Variables
{
  "milestoneId": "4",
  "paidAmount": "xyz789",
  "bonusAmount": "abc123",
  "paymentComment": "abc123",
  "underpaymentReason": "xyz789",
  "noteToContractor": "abc123"
}

Fields:

REST Field GraphQL Path Description
submission_id ApproveMilestoneInput.id Submission reference
amount ApproveMilestoneInput.paidAmount Amount of money to be paid
bonus ApproveMilestoneInput.bonusAmount Amount of money paid as bonus
pay_comments ApproveMilestoneInput.paymentComment Comments on payment
underpayment_reason ApproveMilestoneInput.underpaymentReason Reason for a smaller payment than the one agreed. Values description: `329` - Payment lower due to freelancer performance; `330` - Freelancer is performing well, but the scope of work changed; `331` - Freelancer is performing well, but I decided to make an earlier payment; `332` - Payment is lower for other reasons, but freelancer is performing well. Valid values: 329, 330, 331, 332
note2contractor ApproveMilestoneInput.noteToContractor Notes from the client to the freelancer

Reject a milestone submission

This API call allows a Hiring Manager to reject the submission of work to a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to reject the submission.

REST
PUT  /api/hr/v3/fp/submissions/{submission_id}/reject.{format} 
GraphQL
mutation rejectSubmittedMilestone($milestoneId: String, $noteToContractor: String) {
  rejectSubmittedMilestone(
    input: { id: $milestoneId, noteToContractor: $noteToContractor }
  ) {
    id
  }
}
Variables
{"milestoneId": "4", "noteToContractor": "abc123"}

Fields:

REST Field GraphQL Path Description
submission_id RejectMilestoneSubmissionInput.id Submission reference
note2contractor RejectMilestoneSubmissionInput.noteToContractor Notes from the client to the freelancer

Milestones Create/Update

GraphQL OAuth2 scopes:

Name Description
Offer - Read-Only Access Grants read-only access to offer's information
Offer - Read And Write Access Grants read/write access to offers

Create a milestone

This API call allows a Hiring Manager to create a milestone. Note that the user must be authorized in Upwork and must be Hiring Manager in the team to be able to create a milestone

REST
POST  /api/hr/v3/fp/milestones.{format} 
GraphQL
mutation createMilestone(
  $offerId: ID!,
  $contractId: ID!,
  $description: String!,
  $instruction: String!,
  $depositAmount: String!,
  $dueDate: String!,
  $attachmentIds: [ID!]
) {
  createMilestone(
    input: {
      offerId: $offerId,
      contractId: $contractId,
      description: $description,
      instruction: $instruction,
      depositAmount: $depositAmount,
      dueDate: $dueDate,
      attachmentIds: $attachmentIds
    }
  ) {
    id
    createdBy {
      id
      nid
      rid
    }
    modifiedBy {
      id
      nid
      rid
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      rawValue
      displayValue
      currency
    }
    depositAmount {
      rawValue
      displayValue
      currency
    }
    fundedAmount {
      rawValue
      displayValue
      currency
    }
    paid {
      rawValue
      displayValue
      currency
    }
    overpayment {
      rawValue
      displayValue
      currency
    }
    bonus {
      rawValue
      displayValue
      currency
    }
    previousMilestoneUnusedDeposit {
      rawValue
      displayValue
      currency
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      submission {
        id
        createdDateTime
        modifiedDateTime
        amount {
          rawValue
          displayValue
          currency
        }
        sequenceId
      }
      submissionMessage {
        createdDateTime
        message
      }
      revisionMessage {
        createdDateTime
        message
      }
    }
  }
}
Variables
{
  "offerId": 4,
  "contractId": 4,
  "description": "abc123",
  "instruction": "abc123",
  "depositAmount": "xyz789",
  "dueDate": "xyz789",
  "attachmentIds": ["4"]
}

Fields:

REST Field GraphQL Path
contract_reference CreateMilestoneInput.contractId
milestone_description CreateMilestoneInput.description
deposit_amount CreateMilestoneInput.depositAmount
due_date CreateMilestoneInput.dueDate
This resource returns the ID of the milestone created createMilestone.id

Edit a milestone

This API call allows a Hiring Manager to edit a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to edit the milestone

REST
PUT  /api/hr/v3/fp/milestones/{milestone_id}.{format} 
GraphQL
mutation editMilestone(
  $id: ID!,
  $description: String,
  $instructions: String,
  $depositAmount: String,
  $dueDate: String,
  $attachments: [ID!],
  $message: String,
  $sequenceId: Int
) {
  editMilestone(
    input: {
      id: $id,
      description: $description,
      instructions: $instructions,
      depositAmount: $depositAmount,
      dueDate: $dueDate,
      attachments: $attachments,
      message: $message,
      sequenceId: $sequenceId
    }
  ) {
    id
    createdBy {
      id
      nid
      rid
    }
    modifiedBy {
      id
      nid
      rid
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      rawValue
      displayValue
      currency
    }
    depositAmount {
      rawValue
      displayValue
      currency
    }
    fundedAmount {
      rawValue
      displayValue
      currency
    }
    paid {
      rawValue
      displayValue
      currency
    }
    overpayment {
      rawValue
      displayValue
      currency
    }
    bonus {
      rawValue
      displayValue
      currency
    }
    previousMilestoneUnusedDeposit {
      rawValue
      displayValue
      currency
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      submission {
        id
        createdDateTime
        modifiedDateTime
      }
    }
  }
}
Variables
{
  "id": 4,
  "description": "xyz789",
  "instructions": "abc123",
  "depositAmount": "xyz789",
  "dueDate": "xyz789",
  "attachments": ["4"],
  "message": "abc123",
  "sequenceId": 987
}

Fields:

REST Field GraphQL Path
milestone_id EditMilestoneInput.id
milestone_description EditMilestoneInput.description
deposit_amount EditMilestoneInput.depositAmount
message EditMilestoneInput.message
due_date EditMilestoneInput.dueDate
Returns 200 OK in case of success Returns updated Milestone Object

Activate a milestone

This API call allows a Hiring Manager to activate a Milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to activate the milestone

REST
PUT  /api/hr/v3/fp/milestones/{milestone_id}/activate.{format} 
GraphQL
mutation activateMilestone(
  $id: ID!,
  $message: String
) {
  activateMilestone(
    input: {
      id: $id,
      message: $message
    }
  ) {
    id
    createdBy {
      id
      nid
      rid
    }
    modifiedBy {
      id
      nid
      rid
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      rawValue
      displayValue
      currency
    }
    depositAmount {
      rawValue
      displayValue
      currency
    }
    fundedAmount {
      rawValue
      displayValue
      currency
    }
    paid {
      rawValue
      displayValue
      currency
    }
    overpayment {
      rawValue
      displayValue
      currency
    }
    bonus {
      rawValue
      displayValue
      currency
    }
    previousMilestoneUnusedDeposit {
      rawValue
      displayValue
      currency
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      submission {
        id
        createdDateTime
        modifiedDateTime
        amount {
          rawValue
          displayValue
          currency
        }
        sequenceId
      }
      submissionMessage {
        createdDateTime
        message
      }
      revisionMessage {
        createdDateTime
        message
      }
    }
  }
}
Variables
{"id": "4", "message": "xyz789"}

Fields:

REST Field GraphQL Path
milestone_id ActivateMilestoneInput.id
message ActivateMilestoneInput.message
Returns 200 OK in case of success Returns activated Milestone Object

Approve a milestone

Closes the milestone by paying the deposit amount if no amount is specified

REST
PUT  /api/hr/v3/fp/milestones/{milestone_id}/approve.{format} 
GraphQL
mutation approveMilestone(
  $id: ID!,
  $paidAmount: String,
  $bonus: String,
  $paymentComment: String,
  $underpaymentReason: String,
  $noteToContractor: String
) {
  approveMilestone(
    input: {
      id: $id,
      paidAmount: $paidAmount,
      bonusAmount: $bonus,
      paymentComment: $paymentComment,
      underpaymentReason: $underpaymentReason,
      noteToContractor: $noteToContractor
    }
  ) {
    id
    createdBy {
      id
      nid
      rid
    }
    modifiedBy {
      id
      nid
      rid
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      rawValue
      displayValue
      currency
    }
    depositAmount {
      rawValue
      displayValue
      currency
    }
    fundedAmount {
      rawValue
      displayValue
      currency
    }
    paid {
      rawValue
      displayValue
      currency
    }
    overpayment {
      rawValue
      displayValue
      currency
    }
    bonus {
      rawValue
      displayValue
      currency
    }
    previousMilestoneUnusedDeposit {
      rawValue
      displayValue
      currency
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      submission {
        id
        createdDateTime
        modifiedDateTime
        amount {
          rawValue
          displayValue
          currency
        }
        sequenceId
      }
      submissionMessage {
        createdDateTime
        message
      }
      revisionMessage {
        createdDateTime
        message
      }
    }
  }
}
Variables
{
  "id": "4",
  "paidAmount": "xyz789",
  "bonusAmount": "abc123",
  "paymentComment": "abc123",
  "underpaymentReason": "xyz789",
  "noteToContractor": "abc123"
}

Fields:

REST Field GraphQL Path
milestone_id ApproveMilestoneInput.id
amount ApproveMilestoneInput.paidAmount
bonus ApproveMilestoneInput.bonusAmount
pay_comments ApproveMilestoneInput.paymentComment
underpayment_reason ApproveMilestoneInput.underpaymentReason
note2contractor ApproveMilestoneInput.noteToContractor
Returns 200 OK in case of success Returns approved Milestone Object

Delete a milestone

This API call allows a Hiring Manager to delete a milestone. Note that the user must be authorized in Upwork and must be a Hiring Manager in the team to be able to delete the milestone. Only milestones with status `not_funded` can be deleted

REST
DELETE  /api/hr/v3/fp/milestones/{milestone_id}.{format} 
GraphQL
mutation deleteMilestone($id: ID!) {
  deleteMilestone(input: {id: $id})
}
Variables
{"id": "4"}

Fields:

REST Field GraphQL Path
milestone_id DeleteMilestoneInput.id
Returns 200 OK in case of success Returns Boolean of true in case of success

Activities

GraphQL OAuth2 scopes:

Name Description
Activity Entities - Read-Only Access Grants read-only access to activity entities
Activity Entities - Read and Write Access Grants read and write access to activity entities

List team activities

Returns details regarding a specific company. If a user does not have access to this company, the call returns a 403 error. This API call does not return a list of teams within the company.

REST
GET  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks.{format} 
GraphQL
query teamActivities(
  $orgId: ID!,
  $teamId: ID,
  $page: PageFilterInput,
) {
  teamActivities(
    orgId: $orgId,
    teamId: $teamId,
    page: $page,
  ) {
    totalCount
    edges {
       node {
        url
        userId
        code
        companyId
        recordId
        description
      }
    }
    page {
      pageOffset
      pageSize
    }
  }
}
Variables
{"orgId": "4", "teamId": 4, "page": {"pageOffset": 123, "pageSize": 987}}

Fields:

REST Field GraphQL Path Description
record_id Activity.recordId The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference).
company_id Activity.companyId This is the ID of the company.
user_id Activity.userId The Upwork ID of the user.
code Activity.code This is specified by the user. It could be used to reference a bug ID on a third-party system.
description Activity.description The text description contained within the activity.
URL Activity.url This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL.

List activities for specific engagement

Authorized user must have hiring permissions in order to use this API call.

REST
GET  /api/tasks/v2/tasks/contracts/{engagement_ref}.{format} 
GraphQL
query teamActivities(
  $orgId: ID!,
  $filter: ActivityFilterInput
  $page: PageFilterInput,
) {
  teamActivities(
    orgId: $orgId,
    filter: $filter
    page: $page,
  ) {
    totalCount
    edges {
       node {
        url
        userId
        code
        companyId
        recordId
        description
      }
    }
    page {
      pageOffset
      pageSize
    }
  }
}
Variables
{
  "orgId": "4",
  "page": {"pageOffset": 123, "pageSize": 987},
  "filter": {"contractId": 4}
}

Fields:

REST Field GraphQL Path Description
record_id Activity.recordId The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference).
company_id Activity.companyId This is the ID of the company.
user_id Activity.userId The Upwork ID of the user.
code Activity.code This is specified by the user. It could be used to reference a bug ID on a third-party system.
description Activity.description The text description contained within the activity.
URL Activity.url This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL.

Get team activity by code

This call returns details on a single activity or a set of activities within a team.

REST
GET  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks/{code}.{format} 
GraphQL
query teamActivities(
  $orgId: ID!,
  $teamId: ID,
  $filter: ActivityFilterInput,
  $page: PageFilterInput,
) {
  teamActivities(
    orgId: orgId
    teamId: teamId
    page: $page
    filter: $filter
  ) {
    totalCount
    edges {
      node {
        url
        userId
        code
        companyId
        recordId
        description
      }
    }
    page {
      pageOffset
      pageSize
    }
  }
}
Variables
{
  "orgId": "4",
  "teamId": 4,
  "page": {"pageOffset": 123, "pageSize": 987},
  "filter": {"codes": ["xyz789"]}
}

Fields:

REST Field GraphQL Path Description
record_id Activity.recordId The record ID of the activities. Each activity has a unique ID (users have no control over this number and it should only be used as a reference).
company_id Activity.companyId This is the ID of the company.
user_id Activity.userId The Upwork ID of the user.
code Activity.code This is specified by the user. It could be used to reference a bug ID on a third-party system.
description Activity.description The text description contained within the activity.
URL Activity.url This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL.

Create activity at team level

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

REST
POST  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks.{format} 
GraphQL
mutation addTeamActivity(
  $orgId: ID!,
  $teamId: ID!,
  $request: TeamActivityInput!
) {
  addTeamActivity(
    orgId: $orgId
    teamId: $teamId
    request: $request
  ) {
    id
    success
  }
}
Variables
{
  "orgId": "4",
  "teamId": 4,
  "request": {
    "code": "abc123",
    "description": "abc123",
    "url": "xyz789",
    "contractIds": [4],
    "allInCompany": true
  }
}

Fields:

REST Field GraphQL Path Description
code AddTeamActivityRequest.code This is specified by the user. It could be used to reference a bug ID on a third-party system.
description AddTeamActivityRequest.description The text description contained within the activity.
URL AddTeamActivityRequest.url This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL.
engagements AddTeamActivityRequest.contractIds[] A list of engagements that are to be assigned to the created activity. It can be a single engagement ID, or a semicolon (';') separated list of IDs.
all_in_company AddTeamActivityRequest.allInCompany If set to `1`, then the created activity is assigned to all engagements that exist in the company at the moment. Valid values: 0, 1

Update activity at team level

If you want to update an activity for the whole company, just use the company_id as the team_id.

REST
PUT  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/tasks/{code}.{format} 
GraphQL
mutation updateTeamActivity(
  $orgId: ID!,
  $teamId: ID!,
  $request: UpdateTeamActivityRequest!
) {
  updateTeamActivity(
    orgId: $orgId
    teamId: $teamId
    request: $request
) {
    success
  }
}
Variables
{
  "orgId": "4",
  "teamId": 4,
  "request": {
    "code": "abc123",
    "description": "abc123",
    "url": "xyz789",
    "contractIds": [4],
    "allInCompany": true
  }
}

Fields:

REST Field GraphQL Path Description
code UpdateTeamActivityRequest.code This is specified by the user. It could be used to reference a bug ID on a third-party system.
description UpdateTeamActivityRequest.description The text description contained within the activity.
URL UpdateTeamActivityRequest.url This is specified by the user. It can be used to link to a third-party bug tracking system or any related URL.
engagements UpdateTeamActivityRequest.contractIds[] A list of engagements that are to be assigned to the created activity. It can be a single engagement
all_in_company UpdateTeamActivityRequest.allInCompany Created activity is assigned to all engagements that exist in the company at the moment.

Assign engagements to the list of activities

Activity appears in freelancer's team client only if his engagement is assigned to the activity and activities are activated for the ongoing contract. This call overrides assigned engagements for the given activities. For example, if you pass empty `task_codes` or just omit this parameter, freelancer's engagement is unassigned from all the activities it is assigned to.

REST
PUT  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/engagements/{engagement}/tasks.{format} 
GraphQL
mutation assignTeamActivityToTheContract(
  $orgId: ID!,
  $teamId: ID!,
  $contractId: ID!,
  $codes: [String!]!
) {
  assignTeamActivityToTheContract(
    orgId: $orgId
    teamId: $teamId
    contractId: $contractId
    codes: $codes
  ) {
    success
  }
}
Variables
{"orgId": "4", "teamId": 4, "contractId": 4, "codes": ["abc123"]}

Fields:

REST Field GraphQL Path Description
company_id orgId The company ID. Use the `parent_team__id` value from the 'Get teams' API call.
team_id teamId The team ID
engagement contractId Engagement ID that is assigned/unassigned to the given list of activities

Archive activities

If you want to archive activity for company, use the `company_id` value for `team_id` as well.

REST
PUT  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/archive/{code}.{format} 
GraphQL
mutation archiveTeamActivity(
  $orgId: ID!,
  $teamId: ID!,
  $codes: [String!]!
) {
  archiveTeamActivity(
    orgId: $orgId
    teamId: $teamId
    codes: $codes
  ) {
    success
  }
}
Variables
{"orgId": "4", "teamId": 4, "codes": ["abc123"]}

Fields:

REST Field GraphQL Path Description
company_id orgId The company ID. Use the `parent_team__id` value from the 'Get teams' API call.
team_id teamId The team ID
code codes[] Activity tracking code

Unarchive activities

If you want to unarchive activity for company, use the `company_id` value for `team_id` as well.

REST
PUT  /api/otask/v1/tasks/companies/{company_id}/teams/{team_id}/unarchive/{code}.{format} 
GraphQL
mutation unarchiveTeamActivity(
  $orgId: ID!,
  $teamId: ID!,
  $codes: [String!]!
) {
  unarchiveTeamActivity(
    orgId: $orgId
    teamId: $teamId
    codes: $codes
  ) {
    success
  }
}
Variables
{"orgId": "4", "teamId": 4, "codes": ["abc123"]}

Fields:

REST Field GraphQL Path Description
company_id orgId The company ID. Use the `parent_team__id` value from the 'Get teams' API call.
team_id teamId The team ID
code codes[] Activity tracking code

Metadata

GraphQL OAuth2 scopes:

Name Description
Ontology - Read-Only Access Grants read-only access to ontology information
Common Entities - Read-Only Access Grants read-only access to common entities like Organization, User, Freelancer Profile, etc.

List specialties

This call returns a list of specialties available for a specific topic, which you can get using List Categories query.

REST
GET  /api/profiles/v1/metadata/specialties.{format} 
GraphQL
{
  query ontologyCategories {
    ontologyCategories {
      id
      preferredLabel
      altLabel
      slug
      ontologyId
      subcategories {
        ...OntologySubcategoryFragment
      }
      services {
        ...OntologyServiceFragment
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description
title query/ontologyCategories/subcategories/preferredLabel Title
id query/ontologyCategories/subcategories/id ID

List categories

This call returns a list of categories for a job/freelancer profile from new structure.

REST
GET  /api/profiles/v2/metadata/categories.{format} 
GraphQL
{
  query ontologyCategories {
    ontologyCategories {
      id
      preferredLabel
      altLabel
      slug
      ontologyId
      subcategories {
        ...OntologySubcategoryFragment
      }
      services {
        ...OntologyServiceFragment
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description
title query/ontologyCategories/preferredLabel Title
id query/ontologyCategories/id ID
topics.title query/ontologyCategories/subcategories/preferredLabel Topic title
topics.id query/ontologyCategories/subcategories/id Topic ID

List skills

This call returns a list of skills available in a freelancer's profile.

REST
GET  /api/profiles/v2/metadata/skills.{format} 
GraphQL
{
  query ontologyBrowserSkills(
    $limit: Int!,
    $offset: Int
  ) {
    ontologyBrowserSkills(
      limit: $limit,
      offset: $offset
    ) {
      id
      preferredLabel
    }
  }
}
Variables
{"limit": 10, "offset": 20}

Fields:

REST Field GraphQL Path Description
no specific field, a part of array query/ontologyBrowserSkills/preferredLabel Skill

List regions

This call returns a list of county regions.

REST
GET  /api/profiles/v1/metadata/regions.{format} 
GraphQL
{
  query regions {
    regions {
      id
      name
      parentRegion {
        ...RegionFragment
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description
alias Not available, use query/regions/id instead Alias
title query/regions/name Title

List reasons

This call returns a list of reasons by specified type.

REST
GET  /api/profiles/v1/metadata/reasons.{format} 
GraphQL
{
  query reasons(
    $reasonType: ReasonType!,
    $all: Boolean
  ) {
    reasons(
      reasonType: $reasonType,
      all: $all
    ) {
      id
      reason
      alias
    }
  }
}
Variables
{"reasonType": "JOB_POSTING_CLOSE", "all": true}

Fields:

REST Field GraphQL Path Description
first element of array query/reasons/id Reference
second element of array query/reasons/reason Name
third element of array query/reasons/alias Alias

Users

GraphQL OAuth2 scopes:

Name Description
View UserDetails - Read only Scope for user to fetch user details

Referenced User

This API call returns details about the referenced user.

REST
GET  /api/hr/v2/users/{user_reference}
GET /api/hr/v2/users/{user_reference}.{format}
GraphQL
query userDetails($id: ID!) {
  userDetails(id: $id) {
    id
    nid
    rid
    name
    firstName
    lastName
    photoUrl
    publicUrl
    email
    location {
      timezone
      offsetToUTC
    }
    ciphertext
  }
}
Variables
{"id": 4}

Fields:

REST Field GraphQL Path Description
reference rid The reference ID of the user
id id The literal ID of the user
first_name firstName The user’s first name
last_name lastName The user’s last name
timezone location.timezone The user’s time zone
timezone_offset location.offsetToUTC The time zone offset in seconds
is_provider Deprecated Indicates whether the user is a freelancer (can be hired) or not
email email User’s email
public_url publicUrl The URL to the public profile

Jobs

GraphQL OAuth2 scopes:

Name Description
Read marketplace Job Postings Scope to read marketplace Job Postings for enterprise user

Search for jobs

The search parameters mirror the options available on the site plus options to configure the format of your results

REST
GET  /api/profiles/v2/search/jobs.{format} 
GraphQL
query marketplaceJobPostings(
  $marketPlaceJobFilter: MarketplaceJobFilter,
  $searchType: MarketplaceJobPostingSearchType,
  $sortAttributes: [MarketplaceJobPostingSearchSortAttribute]
) {
  marketplaceJobPostings(
    marketPlaceJobFilter: $marketPlaceJobFilter,
    searchType: $searchType,
    sortAttributes: $sortAttributes
  ) {
    totalCount
    edges {
      ...MarketplaceJobpostingSearchEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "searchExpression_eq": "abc123",
  "skillExpression_eq": "xyz789",
  "titleExpression_eq": "abc123",
  "searchTerm_eq": {
    "andTerms_all": ["xyz789"],
    "orTerms_any": ["abc123"],
    "exactTerms_any": ["xyz789"],
    "excludeTerms_any": ["abc123"]
  },
  "categoryIds_any": ["4"],
  "subcategoryIds_any": ["4"],
  "occupationIds_any": [4],
  "ontologySkillIds_all": [4],
  "sinceId_eq": "abc123",
  "maxId_eq": "abc123",
  "jobType_eq": "HOURLY",
  "duration_eq": "WEEK",
  "workload_eq": "FULL_TIME",
  "clientHiresRange_eq": {"rangeStart": 987, "rangeEnd": 987},
  "clientFeedBackRange_eq": {"rangeStart": 987.65, "rangeEnd": 123.45},
  "budgetRange_eq": {"rangeStart": 987, "rangeEnd": 987},
  "verifiedPaymentOnly_eq": false,
  "previousClients_eq": true,
  "experienceLevel_eq": "ENTRY_LEVEL",
  "locations_any": ["abc123"],
  "cityId_any": ["xyz789"],
  "zipCodeId_any": ["xyz789"],
  "radius_eq": 987,
  "areaId_any": ["xyz789"],
  "timezone_eq": "xyz789",
  "usState_eq": "abc123",
  "daysPosted_eq": 987,
  "jobPostingAccess": "PUBLIC_INDEX",
  "ptcIds_any": [4],
  "ptcOnly_eq": true,
  "enterpriseOnly_eq": true,
  "proposalRange_eq": {"rangeStart": 987, "rangeEnd": 987},
  "pagination_eq": {"after": "abc123", "first": 987},
  "area_eq": {"latitude": 987.65, "longitude": 123.45, "radius": 123.45},
  "preserveFacet_eq": "abc123",
  "userLocationMatch_eq": true,
  "visitorCountry_eq": "abc123"
}

Fields:

REST Field GraphQL Path Description
q marketPlaceJobFilter.searchExpression_eq The search query. At least one of the `q`, `title`, `skill` parameters should be specified.
title marketPlaceJobFilter.titleExpression_eq Searches for the title in the freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified.
skills marketPlaceJobFilter.skillExpression_eq Searches for skills of freelancer's profile. At least one of the `q`, `title`, `skill` parameters should be specified.
category2 marketPlaceJobFilter.categoryIds_any The category (V2) of the freelancer's profile. Use Metadata resource to get it. You can get it via Metadata Category (v2) resource.
subcategory2 marketPlaceJobFilter.subcategoryIds_any The subcategory of the job according to the list of Categories 2.0. Example: `Web & Mobile Development`. You can get it via Metadata Category (v2) resource.
duration marketPlaceJobFilter.duration_eq The duration of the job. Valid values: week, month, semester, ongoing
workload marketPlaceJobFilter.workload_eq Indicates the workload for the job. Valid values: as_needed, part_time, full_time
client_feedback marketPlaceJobFilter.clientFeedBackRange_eq A number or range used to filter the search by jobs posted by clients with a rating equal to, more or less than, or within the values provided. If the value is `None`, then jobs from clients without rating are returned. Single parameters such as `1` or `2,3` are valid (comma separated values result in `OR` queries). Ranges such as `[2 TO 4]` are also valid. Examples: `5.0` - the rating is equal to 5.0; `1-5` - the rating is so that 1 <= n <= 5; `1-` - the rating is >=1; `-5` - the rating is <= 5.
client_hires marketPlaceJobFilter.clientHiresRange_eq A number or range used to filter the search by clients with a number of past hires equal to, more or less than, or within the values provided. Single parameters such as `1` or `2,3` are valid (comma-separated values result in `OR` queries). Ranges such as `[10 TO 20]` are also valid. Examples: `5` - the number of past hires is to 5; `0-10`: number of past hires is 0 <= n <= 10; `10-` - the number of past hires is >=10; `-5` - the number of past hires is <= 5.
budget marketPlaceJobFilter.budgetRange_eq A number or range used to filter the search by jobs having a budget equal to, more or less than, or within the values provided. For example: `[100 TO 1000]` - the budget is between 100 and 1000; `1000` - the budget is equal to 1000. `500-1000` - the budget `b` is 500 <= b <= 1000, `1000-` - the budget is >=1000; `-200` - the budget is <= 200.
days_posted marketPlaceJobFilter.daysPosted_eq Number of days since the job was posted.
paging marketPlaceJobFilter.pagination_eq Pagination, formed as `$offset;$count`. Page size is restricted to be <= 100. Example: page=20;10.
sort sortAttributes Sorts the search results by the value provided. Example: `sort=create_time%20desc`. Valid values: create_time desc, client_rating desc, client_total_charge desc, client_total_hours desc, duration desc, workload desc, create_time asc, client_rating asc, client_total_charge asc, client_total_hours asc, duration asc, workload asc
budget has multiple fields depending on the job_type: - fixed --> response.edges.node.amount - hourly --> range (response.edges.node.hourlyBudgetMin - response.edges.node.hourlyBudgetMax) Budget
category2 response.edges.node.category Category
client.country response.edges.node.client.location.country Client Country
client.feedback response.edges.node.client.totalFeedback Client Feedback
client.jobs_posted response.edges.node.client.totalPostedJobs Client Jobs Posted
client.past_hires response.edges.node.client.totalHires Client Past Hires
client.payment_verification_status response.edges.node.client.verificationStatus Client Payment Verification Status
client.reviews_count response.edges.node.client.totalReviews Client Reviews Count
date_created response.edges.node.createdDateTime Date Created
duration response.edges.node.duration Duration
id response.edges.node.ciphertext ID (Legacy)
job_status #deprecated Job Status
job_type response.edges.node.job.contractTerms.contractType Job Type
skills response.edges.node.skills Skills
snippet response.edges.node.description Snippet
subcategory2 response.edges.node.subcategory Subcategory
title response.edges.node.title Title
url Missing, but can be constructed using ${(stage.)?upwork.com/jobs/ + response.edges.node.ciphertext} URL
workload response.edges.node.job.contractTerms.hourlyContractTerms.engagementType Workload

List jobs

This call returns all jobs that a user has `manage_recruiting` access to. It can be used to find the reference/key ID of a specific job.

REST
GET  /api/hr/v2/jobs.{format} 
GraphQL
{
    organization {
        jobPosting(
          jobPostingFilter: {
            postByTeamIds_any: $postByTeamIds_any
            postByPersonIds_any: $postByPersonIds_any
            statusAndAccess_any: $statusAndAccess_any
            createdDateTimeFrom_eq: $createdDateTimeFrom_eq
            createdDateTimeTo_eq: $createdDateTimeTo_eq
            pagination_eq: $pagination_eq
        }, sortAttribute: $sortAttribute) {
            edges {
                node {
                    id
                    attachment {
                        link
                    }
                    info {
                        status
                        hourlyBudgetMin {
                            rawValue
                        }
                        hourlyBudgetMax {
                            rawValue
                        }
                        auditTime {
                            createdDateTime
                        }
                        filledDateTime
                        legacyCiphertext
                        keepOpenOnHire
                        siteSource
                    }
                    content {
                        title
                        description
                    }
                    contractTerms {
                        fixedPriceContractTerms {
                            engagementDuration {
                                id
                                weeks
                                label
                            }
                        }
                        hourlyContractTerms {
                            engagementDuration {
                                id
                                weeks
                                label
                            } 
                        }
                        contractStartDate
                        contractEndDate
                        contractType
                    }
                    ownership {
                        company {
                            id
                            rid
                            name
                        }
                        team {
                            id
                            rid
                            name
                        }
                    }
                    classification {
                        category {
                            id
                            name
                        }
                        skills {
                            id
                            prettyName
                        }
                        subCategory {
                            id
                            name
                        }
                    }
                    contractorSelection {
                        qualification {
                            contractorType
                        }
                    }
                    visibility
                }
            }
        }
    }
}
Variables
{
  "pagination_eq": {"after": "xyz789", "first": 987},
  "title_eq": "abc123",
  "postByTeamIds_any": ["4"],
  "postByPersonIds_any": ["4"],
  "statusAndAccess_any": [
    {"statuses_any": ["REQUESTED"], "accesses_any": ["PUBLIC_INDEX"]}
  ],
  "excludePostByPersonIds_any": ["4"],
  "categoryGroupIds_any": [4],
  "contractType_eq": "HOURLY",
  "createdDateTimeFrom_eq": "xyz789",
  "createdDateTimeTo_eq": "abc123"
}

Fields:

REST Field GraphQL Path Description
buyer_team__reference auto filled from the context organization The reference ID of the client's team. Example: `34567`. You can get it from List teams API call.
include_sub_teams Included by default and need to use jobPostingFilter.postByTeamIds_any to filter for specific teams If set to `1`, the response includes information about sub teams. Valid values: 0, 1
created_by jobPostingFilter.postByPersonIds_any The user ID. Example: `created_by=1234`.
status jobPostingFilter.statusAndAccess_any.statuses_any The status of the job. Valid values: open, filled, cancelled
created_time_from jobPostingFilter.createdDateTimeFrom_eq Filters by 'from' time. Example: `created_time_from=2008-09-09T00:00:01`.
created_time_to jobPostingFilter.createdDateTimeTo_eq Filters by 'to' time. Example: `created_time_to=2009-01-20T11:59:59`.
page jobPostingFilter.pagination_eq Pagination, formed as `$offset;$count`. Example: `page=20;10`
order_by sortAttribute Sorts results by the value defined. Example: `order_by=created_time`.
jobs.attachment_file_url response.edges.node.attachment.link Attachment File URL
jobs.budget response.edges.node.info.hourlyBudgetMin - response.edges.node.info.hourlyBudgetMax Budget
jobs.buyer_company__name response.edges.node.ownership.company.name Buyer Company Name
jobs.buyer_company__reference response.edges.node.ownership.company.rid or response.edges.node.ownership.company.id Buyer Company Reference
jobs.buyer_team__name response.edges.node.ownership.team.name Buyer Team Name
jobs.buyer_team__reference response.edges.node.ownership.team.rid or response.edges.node.ownership.team.id Buyer Team Reference
jobs.cancelled_date Missing, the upstream response doesn't contain the field Cancelled Date
jobs.category2 response.edges.node.classification.category Category
jobs.created_time response.edges.node.info.auditTime.createdDateTime Created Time
jobs.description response.edges.node.content.description Description
jobs.duration response.edges.node.contractTerms.fixedPriceContractTerms.engagementDuration response.edges.node.contractTerms.hourlyContractTerms.engagementDuration Duration
jobs.end_date response.edges.node.contractTerms.contractEndDate End Date
jobs.filled_date response.edges.node.info.filledDateTime Filled Date
jobs.job_ref_ciphertext response.edges.node.info.legacyCiphertext Job Reference Ciphertext
jobs.job_type response.edges.node.contractTerms.contractType Job Type
jobs.keep_open_on_hire response.edges.node.info.keepOpenOnHire Keep Open on Hire
jobs.preference_candidate_type response.edges.node.contractorSelection.qualification.contractorType Preference Candidate Type
jobs.public_url Missing, but can be constructed from response.edges.node.info.legacyCiphertext Public URL
jobs.reference response.edges.node.info.legacyCiphertext Reference
jobs.skills response.edges.node.classification.skills Skills
jobs.start_date response.edges.node.contractTerms.contractStartDate Start Date
jobs.status response.edges.node.info.status Status
jobs.subcategory2 response.edges.node.classification.subCategory Subcategory
jobs.title response.edges.node.content.title Title

Get job by key

This call returns the complete job object by job key. It's only available for users with `manage_recruiting` permissions within the team that the job is posted in.

REST
GET  /api/hr/v2/jobs/{job_key}.{format} 
GraphQL
{
    jobPosting(jobPostingId: $JobPostingId) {
        id
        attachment {
            link
        }
        info {
            status
            hourlyBudgetMin {
                rawValue
            }
            hourlyBudgetMax {
                rawValue
            }
            auditTime {
                createdDateTime
            }
            filledDateTime
            legacyCiphertext
            keepOpenOnHire
            siteSource
        }
        content {
            title
            description
        }
        contractTerms {
            fixedPriceContractTerms {
                engagementDuration {
                    id
                    weeks
                    label
                }
            }
            hourlyContractTerms {
                engagementDuration {
                    id
                    weeks
                    label
                } 
            }
            contractStartDate
            contractEndDate
            contractType
        }
        ownership {
            company {
                id
                rid
                name
            }
            team {
                id
                rid
                name
            }
        }
        classification {
            category {
                id
                name
            }
            skills {
                id
                prettyName
            }
            subCategory {
                id
                name
            }
        }
        contractorSelection {
            qualification {
                contractorType
            }
        }
        visibility
    }
}
Variables
{"jobPostingId": 4}

Fields:

REST Field GraphQL Path
job_key jobPostingId
jobs.attachment_file_url response.edges.node.attachment.link
jobs.budget response.edges.node.info.hourlyBudgetMin - response.edges.node.info.hourlyBudgetMax
jobs.buyer_company__name response.edges.node.ownership.company.name
jobs.buyer_company__reference response.edges.node.ownership.company.rid or response.edges.node.ownership.company.id
jobs.buyer_team__name response.edges.node.ownership.team.name
jobs.buyer_team__reference response.edges.node.ownership.team.rid or response.edges.node.ownership.team.id
jobs.cancelled_date Missing, the upstream response doesn't contain the field
jobs.category2 response.edges.node.classification.category
jobs.created_time response.edges.node.info.auditTime.createdDateTime
jobs.description response.edges.node.content.description
jobs.duration response.edges.node.contractTerms.fixedPriceContractTerms.engagementDuration response.edges.node.contractTerms.hourlyContractTerms.engagementDuration
jobs.end_date response.edges.node.contractTerms.contractEndDate
jobs.filled_date response.edges.node.info.filledDateTime
jobs.job_type response.edges.node.contractTerms.contractType
jobs.keep_open_on_hire response.edges.node.info.keepOpenOnHire
jobs.preference_candidate_type response.edges.node.contractorSelection.qualification.contractorType
jobs.public_url Missing, but can be constructed from response.edges.node.info.legacyCiphertext
jobs.skills response.edges.node.classification.skills
jobs.start_date response.edges.node.contractTerms.contractStartDate
jobs.status response.edges.node.info.status
jobs.subcategory2 response.edges.node.classification.subCategory
jobs.title response.edges.node.content.title
jobs.visibility response.edges.node.visibility

Snapshots

GraphQL OAuth2 scopes:

Name Description
Read snapshots information Scope to read snapshots information.

Get snapshot by Contract

Gets a specific snapshot

REST
GET  /api/team/v3/snapshots/contracts/{contract_id}/{timestamp}.{format} 
GraphQL
query ($contractId: contractId, $timestamp: timestamp) {
  snapshotsByContractId(input: {contractId: $contractId, timestamp: $timestamp}) {
    id
    contractId
    time
    screenshotImageMedium
    screenshotImage
    memo
    screenshotImageThumbnail
    webcamImageThumbnail
    companyId
    keyboardEventsCount
    minutes {
      minute {
        mouse
        keyboard
        time
      }
    }
    hasWebcam
    teamName
    webcamImage
    activeWindowTitle
    hasScreenshot
    task
    mouseEventsCount
    webcamUrl
    screenshotUrl
    status
    screenshotImageLarge
  }
}
Variables
{"contractId": "123456", "timestamp": "123456"}

Fields:

REST Field GraphQL Path
uid Snapshot.id
time Snapshot.time
contractId Snapshot.contractId
mouseEventsCount Snapshot.mouseEventsCount
keyboardEventsCount Snapshot.keyboardEventsCount
teamName Snapshot.teamName
status SnapshotStatus
activeWindowTitle Snapshot.activeWindowTitle
memo Snapshot.memo
companyId Snapshot.companyId
hasScreenshot Snapshot.hasScreenshot
screenshotUrl SnapshotScreenshotUrl
screenshotImg SnapshotScreenshotImage
screenshotImgLrg SnapshotScreenshotImageLarge
screenshotImgMed SnapshotScreenshotImageMedium
screenshotImgThmb SnapshotScreenshotImageThumbnail
hasCamerashot Snapshot.hasWebcam
webcamUrl Snapshot.webcamUrl
webcamImg Snapshot.webcamImage
webcamImgThmb Snapshot.webcamImageThumbnail
task Snapshot.task
minutes.time Snapshot.minutes.time
minutes.mouse Snapshot.minutes.mouse
minutes.keyboard Snapshot.minutes.keyboard
workdiary_api Deprecated

Reports

GraphQL OAuth2 scopes:

Name Description
Common Entities - Read-Only Access Grants read-only access to common entities like Organization, User, Freelancer Profile, etc.
Read Time sheet data Allows to Read Timesheet data
Read only access for transaction data Grants read-only access to Transaction records including history information

Get billing reports for a client’s company

This call allows company owners to see what their freelancers get paid. Disallowed fields: `comment`, `po_number`. Supported filters: `date`, `week`, `month`, `year`, `date_due`, `provider_company__reference`, `provider_company__id`, `provider__reference`, `provider__id`, `assignment__reference`, `type`, `subtype`. Permissions: owner or admin.

REST
GET  /gds/finreports/v2/buyer_companies/{buyer_company_ref}/billings 
GraphQL
query TransactionHistory($aceIds_any: [ID!]!, $transactionDateTime_bt: DateTimeRange!) {
  transactionHistory(
    transactionHistoryFilter: {aceIds_any: $aceIds_any, transactionDateTime_bt: $transactionDateTime_bt}
  ) {
    transactionDetail {
      transactionHistoryRow {
        rowNumber
        runningChargeableBalance {
          rawValue
          currency
          displayValue
        }
        recordId
        remainder
        amountCreditedToUser {
          rawValue
          currency
          displayValue
        }
        transactionReviewDueDate
        transactionCreationDate
        relatedUserPaymentMethod
        accountingSubtype
        descriptionUI
        relatedAssignment
        amountSentInOrigCurrency {
          rawValue
          currency
          displayValue
        }
        paymentGuaranteed
        fixedPriceEARMark
        relatedTransactionId
        relatedInvoiceId
        fullyPaidDate
        type
        transactionAmount {
          rawValue
          currency
          displayValue
        }
        relatedAccountingEntity
        description
        purchaseOrderNumber
        assignmentAgencyName
        assignmentCompanyName
        assignmentDeveloperName
        assignmentTeamCompanyId
        assignmentTeamCompanyReference
        assignmentTeamId
        assignmentTeamReference
        assignmentTeamUserId
        assignmentTeamUserReference
        payment {
          rawValue
          currency
          displayValue
        }
        paymentStatus
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description Notes
reference recordId The reference of the accounting transaction.
date transactionCreationDate The date when the transaction was created.
date_due transactionReviewDueDate The date when the accounting transaction was committed.
assignment__reference relatedAssignment The reference ID of an assignment for which this payment was made, if available.
assignment_name N/A The name of the assignment.
accounting_entity__reference relatedAccountingEntity The reference ID of an AccountingEntity used for the accounting transaction.
accounting_entity_name assignmentCompanyName The name of the AccountingEntity.
buyer_company__reference assignmentTeamCompanyReference The reference ID of the client’s company that the client’s team belongs to.
buyer_company__id assignmentTeamCompanyId The literal ID of the client’s company.
buyer_company_name assignmentCompanyName The name of the client’s company.
buyer_team__reference assignmentTeamCompanyReference The reference ID of the client’s team that owns the assignment.
buyer_team__id assignmentTeamCompanyId The literal ID of the client’s team.
buyer_team_name assignmentCompanyName The name of the client’s team.
provider_company__reference N/A The reference ID of the freelancer’s company.
provider_company__id N/A The literal ID of the freelancer’s company.
provider_company_name N/A The name of the freelancer’s company.
provider_team__reference N/A The reference ID of the freelancer’s team that the freelancer is staffed under for the assignment.
provider_team__id N/A The literal ID of the freelancer’s team.
provider_team_name N/A The name of the freelancer’s team.
provider__reference assignmentTeamUserReference The reference ID of the freelancer who works under the assignment.
provider__id assignmentTeamUserId The literal ID of the freelancer.
provider_name assignmentDeveloperName The name of the freelancer.
type type The transaction type - Invoice, Payment, Adjustment.
subtype accountingSubtype The detailed transaction type - Hourly, Fixed Price, Bonus, Refund, Withdrawal, Payment, Adjustment, Salary, Security Deposit, Chargeback, Chargeback Resolution, Referral, Customer Satisfaction, Expense, Overtime, Milestone, Upfront Payment, Credit.
description description The description of the transaction.
comment N/A The comment given for adjustments.
memo N/A The memo for the transaction.
notes descriptionUI The added by user notes.
amount if we want it with the negative sign: amountCreditedToUser.rawValue but transactionAmount can be found in : transactionAmount.rawValue The amount of the transaction. Supports aggregation What we get from the REST API is with the sign
po_number purchaseOrderNumber The purchase order number. What we get from the REST API is with the sign

Get earning reports for a client’s company

This call allows company owners to see what they pay to their freelancers. Disallowed fields: none. Supported filters: `date`, `week`, `month`, `year`, `date_due`, `provider_company__reference`, `provider_company__id`, `provider__reference`, `provider__id`, `assignment__reference`, `type`, `subtype`, `po_number`. Permissions: owner or admin.

REST
GET  /gds/finreports/v2/buyer_companies/{buyer_company_ref}/earnings 
GraphQL
query TransactionHistory($aceIds_any: [ID!]!, $transactionDateTime_bt: DateTimeRange!) {
  transactionHistory(
    transactionHistoryFilter: {aceIds_any: $aceIds_any, transactionDateTime_bt: $transactionDateTime_bt}
  ) {
    transactionDetail {
      transactionHistoryRow {
        rowNumber
        runningChargeableBalance {
          rawValue
          currency
          displayValue
        }
        recordId
        remainder
        amountCreditedToUser {
          rawValue
          currency
          displayValue
        }
        transactionReviewDueDate
        transactionCreationDate
        relatedUserPaymentMethod
        accountingSubtype
        descriptionUI
        relatedAssignment
        amountSentInOrigCurrency {
          rawValue
          currency
          displayValue
        }
        paymentGuaranteed
        fixedPriceEARMark
        relatedTransactionId
        relatedInvoiceId
        fullyPaidDate
        type
        transactionAmount {
          rawValue
          currency
          displayValue
        }
        relatedAccountingEntity
        description
        purchaseOrderNumber
        assignmentAgencyName
        assignmentCompanyName
        assignmentDeveloperName
        assignmentTeamCompanyId
        assignmentTeamCompanyReference
        assignmentTeamId
        assignmentTeamReference
        assignmentTeamUserId
        assignmentTeamUserReference
        payment {
          rawValue
          currency
          displayValue
        }
        paymentStatus
      }
    }
  }
}

Get company-wide time reports

Time reports can be generated at company-wide level. In order to access this call the authorized user needs either hiring or finance permissions to all teams within the company

REST
GET  /gds/timereports/v1/companies/{company_id} 
GraphQL
query timeReport($orgId: ID!, $after: String, $first: Int!, $timeReportDate_bt: DateTimeRange!) {
  contractTimeReport(
    filter: {organizationId_eq: $orgId, timeReportDate_bt: $timeReportDate_bt}
    pagination: {after: $after, first: $first}
  ) {
    totalCount
    edges {
      cursor
      node {
        dateWorkedOn
        weekWorkedOn
        monthWorkedOn
        yearWorkedOn
        freelancer {
          id
          nid
          name
        }
        team {
          id
          name
        }
        contract {
          id
        }
        task
        taskDescription
        memo
        totalHoursWorked
        totalCharges
        totalOnlineHoursWorked
        totalOnlineCharge
        totalOfflineHoursWorked
        totalOfflineCharge
      }
    }
  }
}

Fields:

REST Field GraphQL Path Description Notes
worked_on dateWorkedOn The date when work was performed by the freelancer.
week_worked_on weekWorkedOn Monday’s date corresponding to the week when the worked_on occurs.
month_worked_on monthWorkedOn The month, in number, for the date in the worked_on field.
year_worked_on yearWorkedOn The year in the date that appears in the Start Date field.
provider_id freelancer.nid The ID of freelancer. endpoint returns the Nid not the Id as value
provider_name freelancer.name The freelancer’s name.
team_id team.legacyId, team.id The ID of team billed. endpoint returns the legacyId of the team
team_name team.name The name of team billed.
assignment_team_id contract.clientTeam.legacyId The ID of the hiring team in the assignment.
assignment_name contract.title The opening title of the assignment.
assignment_ref contract.id The contract ID.
agency_id contract.vendorOrganization.id The team ID of the agency.
agency_name contract.vendorOrganization.name The name of the agency.
agency_company_id contract.vendorOrganization.company.id The agency ID of rollup agency_id.
task task, taskDescription The activities which the freelancer worked on.
memo memo The memos logged by the freelancer during work.
hours totalHoursWorked The total hours worked by the freelancer during the date of worked_on. Supports aggregation
charges totalCharges The total amount charged to the client. Supports aggregation
hours_online totalOnlineHoursWorked The number of online hours in hours. Supports aggregation
charges_online totalOnlineCharge The charges of work performed online. Supports aggregation
hours_offline totalOfflineHoursWorked The number of offline hours, in hours. Supports aggregation
charges_offline totalOfflineCharge The charges of work performed offline. Supports aggregation

GraphQL OAuth2 scopes:

Name Description
TimeSheet - Read-Only Access Grants read-only access to time-sheet data

Get time reports for a team (hours only)

This call generates time report for a team without detailed monetary information (charges, etc.), only information about hours. Note that if the `provider_id` field is present in the query, the caller must be a supervisor of the freelancers. If the `provider_id` is not provided in the query, the caller must have either hiring manager or finance permission to the specified team.

REST
GET  /gds/timereports/v1/companies/{company_id}/teams/{team_id}/hours 
GraphQL
query timeReport($orgId: ID!, $after: String, $first: Int!, $timeReportDate_bt: DateTimeRange!) {
  contractTimeReport(
    filter: {organizationId_eq: $orgId, timeReportDate_bt: $timeReportDate_bt}
    pagination: {after: $after, first: $first}
  ) {
    totalCount
    edges {
      cursor
      node {
        dateWorkedOn
        weekWorkedOn
        monthWorkedOn
        yearWorkedOn
        freelancer {
          id
          nid
          name
        }
        team {
          id
          name
        }
        contract {
          id
        }
        task
        taskDescription
        memo
        totalHoursWorked
        totalCharges
        totalOnlineHoursWorked
        totalOnlineCharge
        totalOfflineHoursWorked
        totalOfflineCharge
      }
    }
  }
}


Operations

Common Information

Typical GraphQL services provide access to two types of requests: Queries and Mutations. The last can include more complicated structures in the request, like Arguments, Aliases, Fragments, Directives, and Variables. Queries are used to fetch the data, where Mutations are needed in order to modify server-side data. For more information, please follow Queries and Mutations section at graphql.org.

Error handling in GraphQL

If the Upwork server fails while processing a GraphQL request, the system sends an error array response to the client. It is important to note that errors in GraphQL are handled differently from how we might be used to in ReST. While ReST endpoints return HTTP status codes in the error response, for example, 400 - Bad Request in case of malformed syntax, GraphQL always returns a 200 - OK status code, regardless of whether the operation succeeded or failed. Consequently, understanding how to decode error responses in GraphQL is crucial to troubleshooting potential operation failures.

Decoding error responses

GraphQL error arrays list all the errors that occurred while processing the API request. Additionally, they provide important information that helps you fix the problem or guide you on what to do next. Let’s take a closer look at what’s returned.

  • Message: The error message that helps you understand if the operation succeeded or failed. For example, Validation error of type MissingFieldArgument.
  • Locations: The exact location in the API request query that results in the error. For example, the line and column parameters in the response.
  • Extensions: The type of error. For example, ValidationError.

Here is a sample code snippet of a GraphQL error response in Upwork:

          {
            "errors": [
              {
                "message": "Validation error of type MissingFieldArgument: Missing field argument stepUpVerificationId @ 'user/stepUpVerification'",
                "locations": [
                  {
                    "line": 3,
                    "column": 5
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              },
              {
                "message": "Validation error of type SubSelectionRequired: Sub selection required for type UserVerification of field stepUpVerification @ 'user/stepUpVerification'",
                "locations": [
                  {
                    "line": 3,
                    "column": 5
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              }
            ]
          }
              

As the generic status code in GraphQL is not intuitive, you must access the body of the error response to further understand the correct status of the operation.

For example, the following API query returned the status code: 200 - OK. Let's see how the message, locations, and extensions parameters in the body help you understand the status of the API call.

Exceptions in GraphQL error types

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

However, if the API operation fails at the GraphQL layer itself, the system returns the typical 5XX HTTP status codes, such as 500 - Internal Server Error if the server encounters an unexpected condition that prevents it from fulfilling the request. In these cases, you can rely on the status code to understand if the operation failed or succeeded.

Sample GraphQL API failure scenarios

When you do not have Oauth2 permissions or scopes to access the endpoint

Query request:
          {
            user {
              id
              nid
              rid
              name
              email
            }
            organization {
              id
              rid
            }
          }
                
Error response:
          {
            "errors": [
              {
                "message": "The client or authentication token doesn't have enough oauth2 permissions/scopes to access: [CurrentOrganization.id, CurrentOrganization.rid, CurrentUser.email, CurrentUser.id, CurrentUser.name, CurrentUser.nid, CurrentUser.rid, Query.organization, Query.user]."
              }
            ]
          }
                

When you do not specify any value for a required field

Query request:
          {
            user {
              companyFees(organizationId: null, input: { amount: "15" }) {
                amount
                fullAmount
                fees {
                  type
                  description
                  calculationDescription
                  rate
                  amount
                }
              }
            }
          }
                
Error response:
          {
            "errors": [
              {
                "message": "Validation error of type NullValueForNonNullArgument: null value for non-null field argument organizationId @ 'user/companyFees'",
                "locations": [
                  {
                    "line": 3,
                    "column": 5
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              },
              {
                "message": "Validation error of type WrongType: argument 'organizationId' with value 'NullValue{}' must not be null @ 'user/companyFees'",
                "locations": [
                  {
                    "line": 3,
                    "column": 17
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              }
            ]
          }
          
                

When you do not define a parameter

Query request:
          {
            user {
              stepUpVerification
            }
          }
                
Error response:
          {
            "errors": [
              {
                "message": "Validation error of type MissingFieldArgument: Missing field argument stepUpVerificationId @ 'user/stepUpVerification'",
                "locations": [
                  {
                    "line": 3,
                    "column": 5
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              },
              {
                "message": "Validation error of type SubSelectionRequired: Sub selection required for type UserVerification of field stepUpVerification @ 'user/stepUpVerification'",
                "locations": [
                  {
                    "line": 3,
                    "column": 5
                  }
                ],
                "extensions": {
                  "classification": "ValidationError"
                }
              }
            ]
          }
                

Using GraphQL through Upwork SDK

Currently, Upwork supports GraphQL SDKs in the following languages:

  • Java
  • PHP
  • Python 3
  • Node JS
  • Ruby
  • Go

SDKs return the GraphQL error responses similar to APIs and do not handle them any differently.

Queries

Proposals

clientProposal

Description

client proposal by ID

Response

Returns a ClientProposal

Arguments
Name Description
id - ID!

Example

Query
query clientProposal($id: ID!) {
  clientProposal(id: $id) {
    id
    user {
      ...GenericUserFragment
    }
    organization {
      ...GenericOrganizationFragment
    }
    job {
      ...MarketplaceJobPostingFragment
    }
    terms {
      ...ProposalTermsFragment
    }
    coverLetter
    projectPlan {
      ...ProposalProjectPlanFragment
    }
    auditDetails {
      ...ProposalAuditDetailsFragment
    }
    status {
      ...ClientProposalStatusFragment
    }
    annotations
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "clientProposal": {
      "id": "4",
      "user": GenericUser,
      "organization": GenericOrganization,
      "job": MarketplaceJobPosting,
      "terms": ProposalTerms,
      "coverLetter": "xyz789",
      "projectPlan": ProposalProjectPlan,
      "auditDetails": ProposalAuditDetails,
      "status": ClientProposalStatus,
      "annotations": ["Recommended"]
    }
  }
}

clientProposals

Description

search client proposal

Response

Returns a ClientProposalsConnection

Arguments
Name Description
jobPostingId - ID!
filter - ClientProposalFilter
sortAttribute - ClientProposalSortAttribute
pagination - Pagination

Example

Query
query clientProposals(
  $jobPostingId: ID!,
  $filter: ClientProposalFilter,
  $sortAttribute: ClientProposalSortAttribute,
  $pagination: Pagination
) {
  clientProposals(
    jobPostingId: $jobPostingId,
    filter: $filter,
    sortAttribute: $sortAttribute,
    pagination: $pagination
  ) {
    totalCount
    edges {
      ...ClientProposalsEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "jobPostingId": "4",
  "filter": ClientProposalFilter,
  "sortAttribute": ClientProposalSortAttribute,
  "pagination": Pagination
}
Response
{
  "data": {
    "clientProposals": {
      "totalCount": 987,
      "edges": [ClientProposalsEdge],
      "pageInfo": PageInfo
    }
  }
}

proposalMetadata

Description

metadata for proposals

Response

Returns a ProposalMetadata

Example

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

vendorProposal

Description

vendor proposal by ID

Response

Returns a VendorProposal

Arguments
Name Description
id - ID!

Example

Query
query vendorProposal($id: ID!) {
  vendorProposal(id: $id) {
    id
    user {
      ...GenericUserFragment
    }
    organization {
      ...GenericOrganizationFragment
    }
    marketplaceJobPosting {
      ...MarketplaceJobPostingFragment
    }
    terms {
      ...ProposalTermsFragment
    }
    coverLetter
    proposalCoverLetter
    projectPlan {
      ...ProposalProjectPlanFragment
    }
    auditDetails {
      ...ProposalAuditDetailsFragment
    }
    status {
      ...VendorProposalStatusFragment
    }
    annotations
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "vendorProposal": {
      "id": 4,
      "user": GenericUser,
      "organization": GenericOrganization,
      "marketplaceJobPosting": MarketplaceJobPosting,
      "terms": ProposalTerms,
      "coverLetter": "abc123",
      "proposalCoverLetter": "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

Response

Returns a VendorProposalsConnection!

Arguments
Name Description
filter - VendorProposalFilter!
sortAttribute - VendorProposalSortAttribute!
pagination - Pagination!

Example

Query
query vendorProposals(
  $filter: VendorProposalFilter!,
  $sortAttribute: VendorProposalSortAttribute!,
  $pagination: Pagination!
) {
  vendorProposals(
    filter: $filter,
    sortAttribute: $sortAttribute,
    pagination: $pagination
  ) {
    totalCount
    edges {
      ...VendorProposalsEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "filter": VendorProposalFilter,
  "sortAttribute": VendorProposalSortAttribute,
  "pagination": Pagination
}
Response
{
  "data": {
    "vendorProposals": {
      "totalCount": 123,
      "edges": [VendorProposalsEdge],
      "pageInfo": PageInfo
    }
  }
}
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.

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
    }
    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
    }
    workDays {
      ...WorkDayFragment
    }
    workDiaryTimeCells {
      ...WorkDiaryTimeCellFragment
    }
    feedback {
      ...FeedbackFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "contract": {
      "id": 4,
      "title": "xyz789",
      "contractType": "HOURLY",
      "job": MarketplaceJobPosting,
      "hasAgency": true,
      "offer": Offer,
      "clientProposal": ClientProposal,
      "weeklyChargeAmount": Money,
      "weeklyHoursLimit": 987.65,
      "hourlyChargeRate": Money,
      "createdDateTime": "abc123",
      "firstContractStartDateTime": "xyz789",
      "modifiedDateTime": "abc123",
      "startDateTime": "abc123",
      "endDateTime": "abc123",
      "manualTimeAllowed": false,
      "hideScreenshots": true,
      "last": true,
      "weeklyStipendHours": 987.65,
      "estimatedDuration": ProposalEngagementDuration,
      "status": "ACTIVE",
      "suspended": false,
      "freelancer": FreelancerProfile,
      "paused": false,
      "clientCompany": PublicCompanyInfo,
      "milestones": [Milestone],
      "workDays": [WorkDay],
      "workDiaryTimeCells": [WorkDiaryTimeCell],
      "feedback": Feedback
    }
  }
}

contractByTerm

Description

get contract data by term id termId - contract term id, legacy contract assignment rid. required date - date in ISO format yyyy-MM-ddThh:mm+HHmm or yyyy-MM-dd, optional

Response

Returns a ContractDetails!

Arguments
Name Description
termId - ID!
date - String

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
    }
    job {
      ...JobPostingFragment
    }
    freelancer {
      ...ContractUserFragment
    }
    vendorOrganization {
      ...GenericOrganizationFragment
    }
    vendorTeam {
      ...GenericOrganizationFragment
    }
    clientOrganization {
      ...GenericOrganizationFragment
    }
    clientTeam {
      ...GenericOrganizationFragment
    }
    hiringManager {
      ...ContractUserFragment
    }
    agencyManager {
      ...ContractUserFragment
    }
    supervisor {
      ...ContractUserFragment
    }
    changingUserType
    changedBy {
      ...ContractUserFragment
    }
    endedBy {
      ...ContractUserFragment
    }
    metadata {
      ...ContractMetadataFragment
    }
    hourlyLimits {
      ...HourlyLimitFragment
    }
    terms {
      ...ContractTermsFragment
    }
  }
}
Variables
{"termId": 4, "date": "xyz789"}
Response
{
  "data": {
    "contractByTerm": {
      "id": "4",
      "title": "xyz789",
      "status": "ACTIVE",
      "closingReason": ClosingReason,
      "deliveryModel": "TALENT_MARKETPLACE",
      "kind": "WEEKLY_RETAINER",
      "isPtc": true,
      "createDate": "xyz789",
      "modifyDate": "abc123",
      "startDate": "xyz789",
      "endDate": "abc123",
      "offer": Offer,
      "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
    }
  }
}

contractProposal

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

contractTerm

Description

get contract and single term data termId - contract term id, legacy contract assignment rid. required

Response

Returns a ContractDetails!

Arguments
Name Description
termId - ID!

Example

Query
query contractTerm($termId: ID!) {
  contractTerm(termId: $termId) {
    id
    title
    status
    closingReason {
      ...ClosingReasonFragment
    }
    deliveryModel
    kind
    isPtc
    createDate
    modifyDate
    startDate
    endDate
    offer {
      ...OfferFragment
    }
    job {
      ...JobPostingFragment
    }
    freelancer {
      ...ContractUserFragment
    }
    vendorOrganization {
      ...GenericOrganizationFragment
    }
    vendorTeam {
      ...GenericOrganizationFragment
    }
    clientOrganization {
      ...GenericOrganizationFragment
    }
    clientTeam {
      ...GenericOrganizationFragment
    }
    hiringManager {
      ...ContractUserFragment
    }
    agencyManager {
      ...ContractUserFragment
    }
    supervisor {
      ...ContractUserFragment
    }
    changingUserType
    changedBy {
      ...ContractUserFragment
    }
    endedBy {
      ...ContractUserFragment
    }
    metadata {
      ...ContractMetadataFragment
    }
    hourlyLimits {
      ...HourlyLimitFragment
    }
    terms {
      ...ContractTermsFragment
    }
  }
}
Variables
{"termId": 4}
Response
{
  "data": {
    "contractTerm": {
      "id": 4,
      "title": "xyz789",
      "status": "ACTIVE",
      "closingReason": ClosingReason,
      "deliveryModel": "TALENT_MARKETPLACE",
      "kind": "WEEKLY_RETAINER",
      "isPtc": false,
      "createDate": "abc123",
      "modifyDate": "xyz789",
      "startDate": "xyz789",
      "endDate": "xyz789",
      "offer": Offer,
      "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
    }
  }
}

customFields

Description

custom fields information

Response

Returns [CustomFields!]

Arguments
Name Description
input - CustomFieldsInput!
offset - Int
limit - Int

Example

Query
query customFields(
  $input: CustomFieldsInput!,
  $offset: Int,
  $limit: Int
) {
  customFields(
    input: $input,
    offset: $offset,
    limit: $limit
  ) {
    responseId
    id
    itemId
    typeSnap
    labelSnap
    displayValueSnap
    creator {
      ...GenericUserFragment
    }
    createdDateTime {
      ...DateTimeFragment
    }
    rollupAssignmentId
    firstContractId
    offerId
    jobPostingId
    byoInvitationId
    buyItNowId
    questionnaireResponsesId
    stale
    termSectionId
    aclSnap
  }
}
Variables
{"input": CustomFieldsInput, "offset": 123, "limit": 987}
Response
{
  "data": {
    "customFields": [
      {
        "responseId": 4,
        "id": "4",
        "itemId": "4",
        "typeSnap": "TEXT_FIELD",
        "labelSnap": "abc123",
        "displayValueSnap": "xyz789",
        "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

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
    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": "xyz789",
      "state": "DRAFT",
      "offerFeatures": OfferFeatures,
      "clientCompany": PublicCompanyInfo,
      "milestones": [Milestone],
      "createdUsingBYOFlow": false,
      "freelancer": FreelancerProfile,
      "payrollOffer": false,
      "customFields": CustomFieldsConnection
    }
  }
}

offersByAttribute

Description

Get offers by search attribute and id. filter - contains data for searching

Response

Returns an OfferList

Arguments
Name Description
filter - SearchOffersInput!

Example

Query
query offersByAttribute($filter: SearchOffersInput!) {
  offersByAttribute(filter: $filter) {
    offers {
      ...OfferFragment
    }
  }
}
Variables
{"filter": SearchOffersInput}
Response
{"data": {"offersByAttribute": {"offers": [Offer]}}}

offersByIds

Description

Get offers by ids. filter - contains data for searching

Response

Returns an OfferList

Arguments
Name Description
filter - SearchOffersByIdInput!

Example

Query
query offersByIds($filter: SearchOffersByIdInput!) {
  offersByIds(filter: $filter) {
    offers {
      ...OfferFragment
    }
  }
}
Variables
{"filter": SearchOffersByIdInput}
Response
{"data": {"offersByIds": {"offers": [Offer]}}}

vendorContracts

Description

get list of contracts associated with a specific vendor

Response

Returns a ContractSearchResults

Arguments
Name Description
filter - VendorContractSearchFilter!
options - ContractOptionsInput
paging - ContractPagingInput

Example

Query
query vendorContracts(
  $filter: VendorContractSearchFilter!,
  $options: ContractOptionsInput,
  $paging: ContractPagingInput
) {
  vendorContracts(
    filter: $filter,
    options: $options,
    paging: $paging
  ) {
    paging {
      ...ContractPagingFragment
    }
    contracts {
      ...ContractDetailsFragment
    }
  }
}
Variables
{
  "filter": VendorContractSearchFilter,
  "options": ContractOptionsInput,
  "paging": ContractPagingInput
}
Response
{
  "data": {
    "vendorContracts": {
      "paging": ContractPaging,
      "contracts": [ContractDetails]
    }
  }
}
Reporting

contractTimeReport

Response

Returns a TimeReportConnection!

Arguments
Name Description
filter - TimeReportFilter
pagination - Pagination

Example

Query
query contractTimeReport(
  $filter: TimeReportFilter,
  $pagination: Pagination
) {
  contractTimeReport(
    filter: $filter,
    pagination: $pagination
  ) {
    totalCount
    edges {
      ...TimeReportEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "filter": TimeReportFilter,
  "pagination": Pagination
}
Response
{
  "data": {
    "contractTimeReport": {
      "totalCount": 123,
      "edges": [TimeReportEdge],
      "pageInfo": PageInfo
    }
  }
}

timeReport

use contractTimeReport instead
Description

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

Response

Returns [TimeReport!]

Arguments
Name Description
filter - TimeReportFilter

Example

Query
query timeReport($filter: TimeReportFilter) {
  timeReport(filter: $filter) {
    dateWorkedOn
    weekWorkedOn
    monthWorkedOn
    yearWorkedOn
    freelancer {
      ...GenericUserFragment
    }
    team {
      ...GenericOrganizationFragment
    }
    contractOffer {
      ...ContractOfferResultFragment
    }
    contract {
      ...ContractDetailsFragment
    }
    termId
    task
    taskDescription
    memo
    totalHoursWorked
    totalCharges
    totalOnlineHoursWorked
    totalOnlineCharge
    totalOfflineHoursWorked
    totalOfflineCharge
    billRate {
      ...BillRateFragment
    }
  }
}
Variables
{"filter": TimeReportFilter}
Response
{
  "data": {
    "timeReport": [
      {
        "dateWorkedOn": "xyz789",
        "weekWorkedOn": "abc123",
        "monthWorkedOn": "xyz789",
        "yearWorkedOn": "xyz789",
        "freelancer": GenericUser,
        "team": GenericOrganization,
        "contractOffer": ContractOfferResult,
        "contract": ContractDetails,
        "termId": "4",
        "task": "xyz789",
        "taskDescription": "xyz789",
        "memo": "abc123",
        "totalHoursWorked": 987.65,
        "totalCharges": 123.45,
        "totalOnlineHoursWorked": 987.65,
        "totalOnlineCharge": 987.65,
        "totalOfflineHoursWorked": 123.45,
        "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.

Response

Returns a TransactionHistory

Arguments
Name Description
transactionHistoryFilter - TransactionHistoryFilter

Example

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

jobPosting

Response

Returns a JobPosting!

Arguments
Name Description
jobPostingId - ID!
loadAnnotation - Boolean

Example

Query
query jobPosting(
  $jobPostingId: ID!,
  $loadAnnotation: Boolean
) {
  jobPosting(
    jobPostingId: $jobPostingId,
    loadAnnotation: $loadAnnotation
  ) {
    id
    info {
      ...JobPostingInfoFragment
    }
    visibility
    ownership {
      ...JobPostingOwnershipFragment
    }
    content {
      ...JobPostingContentFragment
    }
    attachment {
      ...JobPostingAttachmentFragment
    }
    classification {
      ...JobPostingClassificationFragment
    }
    segmentationData {
      ...JobPostingSegmentationDataFragment
    }
    contractTerms {
      ...JobPostingContractTermsFragment
    }
    contractorSelection {
      ...JobPostingContractorSelectionFragment
    }
    additionalInfo {
      ...JobPostingAdditionalInfoFragment
    }
    ptcInfo {
      ...JobPostingPtcInfoFragment
    }
    proposalsStatistics {
      ...ProposalsStatisticsFragment
    }
    customFields {
      ...JobPostingCustomFieldsFragment
    }
  }
}
Variables
{"jobPostingId": 4, "loadAnnotation": true}
Response
{
  "data": {
    "jobPosting": {
      "id": "4",
      "info": JobPostingInfo,
      "visibility": "PUBLIC_INDEX",
      "ownership": JobPostingOwnership,
      "content": JobPostingContent,
      "attachment": [JobPostingAttachment],
      "classification": JobPostingClassification,
      "segmentationData": JobPostingSegmentationData,
      "contractTerms": JobPostingContractTerms,
      "contractorSelection": JobPostingContractorSelection,
      "additionalInfo": JobPostingAdditionalInfo,
      "ptcInfo": JobPostingPtcInfo,
      "proposalsStatistics": ProposalsStatistics,
      "customFields": [JobPostingCustomFields]
    }
  }
}

jobsFeaturePredictions

Description

The prediction models of a set of jobs

Response

Returns [JobFeaturePrediction!]!

Arguments
Name Description
ids - [ID!]!

Example

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

marketplaceJobPosting

Response

Returns a MarketplaceJobPosting

Arguments
Name Description
id - ID!

Example

Query
query marketplaceJobPosting($id: ID!) {
  marketplaceJobPosting(id: $id) {
    id
    workFlowState {
      ...MarketplacePostingWorkFlowStateFragment
    }
    ownership {
      ...MarketplacePostingOwnershipFragment
    }
    annotations {
      ...MarketplacePostingAnnotationsFragment
    }
    activityStat {
      ...MarketplacePostingActivityStatFragment
    }
    content {
      ...MarketplaceJobPostingContentFragment
    }
    attachments {
      ...MarketplacePostingAttachmentFragment
    }
    classification {
      ...MarketplacePostingClassificationFragment
    }
    segmentationData {
      ...MarketplaceSegmentationDataFragment
    }
    contractTerms {
      ...MarketplaceContractTermsFragment
    }
    contractorSelection {
      ...MarketplaceContractorSelectionFragment
    }
    additionalSearchInfo {
      ...MarketplaceAdditionalSearchInfoFragment
    }
    clientCompany {
      ...PrivateCompanyInfoFragment
    }
    clientCompanyPublic {
      ...MarketplacePublicCompanyInfoFragment
    }
    canClientReceiveContractProposal
    clientProposals {
      ...ClientProposalsConnectionFragment
    }
    customFields {
      ...CustomFieldsConnectionFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "marketplaceJobPosting": {
      "id": 4,
      "workFlowState": MarketplacePostingWorkFlowState,
      "ownership": MarketplacePostingOwnership,
      "annotations": MarketplacePostingAnnotations,
      "activityStat": MarketplacePostingActivityStat,
      "content": MarketplaceJobPostingContent,
      "attachments": [MarketplacePostingAttachment],
      "classification": MarketplacePostingClassification,
      "segmentationData": MarketplaceSegmentationData,
      "contractTerms": MarketplaceContractTerms,
      "contractorSelection": MarketplaceContractorSelection,
      "additionalSearchInfo": MarketplaceAdditionalSearchInfo,
      "clientCompany": PrivateCompanyInfo,
      "clientCompanyPublic": MarketplacePublicCompanyInfo,
      "canClientReceiveContractProposal": true,
      "clientProposals": ClientProposalsConnection,
      "customFields": CustomFieldsConnection
    }
  }
}

marketplaceJobPostings

Arguments
Name Description
marketPlaceJobFilter - MarketplaceJobFilter
searchType - MarketplaceJobPostingSearchType
sortAttributes - [MarketplaceJobPostingSearchSortAttribute]

Example

Query
query marketplaceJobPostings(
  $marketPlaceJobFilter: MarketplaceJobFilter,
  $searchType: MarketplaceJobPostingSearchType,
  $sortAttributes: [MarketplaceJobPostingSearchSortAttribute]
) {
  marketplaceJobPostings(
    marketPlaceJobFilter: $marketPlaceJobFilter,
    searchType: $searchType,
    sortAttributes: $sortAttributes
  ) {
    totalCount
    edges {
      ...MarketplaceJobpostingSearchEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "marketPlaceJobFilter": MarketplaceJobFilter,
  "searchType": "USER_JOBS_SEARCH",
  "sortAttributes": [
    MarketplaceJobPostingSearchSortAttribute
  ]
}
Response
{
  "data": {
    "marketplaceJobPostings": {
      "totalCount": 123,
      "edges": [MarketplaceJobpostingSearchEdge],
      "pageInfo": PageInfo
    }
  }
}

marketplaceJobPostingsContents

Arguments
Name Description
ids - [ID!]!

Example

Query
query marketplaceJobPostingsContents($ids: [ID!]!) {
  marketplaceJobPostingsContents(ids: $ids) {
    id
    ciphertext
    title
    description
    publishedDateTime
    annotations {
      ...MarketplacePostingAnnotationsFragment
    }
  }
}
Variables
{"ids": ["4"]}
Response
{
  "data": {
    "marketplaceJobPostingsContents": [
      {
        "id": "4",
        "ciphertext": "xyz789",
        "title": "abc123",
        "description": "abc123",
        "publishedDateTime": "xyz789",
        "annotations": MarketplacePostingAnnotations
      }
    ]
  }
}
Users and teams

accountAuditRecord

Description

Audit information of the account management action

Response

Returns an AccountAuditRecord

Arguments
Name Description
processInstanceId - ID!

Example

Query
query accountAuditRecord($processInstanceId: ID!) {
  accountAuditRecord(processInstanceId: $processInstanceId) {
    processInstanceId
    status
    metadata {
      ...StringMapElementFragment
    }
  }
}
Variables
{"processInstanceId": 4}
Response
{
  "data": {
    "accountAuditRecord": {
      "processInstanceId": 4,
      "status": "xyz789",
      "metadata": [StringMapElement]
    }
  }
}

company

Response

Returns a CompanyInfo

Arguments
Name Description
id - ID!

Example

Query
query company($id: ID!) {
  company(id: $id) {
    public {
      ...PublicCompanyInfoFragment
    }
    private {
      ...PrivateCompanyInfoFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "company": {
      "public": PublicCompanyInfo,
      "private": PrivateCompanyInfo
    }
  }
}

companySelector

Description

Company selector provides information on companies that user can select

Response

Returns a CompanySelector!

Example

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

freelancerProfileByProfileKey

Description

Retrieve freelancer profile by the freelancer profile key(ciphertext)

Response

Returns a FreelancerProfile!

Arguments
Name Description
profileKey - String!

Example

Query
query freelancerProfileByProfileKey($profileKey: String!) {
  freelancerProfileByProfileKey(profileKey: $profileKey) {
    user {
      ...CurrentUserFragment
    }
    personalData {
      ...FreelancerProfilePersonalDataFragment
    }
    userPreferences {
      ...FreelancerProfileUserPreferencesFragment
    }
    otherExperiences {
      ...FreelancerProfileOtherExperiencesConnectionFragment
    }
    languages {
      ...FreelancerProfileLanguagesConnectionFragment
    }
    certificates {
      ...FreelancerProfileCertificateFragment
    }
    employmentRecords {
      ...FreelancerProfileEmploymentRecordFragment
    }
    availability {
      ...FreelancerProfileAvailabilityFragment
    }
    committedResponseTime {
      ...FreelancerProfileCommittedResponseTimeFragment
    }
    project {
      ...FreelancerProfileProjectFragment
    }
    skills {
      ...FreelancerSkillsConnectionFragment
    }
    aggregates {
      ...FreelancerProfileAggregatesFragment
    }
    contract {
      ...FreelancerProfileContractFragment
    }
    contracts {
      ...FreelancerProfileContractsConnectionFragment
    }
    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,
      "personalData": FreelancerProfilePersonalData,
      "userPreferences": FreelancerProfileUserPreferences,
      "otherExperiences": FreelancerProfileOtherExperiencesConnection,
      "languages": FreelancerProfileLanguagesConnection,
      "certificates": [FreelancerProfileCertificate],
      "employmentRecords": [
        FreelancerProfileEmploymentRecord
      ],
      "availability": FreelancerProfileAvailability,
      "committedResponseTime": FreelancerProfileCommittedResponseTime,
      "project": FreelancerProfileProject,
      "skills": FreelancerSkillsConnection,
      "aggregates": FreelancerProfileAggregates,
      "contract": FreelancerProfileContract,
      "contracts": FreelancerProfileContractsConnection,
      "jobCategories": FreelancerProfileJobCategoriesConnection,
      "profileCompletenessSummary": FreelancerProfileCompletenessSummary,
      "linkedExternalAccountsList": FreelancerProfileLinkedExternalAccountsConnection,
      "verifications": FreelancerProfileVerifications,
      "fullName": "xyz789",
      "firstName": "abc123",
      "lastName": "abc123",
      "countryDetails": Country,
      "email": "xyz789",
      "portrait": Portrait,
      "phoneNumber": PhoneNumber,
      "privateTalentCloud": PrivateTalentCloudConnection
    }
  }
}

freelancerStats

Response

Returns a FreelancerStats

Arguments
Name Description
id - ID!

Example

Query
query freelancerStats($id: ID!) {
  freelancerStats(id: $id) {
    mainCategory90
    applicationsSent90
    applicationFitZscore90
    applicationHiddenZscore90
    viewRateZscore90
    interviewRateZscore90
    hireRateZscore90
    medianCtgPreHireApps365
    totalInvitations90
    respondedInvitations90
    invitationsRespondedIn1Day90
    totalHires
    recommendRate
    feedback360
    policyViolations360
    allSourcesAvailable
    nss100Bw
    longTermClients
    hideReasonsTop3
    profileDiscoveries {
      ...ProfileDiscoveriesFragment
    }
    topRatedStatus
    policyViolations90Limited
    nss100BwUpdatedDate
    notAvailableSources
    earnings365NoPending
    weeksEligibleWithin16wks
    topRatedPlusStatus
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "freelancerStats": {
      "mainCategory90": "xyz789",
      "applicationsSent90": 123,
      "applicationFitZscore90": 987,
      "applicationHiddenZscore90": 123,
      "viewRateZscore90": 987,
      "interviewRateZscore90": 987,
      "hireRateZscore90": 123,
      "medianCtgPreHireApps365": 987,
      "totalInvitations90": 987,
      "respondedInvitations90": 123,
      "invitationsRespondedIn1Day90": 987,
      "totalHires": 123,
      "recommendRate": "xyz789",
      "feedback360": "abc123",
      "policyViolations360": 987,
      "allSourcesAvailable": true,
      "nss100Bw": "xyz789",
      "longTermClients": 987,
      "hideReasonsTop3": ["xyz789"],
      "profileDiscoveries": ProfileDiscoveries,
      "topRatedStatus": "abc123",
      "policyViolations90Limited": 123,
      "nss100BwUpdatedDate": "xyz789",
      "notAvailableSources": ["xyz789"],
      "earnings365NoPending": 987,
      "weeksEligibleWithin16wks": 123,
      "topRatedPlusStatus": "abc123"
    }
  }
}

freelancerVisibility

Description

Get the visibility status of a given freelancer profile

Response

Returns a FreelancerVisibility

Arguments
Name Description
id - ID

Example

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

organization

Description

Current organization

Response

Returns a CurrentOrganization

Example

Query
query organization {
  organization {
    id
    rid
    legacyId
    name
    type
    legacyType
    flag {
      ...OrganizationFlagFragment
    }
    parentOrganization {
      ...CurrentOrganizationFragment
    }
    active
    hidden
    childOrganizations {
      ...CurrentOrganizationFragment
    }
    childOrganization {
      ...CurrentOrganizationFragment
    }
    company {
      ...PrivateCompanyInfoFragment
    }
    photoUrl
    creationDate
    staffs {
      ...StaffsConnectionFragment
    }
    permissions {
      ...UserPermissionsFragment
    }
    agencyOffers {
      ...ContractOfferConnectionFragment
    }
    clientOffers {
      ...ContractOfferConnectionFragment
    }
    clientTimeReport {
      ...TimeReportFragment
    }
    clientContractTimeReport {
      ...TimeReportConnectionFragment
    }
    agencyTimeReport {
      ...TimeReportFragment
    }
    agencyContractTimeReport {
      ...TimeReportConnectionFragment
    }
    privateTalentClouds {
      ...PrivateTalentCloudFragment
    }
    jobPosting {
      ...JobPostingConnectionFragment
    }
  }
}
Response
{
  "data": {
    "organization": {
      "id": "4",
      "rid": "4",
      "legacyId": "4",
      "name": "abc123",
      "type": "BUSINESS",
      "legacyType": "CLIENT",
      "flag": OrganizationFlag,
      "parentOrganization": CurrentOrganization,
      "active": true,
      "hidden": true,
      "childOrganizations": [CurrentOrganization],
      "childOrganization": CurrentOrganization,
      "company": PrivateCompanyInfo,
      "photoUrl": "abc123",
      "creationDate": "abc123",
      "staffs": StaffsConnection,
      "permissions": UserPermissions,
      "agencyOffers": ContractOfferConnection,
      "clientOffers": ContractOfferConnection,
      "clientTimeReport": [TimeReport],
      "clientContractTimeReport": TimeReportConnection,
      "agencyTimeReport": [TimeReport],
      "agencyContractTimeReport": TimeReportConnection,
      "privateTalentClouds": [PrivateTalentCloud],
      "jobPosting": JobPostingConnection
    }
  }
}

user

Description

Current user

Response

Returns a CurrentUser

Example

Query
query user {
  user {
    id
    nid
    rid
    email
    name
    permissions {
      ...UserPermissionsFragment
    }
    photoUrl
    offer {
      ...ContractOfferConnectionFragment
    }
    timeReport {
      ...TimeReportFragment
    }
    contractTimeReport {
      ...TimeReportConnectionFragment
    }
    freelancerProfile {
      ...FreelancerProfileFragment
    }
    ciphertext
    i18NSettings {
      ...I18nSettingsFragment
    }
    talentProfile {
      ...TalentProfileFragment
    }
  }
}
Response
{
  "data": {
    "user": {
      "id": 4,
      "nid": "4",
      "rid": "4",
      "email": "xyz789",
      "name": "xyz789",
      "permissions": UserPermissions,
      "photoUrl": "xyz789",
      "offer": ContractOfferConnection,
      "timeReport": [TimeReport],
      "contractTimeReport": TimeReportConnection,
      "freelancerProfile": FreelancerProfile,
      "ciphertext": "abc123",
      "i18NSettings": I18nSettings,
      "talentProfile": TalentProfile
    }
  }
}

userDetails

Description

Retrieves the user details based on their unique identifier. This query allows fetching detailed user information based on their ID. @param id: The unique identifier of the user. @returns PiiUser: The personal identifiable information (PII) of the user.

Response

Returns a PiiUser!

Arguments
Name Description
id - ID!

Example

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

userIdsByEmail

Description

List of users by email

Response

Returns a UserIdsByEmailResponse

Arguments
Name Description
email - String!

Example

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

ontologyAttributeGroupsForOccupation

Description

Returns the attribute groups associated to the occupation with the given uid. Per each attribute group it includes a maximum of 6 skills nodes corresponding to the narrower ones with highest priority. It also returns the node corresponding to the broader occupations. This is because attribute groups are inherited so clients may want to know if the given attribute group belongs to a broader occupation.

In resume, this endpoint returns a response formed by:

1) The occupation corresponding to the uid passed as parameter.

2) The broader occupations of the given occupation and their broader, and the broader of the broader and so on until no more. These occupations are in a map, with the uid of each as key.

3) The attribute groups required by the occupation and the broader occupations.Per attribute group, a maximum of 6 nodes, with the highest priority, among the narrower nodes of the attribute group. All these required skills are in a map, with the uid of each as a key.

Deprecated elements are not returned and neither the "paths" in which they are included. For example, a skill not deprecated is not returned if the attribute group it belongs is deprecated.

If metadataContext parameter is provided then relevant metadata is loaded and applied: attributes and attribute groups with visibility=false are filtered out from results, priorities are overwritten with the ones in metadata. @param occupationUid identifier of the occupation @param metadataContext context of the metadata to load. If not provided no metadata is loaded or applied. @param metadataCategoryUid UID of the category for metadata path. If not provided then primary category is used. @param metadataSubCategoryUid uid of the subcategory for metadata path. If not provided then primary subcategory is used. @return occupation with the uid passed as parameter, broader occupations and skills required by the occupation

Response

Returns an OccupationAttrGroupsResponse!

Arguments
Name Description
filter - OccupationAttrGroupFilter

Example

Query
query ontologyAttributeGroupsForOccupation($filter: OccupationAttrGroupFilter) {
  ontologyAttributeGroupsForOccupation(filter: $filter) {
    occupation {
      ...OccupationFragment
    }
    broaderOccupations {
      ...BroaderOccupationMapFragment
    }
    attributeGroups {
      ...SkillFragment
    }
    attributes {
      ...AttributeSkillsMapFragment
    }
  }
}
Variables
{"filter": OccupationAttrGroupFilter}
Response
{
  "data": {
    "ontologyAttributeGroupsForOccupation": {
      "occupation": Occupation,
      "broaderOccupations": [BroaderOccupationMap],
      "attributeGroups": [Skill],
      "attributes": [AttributeSkillsMap]
    }
  }
}

ontologyBrowserSkills

Description

Return: list of browser skills paginated with limit and offset

Response

Returns [Skill!]!

Arguments
Name Description
limit - Int!
offset - Int

Example

Query
query ontologyBrowserSkills(
  $limit: Int!,
  $offset: Int
) {
  ontologyBrowserSkills(
    limit: $limit,
    offset: $offset
  ) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    createdDateTime
    modifiedDateTime
    definition
    altLabel
    narrower
    narrowerIds
    broader
    broaderIds
    dependsOn
    dependsOnIds
    splitInto
    splitIntoIds
    mergedInto
    mergedIntoId
    replacedBy
    replacedById
    scopeNote
    externalLink
    exactMatch
    exactMatchIds
    closeMatch
    closeMatchIds
    comment
    attributeLevel
    allowMultipleClient
    allowMultipleFreelancer
    allowOther
    clientQuestion
    clientTip
    freelancerQuestion
    freelancerTip
    advancedClient
    client
    freelancer
    requiredClient
    requiredFreelancer
    otherClientLabel
    otherFreelancerLabel
    presentationMode
    priority
    isRequiredBy
    isRequiredByIds
    legacySkillNid
    prettyName
    legacySkillId
  }
}
Variables
{"limit": 987, "offset": 987}
Response
{
  "data": {
    "ontologyBrowserSkills": [
      {
        "id": 4,
        "ontologyId": "xyz789",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "xyz789",
        "createdDateTime": "xyz789",
        "modifiedDateTime": "xyz789",
        "definition": "abc123",
        "altLabel": ["abc123"],
        "narrower": ["abc123"],
        "narrowerIds": ["4"],
        "broader": ["xyz789"],
        "broaderIds": [4],
        "dependsOn": ["abc123"],
        "dependsOnIds": [4],
        "splitInto": ["abc123"],
        "splitIntoIds": [4],
        "mergedInto": "xyz789",
        "mergedIntoId": 4,
        "replacedBy": "abc123",
        "replacedById": "4",
        "scopeNote": "abc123",
        "externalLink": ["abc123"],
        "exactMatch": ["xyz789"],
        "exactMatchIds": [4],
        "closeMatch": ["xyz789"],
        "closeMatchIds": [4],
        "comment": "xyz789",
        "attributeLevel": ["abc123"],
        "allowMultipleClient": true,
        "allowMultipleFreelancer": false,
        "allowOther": true,
        "clientQuestion": "xyz789",
        "clientTip": "abc123",
        "freelancerQuestion": "xyz789",
        "freelancerTip": "abc123",
        "advancedClient": true,
        "client": true,
        "freelancer": false,
        "requiredClient": true,
        "requiredFreelancer": false,
        "otherClientLabel": "abc123",
        "otherFreelancerLabel": "xyz789",
        "presentationMode": "xyz789",
        "priority": 987,
        "isRequiredBy": ["xyz789"],
        "isRequiredByIds": ["4"],
        "legacySkillNid": "xyz789",
        "prettyName": "abc123",
        "legacySkillId": 4
      }
    ]
  }
}

ontologyCategories

Description

fetch all enabled categories/subcategories/services

Response

Returns [OntologyCategory!]!

Example

Query
query ontologyCategories {
  ontologyCategories {
    id
    preferredLabel
    altLabel
    slug
    ontologyId
    subcategories {
      ...OntologySubcategoryFragment
    }
    services {
      ...OntologyServiceFragment
    }
  }
}
Response
{
  "data": {
    "ontologyCategories": [
      {
        "id": 4,
        "preferredLabel": "xyz789",
        "altLabel": ["abc123"],
        "slug": "xyz789",
        "ontologyId": "abc123",
        "subcategories": [OntologySubcategory],
        "services": [OntologyService]
      }
    ]
  }
}

ontologyCategorySubcategory

Description

Return: list of category-subcategory pairs occupations for the occupation with the uid sent in the parameter

Response

Returns [CategorySubcategory!]!

Arguments
Name Description
id - ID!

Example

Query
query ontologyCategorySubcategory($id: ID!) {
  ontologyCategorySubcategory(id: $id) {
    category {
      ...OccupationFragment
    }
    subcategory {
      ...OccupationFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "ontologyCategorySubcategory": [
      {
        "category": Occupation,
        "subcategory": Occupation
      }
    ]
  }
}

ontologyDeliverables

Description

Return: ontology elements of type Deliverables filtered by limit, offset and includeDeprecated

Response

Returns [Deliverable!]

Arguments
Name Description
filter - OntologyDeliverablesFilter!

Example

Query
query ontologyDeliverables($filter: OntologyDeliverablesFilter!) {
  ontologyDeliverables(filter: $filter) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
  }
}
Variables
{"filter": OntologyDeliverablesFilter}
Response
{
  "data": {
    "ontologyDeliverables": [
      {
        "id": 4,
        "ontologyId": "abc123",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "xyz789",
        "definition": "abc123",
        "createdDateTime": "abc123",
        "modifiedDateTime": "xyz789"
      }
    ]
  }
}

ontologyElementCategories

Description

Get the list of categories (L1 occupations) that include the provided element in downstream hierarchy

Response

Returns [Occupation!]!

Arguments
Name Description
elementId - ID!

Example

Query
query ontologyElementCategories($elementId: ID!) {
  ontologyElementCategories(elementId: $elementId) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
    skills {
      ...SkillFragment
    }
  }
}
Variables
{"elementId": 4}
Response
{
  "data": {
    "ontologyElementCategories": [
      {
        "id": 4,
        "ontologyId": "xyz789",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "xyz789",
        "definition": "xyz789",
        "createdDateTime": "abc123",
        "modifiedDateTime": "xyz789",
        "skills": [Skill]
      }
    ]
  }
}

ontologyElementsGraphSearchByIds

Description

Allows search of elements by ids in graph

Return: elements that have provided in id ontology Id, or legacy Uids

Response

Returns [OntologyGraphNode!]!

Arguments
Name Description
ids - [ID!]!
metadataContext - String
metadataFilter - [String!]

Example

Query
query ontologyElementsGraphSearchByIds(
  $ids: [ID!]!,
  $metadataContext: String,
  $metadataFilter: [String!]
) {
  ontologyElementsGraphSearchByIds(
    ids: $ids,
    metadataContext: $metadataContext,
    metadataFilter: $metadataFilter
  ) {
    id
    uid
    label
    types
    status
    properties {
      ...PropertyStringMapFragment
    }
    relationships {
      ...StringListMapFragment
    }
    metadata {
      ...StringMapElementFragment
    }
  }
}
Variables
{
  "ids": ["4"],
  "metadataContext": "xyz789",
  "metadataFilter": ["abc123"]
}
Response
{
  "data": {
    "ontologyElementsGraphSearchByIds": [
      {
        "id": "4",
        "uid": 4,
        "label": "abc123",
        "types": ["abc123"],
        "status": "ACTIVE",
        "properties": [PropertyStringMap],
        "relationships": [StringListMap],
        "metadata": [StringMapElement]
      }
    ]
  }
}

ontologyElementsGraphSearchByPrefLabel

Description

Allows search of elements by prefLabel in graph

Return: elements that have provided string in prefLabel, at start, end or in the middle; case insensitive

Response

Returns [OntologyGraphNode!]!

Arguments
Name Description
filter - OntologyElementsSearchByPrefLabelFilter

Example

Query
query ontologyElementsGraphSearchByPrefLabel($filter: OntologyElementsSearchByPrefLabelFilter) {
  ontologyElementsGraphSearchByPrefLabel(filter: $filter) {
    id
    uid
    label
    types
    status
    properties {
      ...PropertyStringMapFragment
    }
    relationships {
      ...StringListMapFragment
    }
    metadata {
      ...StringMapElementFragment
    }
  }
}
Variables
{"filter": OntologyElementsSearchByPrefLabelFilter}
Response
{
  "data": {
    "ontologyElementsGraphSearchByPrefLabel": [
      {
        "id": "4",
        "uid": 4,
        "label": "abc123",
        "types": ["abc123"],
        "status": "ACTIVE",
        "properties": [PropertyStringMap],
        "relationships": [StringListMap],
        "metadata": [StringMapElement]
      }
    ]
  }
}

ontologyElementsSearchByPrefLabel

Description

Allows search of elements by prefLabel

Return: elements that have provided string in prefLabel, at start, end or in the middle; case insensitive

Response

Returns [OntologyEntity!]!

Arguments
Name Description
filter - OntologyElementsSearchByPrefLabelFilter

Example

Query
query ontologyElementsSearchByPrefLabel($filter: OntologyElementsSearchByPrefLabelFilter) {
  ontologyElementsSearchByPrefLabel(filter: $filter) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
  }
}
Variables
{"filter": OntologyElementsSearchByPrefLabelFilter}
Response
{
  "data": {
    "ontologyElementsSearchByPrefLabel": [
      {
        "id": "4",
        "ontologyId": "abc123",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "abc123",
        "definition": "abc123",
        "createdDateTime": "abc123",
        "modifiedDateTime": "abc123"
      }
    ]
  }
}

ontologyEntities

Description

lookup entities by ids

Response

Returns [OntologyEntityResult!]!

Arguments
Name Description
ids - [String!]!

Example

Query
query ontologyEntities($ids: [String!]!) {
  ontologyEntities(ids: $ids) {
    ... on Skill {
      ...SkillFragment
    }
    ... on Occupation {
      ...OccupationFragment
    }
  }
}
Variables
{"ids": ["abc123"]}
Response
{"data": {"ontologyEntities": [Skill]}}

ontologyEntitiesFiltered

Description

lookup entities by pref label and status, currently this field supports only taxonomyLevel=SERVICE E.g supported filtering : ontologyEntityFilter:{preferredLabel_any:"javascript", taxonomyLevel: SERVICE, limit: 5}

Response

Returns an OntologyConnection

Arguments
Name Description
ontologyEntityFilter - OntologyEntityFilter
pagination - Pagination

Example

Query
query ontologyEntitiesFiltered(
  $ontologyEntityFilter: OntologyEntityFilter,
  $pagination: Pagination
) {
  ontologyEntitiesFiltered(
    ontologyEntityFilter: $ontologyEntityFilter,
    pagination: $pagination
  ) {
    totalCount
    edges {
      ...OntologyEntityEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "ontologyEntityFilter": OntologyEntityFilter,
  "pagination": Pagination
}
Response
{
  "data": {
    "ontologyEntitiesFiltered": {
      "totalCount": 987,
      "edges": [OntologyEntityEdge],
      "pageInfo": PageInfo
    }
  }
}

ontologyEntity

Description

fetch entity by id

Response

Returns an OntologyEntityResult

Arguments
Name Description
id - ID!

Example

Query
query ontologyEntity($id: ID!) {
  ontologyEntity(id: $id) {
    ... on Skill {
      ...SkillFragment
    }
    ... on Occupation {
      ...OccupationFragment
    }
  }
}
Variables
{"id": 4}
Response
{"data": {"ontologyEntity": Skill}}

ontologyEntitySearchRecords

Description

search ontology entities by ontoloyIds ontologyId is consistent accross all environments as opposed to UID which is unique per environment example: upwork:AndroidGameDevelopmentEngines

Arguments
Name Description
filter - OntologyEntitySearchFilter!

Example

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

ontologyOccupationCategorySubcategoryGraph

Description

Return a list of graph category-subcategory pairs occupations for the occupation with the uid sent in the parameter

Response

Returns [OntologyRelatedNodes]

Arguments
Name Description
id - ID

Example

Query
query ontologyOccupationCategorySubcategoryGraph($id: ID) {
  ontologyOccupationCategorySubcategoryGraph(id: $id) {
    source {
      ...OntologyGraphNodeFragment
    }
    target {
      ...OntologyGraphNodeFragment
    }
    relationProperties {
      ...PropertyStringMapFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "ontologyOccupationCategorySubcategoryGraph": [
      {
        "source": OntologyGraphNode,
        "target": OntologyGraphNode,
        "relationProperties": [PropertyStringMap]
      }
    ]
  }
}

ontologyOccupations

Description

Returns ontology elements of type Occupation

Response

Returns [Occupation!]!

Arguments
Name Description
filter - OntologyOccupationFilter!

Example

Query
query ontologyOccupations($filter: OntologyOccupationFilter!) {
  ontologyOccupations(filter: $filter) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
    skills {
      ...SkillFragment
    }
  }
}
Variables
{"filter": OntologyOccupationFilter}
Response
{
  "data": {
    "ontologyOccupations": [
      {
        "id": "4",
        "ontologyId": "abc123",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "xyz789",
        "definition": "xyz789",
        "createdDateTime": "xyz789",
        "modifiedDateTime": "xyz789",
        "skills": [Skill]
      }
    ]
  }
}

ontologyOccupationsCategoriesServices

Description

Searches occupations categories services by list of category Uids

Return: list of categories and a map of every category and related services

Response

Returns a CategoryServicesResponse

Arguments
Name Description
categoryUids - [ID!]

Example

Query
query ontologyOccupationsCategoriesServices($categoryUids: [ID!]) {
  ontologyOccupationsCategoriesServices(categoryUids: $categoryUids) {
    categories {
      ...OccupationFragment
    }
    categoryServices {
      ...StringMapOccupationFragment
    }
  }
}
Variables
{"categoryUids": [4]}
Response
{
  "data": {
    "ontologyOccupationsCategoriesServices": {
      "categories": [Occupation],
      "categoryServices": [StringMapOccupation]
    }
  }
}

ontologyOccupationsCategoriesServicesGraph

Description

Return a list of graph category services occupations for the occupation list with the uids sent in the parameter

Response

Returns [OntologyGraphNode!]

Arguments
Name Description
categoryIds - [ID!]!

Example

Query
query ontologyOccupationsCategoriesServicesGraph($categoryIds: [ID!]!) {
  ontologyOccupationsCategoriesServicesGraph(categoryIds: $categoryIds) {
    id
    uid
    label
    types
    status
    properties {
      ...PropertyStringMapFragment
    }
    relationships {
      ...StringListMapFragment
    }
    metadata {
      ...StringMapElementFragment
    }
  }
}
Variables
{"categoryIds": ["4"]}
Response
{
  "data": {
    "ontologyOccupationsCategoriesServicesGraph": [
      {
        "id": 4,
        "uid": "4",
        "label": "xyz789",
        "types": ["abc123"],
        "status": "ACTIVE",
        "properties": [PropertyStringMap],
        "relationships": [StringListMap],
        "metadata": [StringMapElement]
      }
    ]
  }
}

ontologyOccupationsCategoriesSubcategoriesGraph

Description

Return a list of graph category subcategories occupations

Response

Returns [OntologyGraphNode!]!

Example

Query
query ontologyOccupationsCategoriesSubcategoriesGraph {
  ontologyOccupationsCategoriesSubcategoriesGraph {
    id
    uid
    label
    types
    status
    properties {
      ...PropertyStringMapFragment
    }
    relationships {
      ...StringListMapFragment
    }
    metadata {
      ...StringMapElementFragment
    }
  }
}
Response
{
  "data": {
    "ontologyOccupationsCategoriesSubcategoriesGraph": [
      {
        "id": 4,
        "uid": "4",
        "label": "abc123",
        "types": ["xyz789"],
        "status": "ACTIVE",
        "properties": [PropertyStringMap],
        "relationships": [StringListMap],
        "metadata": [StringMapElement]
      }
    ]
  }
}

ontologyOccupationServices

Description

Return: list of services for a specific occupation

Response

Returns [Occupation!]!

Arguments
Name Description
id - ID!

Example

Query
query ontologyOccupationServices($id: ID!) {
  ontologyOccupationServices(id: $id) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
    skills {
      ...SkillFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "ontologyOccupationServices": [
      {
        "id": "4",
        "ontologyId": "xyz789",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "abc123",
        "definition": "abc123",
        "createdDateTime": "abc123",
        "modifiedDateTime": "xyz789",
        "skills": [Skill]
      }
    ]
  }
}

ontologyOccupationSkillsCount

Description

Return: number of active attributes with type Skill available in the occupation

Response

Returns an Int!

Arguments
Name Description
id - ID!

Example

Query
query ontologyOccupationSkillsCount($id: ID!) {
  ontologyOccupationSkillsCount(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"ontologyOccupationSkillsCount": 123}}

ontologyPublishedServices

Description

Return: services available for creating specialized profiles. Since all active services are published already

Response

Returns [Occupation!]!

Arguments
Name Description
limit - Int!
offset - Int

Example

Query
query ontologyPublishedServices(
  $limit: Int!,
  $offset: Int
) {
  ontologyPublishedServices(
    limit: $limit,
    offset: $offset
  ) {
    id
    ontologyId
    type
    entityStatus
    preferredLabel
    definition
    createdDateTime
    modifiedDateTime
    skills {
      ...SkillFragment
    }
  }
}
Variables
{"limit": 987, "offset": 123}
Response
{
  "data": {
    "ontologyPublishedServices": [
      {
        "id": "4",
        "ontologyId": "xyz789",
        "type": ["OCCUPATION"],
        "entityStatus": "ACTIVE",
        "preferredLabel": "abc123",
        "definition": "abc123",
        "createdDateTime": "abc123",
        "modifiedDateTime": "xyz789",
        "skills": [Skill]
      }
    ]
  }
}

ontologySkillNamesByServiceUid

Description

Allows search of skill names by service uid

Return: skill uid and skill pref label

Response

Returns [SkillName!]!

Arguments
Name Description
uid - ID

Example

Query
query ontologySkillNamesByServiceUid($uid: ID) {
  ontologySkillNamesByServiceUid(uid: $uid) {
    id
    preferredLabel
  }
}
Variables
{"uid": "4"}
Response
{
  "data": {
    "ontologySkillNamesByServiceUid": [
      {
        "id": "4",
        "preferredLabel": "abc123"
      }
    ]
  }
}

ontologySkills

Description

Return: list of skills paginated with limit and offset

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

ontologySkillsByAttributeGroup

Description

Return: list of element/skills pair by attribute group

Response

Returns [ElementSkillMap!]!

Arguments
Name Description
filter - AttrGroupFilter!

Example

Query
query ontologySkillsByAttributeGroup($filter: AttrGroupFilter!) {
  ontologySkillsByAttributeGroup(filter: $filter) {
    element
    skill {
      ...SkillFragment
    }
  }
}
Variables
{"filter": AttrGroupFilter}
Response
{
  "data": {
    "ontologySkillsByAttributeGroup": [
      {
        "element": "abc123",
        "skill": Skill
      }
    ]
  }
}

ontologySkillsRecords

Description

fetch all enabled skills

Response

Returns [OntologySkill!]!

Arguments
Name Description
filter - OntologySkillsFilter
pagination - Pagination

Example

Query
query ontologySkillsRecords(
  $filter: OntologySkillsFilter,
  $pagination: Pagination
) {
  ontologySkillsRecords(
    filter: $filter,
    pagination: $pagination
  ) {
    id
    preferredLabel
    ontologyId
  }
}
Variables
{
  "filter": OntologySkillsFilter,
  "pagination": Pagination
}
Response
{
  "data": {
    "ontologySkillsRecords": [
      {
        "id": 4,
        "preferredLabel": "abc123",
        "ontologyId": "xyz789"
      }
    ]
  }
}

ontologyVisitorCategories

Description

fetch all enabled visitor categories/subcategories/services

Response

Returns [OntologyCategory!]!

Example

Query
query ontologyVisitorCategories {
  ontologyVisitorCategories {
    id
    preferredLabel
    altLabel
    slug
    ontologyId
    subcategories {
      ...OntologySubcategoryFragment
    }
    services {
      ...OntologyServiceFragment
    }
  }
}
Response
{
  "data": {
    "ontologyVisitorCategories": [
      {
        "id": "4",
        "preferredLabel": "xyz789",
        "altLabel": ["abc123"],
        "slug": "xyz789",
        "ontologyId": "abc123",
        "subcategories": [OntologySubcategory],
        "services": [OntologyService]
      }
    ]
  }
}

freelancerProfileSearchRecords

Arguments
Name Description
searchFilter - FreelancerProfileSearchFilter!
pagination - Pagination!

Example

Query
query freelancerProfileSearchRecords(
  $searchFilter: FreelancerProfileSearchFilter!,
  $pagination: Pagination!
) {
  freelancerProfileSearchRecords(
    searchFilter: $searchFilter,
    pagination: $pagination
  ) {
    edges {
      ...FreelancerProfilesSearchResultEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
    totalCount
  }
}
Variables
{
  "searchFilter": FreelancerProfileSearchFilter,
  "pagination": Pagination
}
Response
{
  "data": {
    "freelancerProfileSearchRecords": {
      "edges": [FreelancerProfilesSearchResultEdge],
      "pageInfo": PageInfo,
      "totalCount": 987
    }
  }
}
Metadata

countries

Description

List of countries. Currently no filtering is available

Response

Returns [Country!]!

Example

Query
query countries {
  countries {
    id
    name
    twoLetterAbbreviation
    threeLetterAbbreviation
    region
    phoneCode
    relatedRegion {
      ...RegionFragment
    }
    relatedSubRegion {
      ...RegionFragment
    }
    active
    registrationAllowed
  }
}
Response
{
  "data": {
    "countries": [
      {
        "id": "4",
        "name": "xyz789",
        "twoLetterAbbreviation": "abc123",
        "threeLetterAbbreviation": "xyz789",
        "region": "EU",
        "phoneCode": "xyz789",
        "relatedRegion": Region,
        "relatedSubRegion": Region,
        "active": true,
        "registrationAllowed": false
      }
    ]
  }
}

languages

Response

Returns [Language!]!

Example

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

reasons

Description

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

Response

Returns [ReasonsMetadata!]!

Arguments
Name Description
reasonType - ReasonType!
all - Boolean

Example

Query
query reasons(
  $reasonType: ReasonType!,
  $all: Boolean
) {
  reasons(
    reasonType: $reasonType,
    all: $all
  ) {
    id
    reason
    alias
  }
}
Variables
{"reasonType": "PROPOSAL_DECLINE", "all": true}
Response
{
  "data": {
    "reasons": [
      {
        "id": 4,
        "reason": "xyz789",
        "alias": "xyz789"
      }
    ]
  }
}

regions

Response

Returns [Region!]

Example

Query
query regions {
  regions {
    id
    name
    parentRegion {
      ...RegionFragment
    }
  }
}
Response
{
  "data": {
    "regions": [
      {
        "id": 4,
        "name": "xyz789",
        "parentRegion": Region
      }
    ]
  }
}

requestMetadata

Description

Information about request - whether it is an internal requests, in sudo mode, etc

Response

Returns a RequestMetadata!

Example

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

timeZones

Description

List of all availabe time zones

Response

Returns [TimeZoneRecord!]!

Example

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

visitor

Response

Returns a Visitor

Example

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

accountingEntity

Description

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

Response

Returns an AccountingEntity!

Example

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

backofficeOffer

Description

Offer by ID is taken from modernized offersContractsQuery service

Response

Returns a ModernizedOffer

Arguments
Name Description
id - ID!

Example

Query
query backofficeOffer($id: ID!) {
  backofficeOffer(id: $id) {
    id
    kind
    offeror
    clientUserId
    clientTeamId
    clientOrgId
    vendorUserId
    vendorTeamId
    vendorOrgId
    actors {
      ...ActorFragment
    }
    metadata {
      ...MetadataFragment
    }
    expirationDateTime
    title
    description
    attachments
    contractStartDateTime
    contractEndDateTime
    hourlyRateTerms {
      ...HourlyTermsFragment
    }
    stipendTerms {
      ...StipendTermsFragment
    }
    milestoneTerms {
      ...MilestoneTermsFragment
    }
    deliveryModel
    state
    staffingManagerId
    contractId
    agencyRootCompanyId
    instanceId
    client {
      ...GenericOrganizationFragment
    }
    clientCompany {
      ...PublicCompanyInfoFragment
    }
    createdDateTime
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "backofficeOffer": {
      "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": "xyz789",
      "attachments": [4],
      "contractStartDateTime": "xyz789",
      "contractEndDateTime": "abc123",
      "hourlyRateTerms": HourlyTerms,
      "stipendTerms": StipendTerms,
      "milestoneTerms": MilestoneTerms,
      "deliveryModel": "TalentMarketplace",
      "state": "Submitted",
      "staffingManagerId": "4",
      "contractId": "4",
      "agencyRootCompanyId": "4",
      "instanceId": "4",
      "client": GenericOrganization,
      "clientCompany": PublicCompanyInfo,
      "createdDateTime": "xyz789"
    }
  }
}

contractRoom

Description

Returns the interview room associated with the given contractId

Response

Returns a Room

Arguments
Name Description
contractId - ID!

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

offerRoom

Description

Returns room associated with the given offerId

Response

Returns a Room

Arguments
Name Description
offerId - ID!

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
    }
    vendorProposal {
      ...VendorProposalFragment
    }
    roomNote
    roomNotePresent
    offerIds
    recruiters {
      ...GenericUserFragment
    }
    latestStory {
      ...RoomStoryFragment
    }
    story {
      ...RoomStoryFragment
    }
    stories {
      ...RoomStoryConnectionFragment
    }
    latestStoryPreRendered {
      ...RoomStoryFragment
    }
  }
}
Variables
{"offerId": "4"}
Response
{
  "data": {
    "offerRoom": {
      "id": "4",
      "roomName": "xyz789",
      "organization": CurrentOrganization,
      "creator": RoomUser,
      "createdAtDateTime": "xyz789",
      "public": true,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "xyz789",
      "favorite": false,
      "numUnreadMentions": 987,
      "roomUsers": [RoomUser],
      "numUsers": 987,
      "joinDateTime": "abc123",
      "lastVisitedDateTime": "abc123",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": false,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": false,
      "muted": false,
      "contractId": "4",
      "contract": Contract,
      "vendorProposal": VendorProposal,
      "roomNote": "xyz789",
      "roomNotePresent": false,
      "offerIds": [4],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

offersByAttributes

Description

Get modernized offers by search for multiple attributes ids. filter - contains data for searching

Response

Returns a ModernizedContractOfferList

Arguments
Name Description
filter - SearchOffersByAttributesInput!

Example

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

oneOnOneRoom

Description

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

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

proposalRoom

Description

Returns room associated with a vendor proposal

Response

Returns a Room!

Arguments
Name Description
vendorProposalId - ID!

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

publicRooms

Description

Get public rooms inside an organization

Response

Returns a RoomConnection!

Arguments
Name Description
pagination - Pagination

Example

Query
query publicRooms($pagination: Pagination) {
  publicRooms(pagination: $pagination) {
    totalCount
    edges {
      ...RoomEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{"pagination": Pagination}
Response
{
  "data": {
    "publicRooms": {
      "totalCount": 123,
      "edges": [RoomEdge],
      "pageInfo": PageInfo
    }
  }
}

room

Description

Details of a room

Response

Returns a Room!

Arguments
Name Description
id - ID!

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
    }
    vendorProposal {
      ...VendorProposalFragment
    }
    roomNote
    roomNotePresent
    offerIds
    recruiters {
      ...GenericUserFragment
    }
    latestStory {
      ...RoomStoryFragment
    }
    story {
      ...RoomStoryFragment
    }
    stories {
      ...RoomStoryConnectionFragment
    }
    latestStoryPreRendered {
      ...RoomStoryFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "room": {
      "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": 987,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "xyz789",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "abc123",
      "readOnly": false,
      "blockDateTime": "abc123",
      "blockedBy": RoomUser,
      "hidden": false,
      "muted": true,
      "contractId": "4",
      "contract": Contract,
      "vendorProposal": VendorProposal,
      "roomNote": "xyz789",
      "roomNotePresent": false,
      "offerIds": [4],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

roomList

Description

List of rooms based on the given filter condition

Response

Returns a RoomConnection!

Arguments
Name Description
filter - RoomFilter
pagination - Pagination
sortOrder - SortOrder

Example

Query
query roomList(
  $filter: RoomFilter,
  $pagination: Pagination,
  $sortOrder: SortOrder
) {
  roomList(
    filter: $filter,
    pagination: $pagination,
    sortOrder: $sortOrder
  ) {
    totalCount
    edges {
      ...RoomEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "filter": RoomFilter,
  "pagination": Pagination,
  "sortOrder": "ASC"
}
Response
{
  "data": {
    "roomList": {
      "totalCount": 987,
      "edges": [RoomEdge],
      "pageInfo": PageInfo
    }
  }
}

roomStories

Description

Returns stories in the room

Response

Returns a RoomStoryConnection

Arguments
Name Description
filter - RoomStoryFilter

Example

Query
query roomStories($filter: RoomStoryFilter) {
  roomStories(filter: $filter) {
    totalCount
    edges {
      ...RoomStoryEdgeFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{"filter": RoomStoryFilter}
Response
{
  "data": {
    "roomStories": {
      "totalCount": 987,
      "edges": [RoomStoryEdge],
      "pageInfo": PageInfo
    }
  }
}

roomStory

Description

Returns a particular story from a room

Response

Returns a RoomStory

Arguments
Name Description
roomId - ID!
storyId - ID!

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
    }
  }
}
Variables
{"roomId": 4, "storyId": 4}
Response
{
  "data": {
    "roomStory": {
      "id": "4",
      "room": Room,
      "createdDateTime": "abc123",
      "updatedDateTime": "abc123",
      "user": GenericUser,
      "message": "xyz789",
      "organization": GenericOrganization,
      "roomStoryNote": RoomStoryNote
    }
  }
}

snapshotsByContractId

Description

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

Response

Returns [Snapshot]

Arguments
Name Description
input - SnapshotsByContractIdInput!

Example

Query
query snapshotsByContractId($input: SnapshotsByContractIdInput!) {
  snapshotsByContractId(input: $input) {
    id
    time
    contractId
    mouseEventsCount
    keyboardEventsCount
    teamName
    status
    activeWindowTitle
    memo
    companyId
    hasScreenshot
    screenshotUrl
    screenshotImage
    screenshotImageLarge
    screenshotImageMedium
    screenshotImageThumbnail
    hasWebcam
    webcamUrl
    webcamImage
    webcamImageThumbnail
    task
    minutes {
      ...SnapshotMinutesFragment
    }
  }
}
Variables
{"input": SnapshotsByContractIdInput}
Response
{
  "data": {
    "snapshotsByContractId": [
      {
        "id": "4",
        "time": 987,
        "contractId": "abc123",
        "mouseEventsCount": 123,
        "keyboardEventsCount": 123,
        "teamName": "abc123",
        "status": "xyz789",
        "activeWindowTitle": "xyz789",
        "memo": "abc123",
        "companyId": "xyz789",
        "hasScreenshot": true,
        "screenshotUrl": "xyz789",
        "screenshotImage": "abc123",
        "screenshotImageLarge": "xyz789",
        "screenshotImageMedium": "abc123",
        "screenshotImageThumbnail": "xyz789",
        "hasWebcam": true,
        "webcamUrl": "abc123",
        "webcamImage": "xyz789",
        "webcamImageThumbnail": "abc123",
        "task": "xyz789",
        "minutes": SnapshotMinutes
      }
    ]
  }
}

talentCloudTasks

Description

list of task overviews for specified talent clouds

Response

Returns [TalentCloudTask]

Arguments
Name Description
filter - TalentCloudTasksInputFilter!

Example

Query
query talentCloudTasks($filter: TalentCloudTasksInputFilter!) {
  talentCloudTasks(filter: $filter) {
    talentCloud {
      ...PrivateTalentCloudFragment
    }
    taskSections {
      ...TalentCloudTaskSectionFragment
    }
  }
}
Variables
{"filter": TalentCloudTasksInputFilter}
Response
{
  "data": {
    "talentCloudTasks": [
      {
        "talentCloud": PrivateTalentCloud,
        "taskSections": [TalentCloudTaskSection]
      }
    ]
  }
}

talentProfileByProfileKey

Description

Primary profile by profile key

Response

Returns a TalentProfile

Arguments
Name Description
profileKey - String!

Example

Query
query talentProfileByProfileKey($profileKey: String!) {
  talentProfileByProfileKey(profileKey: $profileKey) {
    personId
    identity {
      ...TalentProfileIdentityFragment
    }
    personalData {
      ...TalentProfilePersonalDataFragment
    }
    preferences {
      ...TalentProfileUserPreferencesFragment
    }
    settings {
      ...TalentProfileSettingsFragment
    }
    personAvailability {
      ...TalentPersonAvailabilityFragment
    }
    projectList {
      ...TalentProjectListFragment
    }
    communityCertificates {
      ...TalentProfileCommunityCertificateFragment
    }
    profileCompleteness {
      ...TalentProfileCompletenessSummaryFragment
    }
    otherExperiences {
      ...TalentProfileOtherExperienceFragment
    }
    educationRecords {
      ...TalentEducationRecordFragment
    }
    employmentRecords {
      ...TalentProfileEmploymentRecordFragment
    }
    skills {
      ...TalentProfilePersonSkillFragment
    }
    jobCategories {
      ...TalentJobCategoryGroupFragment
    }
    profileAggregates {
      ...TalentProfileAggregateFragment
    }
    specializedProfiles {
      ...TalentSpecializedProfileFragment
    }
    specializedProfilesSkills {
      ...TalentSpecializedProfileSkillFragment
    }
    specializedProfilesProjects {
      ...TalentSpecializedProfilesProjectFragment
    }
  }
}
Variables
{"profileKey": "xyz789"}
Response
{
  "data": {
    "talentProfileByProfileKey": {
      "personId": 4,
      "identity": TalentProfileIdentity,
      "personalData": TalentProfilePersonalData,
      "preferences": TalentProfileUserPreferences,
      "settings": TalentProfileSettings,
      "personAvailability": TalentPersonAvailability,
      "projectList": TalentProjectList,
      "communityCertificates": [
        TalentProfileCommunityCertificate
      ],
      "profileCompleteness": TalentProfileCompletenessSummary,
      "otherExperiences": [TalentProfileOtherExperience],
      "educationRecords": [TalentEducationRecord],
      "employmentRecords": [
        TalentProfileEmploymentRecord
      ],
      "skills": [TalentProfilePersonSkill],
      "jobCategories": [TalentJobCategoryGroup],
      "profileAggregates": TalentProfileAggregate,
      "specializedProfiles": [TalentSpecializedProfile],
      "specializedProfilesSkills": [
        TalentSpecializedProfileSkill
      ],
      "specializedProfilesProjects": [
        TalentSpecializedProfilesProject
      ]
    }
  }
}

teamActivities

Description

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

Response

Returns an ActivitiesConnection!

Arguments
Name Description
orgId - ID!
teamId - ID
page - PageFilterInput
filter - ActivityFilterInput

Example

Query
query teamActivities(
  $orgId: ID!,
  $teamId: ID,
  $page: PageFilterInput,
  $filter: ActivityFilterInput
) {
  teamActivities(
    orgId: $orgId,
    teamId: $teamId,
    page: $page,
    filter: $filter
  ) {
    totalCount
    edges {
      ...ActivityEdgeFragment
    }
    page {
      ...PageFragment
    }
  }
}
Variables
{
  "orgId": "4",
  "teamId": "4",
  "page": PageFilterInput,
  "filter": ActivityFilterInput
}
Response
{
  "data": {
    "teamActivities": {
      "totalCount": 987,
      "edges": [ActivityEdge],
      "page": Page
    }
  }
}

workDays

Description

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

Response

Returns a WorkdayResult

Arguments
Name Description
workdaysInput - WorkdaysInput!

Example

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

workDiaryCellActivities

Description

user activities for a particular timecell. timecells are in (Unix Epoch seconds)

Arguments
Name Description
contractId - ID!
timestamp - Int!

Example

Query
query workDiaryCellActivities(
  $contractId: ID!,
  $timestamp: Int!
) {
  workDiaryCellActivities(
    contractId: $contractId,
    timestamp: $timestamp
  ) {
    activities {
      ...WorkDiaryCellActivityByMinuteFragment
    }
  }
}
Variables
{"contractId": "4", "timestamp": 987}
Response
{
  "data": {
    "workDiaryCellActivities": {
      "activities": [WorkDiaryCellActivityByMinute]
    }
  }
}

workDiaryCompany

Description

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

Response

Returns a WorkDiaryCompany

Arguments
Name Description
workDiaryCompanyInput - WorkDiaryCompanyInput!

Example

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

workDiaryContract

Description

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

Response

Returns a WorkDiaryContract

Arguments
Name Description
workDiaryContractInput - WorkDiaryContractInput!

Example

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

workflowView

Description

Workflow encapsulates the detailed sequence of tasks or business activities needed to complete a business process. Following query allows retreival of workflow associated with a particular entityType and entityId.

Response

Returns a WorkflowView

Arguments
Name Description
entityType - String!
entityId - ID!

Example

Query
query workflowView(
  $entityType: String!,
  $entityId: ID!
) {
  workflowView(
    entityType: $entityType,
    entityId: $entityId
  ) {
    id
    type
    onboardedStatus
    totalTasks
    notStartedTasksCount
    inProgressTasksCount
    completedTasksCount
    tasksOverdue
    percentComplete
    startDateTime
    completionDateTime
    associations {
      ...WorkflowAssociationViewFragment
    }
    tasks {
      ...WorkflowTaskViewFragment
    }
    createdDateTime
    modifiedDateTime
    createdBy
    modifiedBy
  }
}
Variables
{"entityType": "abc123", "entityId": 4}
Response
{
  "data": {
    "workflowView": {
      "id": 4,
      "type": "xyz789",
      "onboardedStatus": "NOT_STARTED",
      "totalTasks": 987,
      "notStartedTasksCount": 123,
      "inProgressTasksCount": 987,
      "completedTasksCount": 123,
      "tasksOverdue": 987,
      "percentComplete": 123,
      "startDateTime": "xyz789",
      "completionDateTime": "abc123",
      "associations": [WorkflowAssociationView],
      "tasks": [WorkflowTaskView],
      "createdDateTime": "xyz789",
      "modifiedDateTime": "xyz789",
      "createdBy": "abc123",
      "modifiedBy": "abc123"
    }
  }
}

Mutations

Proposals

confirmFiles

Description

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

Response

Returns a Boolean

Arguments
Name Description
fileIds - [ID!]!
skipMissing - Boolean Default = true

Example

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

createDirectUploadLinkForJAClientProposal

Response

Returns a FileInfo!

Arguments
Name Description
input - CreateDirectUploadLinkInput!

Example

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

declineClientProposal

Description

decline client proposal

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalDeclineRequest - ClientProposalDeclineRequest

Example

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

hideClientProposal

Description

toggle hide status on the client proposal.

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalHideRequest - ClientProposalHideRequest!

Example

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

markClientProposalAsRead

Description

mark client proposal as read

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalReadRequest - ClientProposalReadRequest

Example

Query
mutation markClientProposalAsRead($clientProposalReadRequest: ClientProposalReadRequest) {
  markClientProposalAsRead(clientProposalReadRequest: $clientProposalReadRequest) {
    proposal {
      ...ClientProposalFragment
    }
    status
  }
}
Variables
{"clientProposalReadRequest": ClientProposalReadRequest}
Response
{
  "data": {
    "markClientProposalAsRead": {
      "proposal": ClientProposal,
      "status": "SUCCESS"
    }
  }
}

messageClientProposal

Description

message client proposal

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalMessageRequest - ClientProposalMessageRequest

Example

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

shortlistClientProposal

Description

shortlist client proposal

Response

Returns an UpdateClientProposalResult!

Arguments
Name Description
clientProposalShortlistRequest - ClientProposalShortlistRequest

Example

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

activateMilestone

Description

Client activates an existing milestone

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

approveMilestone

Description

Approves a milestone

Response

Returns a Milestone!

Arguments
Name Description
input - ApproveMilestoneInput!

Example

Query
mutation approveMilestone($input: ApproveMilestoneInput!) {
  approveMilestone(input: $input) {
    id
    createdBy {
      ...GenericUserFragment
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      ...MoneyFragment
    }
    depositAmount {
      ...MoneyFragment
    }
    fundedAmount {
      ...MoneyFragment
    }
    paid {
      ...MoneyFragment
    }
    overpayment {
      ...MoneyFragment
    }
    bonus {
      ...MoneyFragment
    }
    previousMilestoneUnusedDeposit {
      ...MoneyFragment
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      ...SubmissionEventFragment
    }
  }
}
Variables
{"input": ApproveMilestoneInput}
Response
{
  "data": {
    "approveMilestone": {
      "id": 4,
      "createdBy": GenericUser,
      "dueDateTime": "abc123",
      "state": "NotFunded",
      "description": "xyz789",
      "currentEscrowAmount": Money,
      "depositAmount": Money,
      "fundedAmount": Money,
      "paid": Money,
      "overpayment": Money,
      "bonus": Money,
      "previousMilestoneUnusedDeposit": Money,
      "submissionCount": 123,
      "sequenceId": 123,
      "payComments": "abc123",
      "lastSubmissionCreatedTime": "abc123",
      "createdDateTime": "abc123",
      "modifiedDateTime": "xyz789",
      "instructions": "xyz789",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

createMilestone

Description

Client creates a new milestone

Response

Returns a Milestone

Arguments
Name Description
input - CreateMilestoneInput!

Example

Query
mutation createMilestone($input: CreateMilestoneInput!) {
  createMilestone(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": {
    "createMilestone": {
      "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": "xyz789",
      "createdDateTime": "abc123",
      "modifiedDateTime": "xyz789",
      "instructions": "xyz789",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

deleteMilestone

Description

Client deletes and existing milestone

Response

Returns a Boolean!

Arguments
Name Description
input - DeleteMilestoneInput

Example

Query
mutation deleteMilestone($input: DeleteMilestoneInput) {
  deleteMilestone(input: $input)
}
Variables
{"input": DeleteMilestoneInput}
Response
{"data": {"deleteMilestone": false}}

editMilestone

Description

Client edits an existing milestone

Response

Returns a Milestone!

Arguments
Name Description
input - EditMilestoneInput

Example

Query
mutation editMilestone($input: EditMilestoneInput) {
  editMilestone(input: $input) {
    id
    createdBy {
      ...GenericUserFragment
    }
    dueDateTime
    state
    description
    currentEscrowAmount {
      ...MoneyFragment
    }
    depositAmount {
      ...MoneyFragment
    }
    fundedAmount {
      ...MoneyFragment
    }
    paid {
      ...MoneyFragment
    }
    overpayment {
      ...MoneyFragment
    }
    bonus {
      ...MoneyFragment
    }
    previousMilestoneUnusedDeposit {
      ...MoneyFragment
    }
    submissionCount
    sequenceId
    payComments
    lastSubmissionCreatedTime
    createdDateTime
    modifiedDateTime
    instructions
    submissionEvents {
      ...SubmissionEventFragment
    }
  }
}
Variables
{"input": EditMilestoneInput}
Response
{
  "data": {
    "editMilestone": {
      "id": 4,
      "createdBy": GenericUser,
      "dueDateTime": "xyz789",
      "state": "NotFunded",
      "description": "abc123",
      "currentEscrowAmount": Money,
      "depositAmount": Money,
      "fundedAmount": Money,
      "paid": Money,
      "overpayment": Money,
      "bonus": Money,
      "previousMilestoneUnusedDeposit": Money,
      "submissionCount": 123,
      "sequenceId": 987,
      "payComments": "xyz789",
      "lastSubmissionCreatedTime": "xyz789",
      "createdDateTime": "abc123",
      "modifiedDateTime": "abc123",
      "instructions": "xyz789",
      "submissionEvents": [SubmissionEvent]
    }
  }
}

rejectSubmittedMilestone

Description

Allows client to reject a milestone submission from a freelancer

Response

Returns a MilestoneRejectionResponse

Arguments
Name Description
input - RejectMilestoneSubmissionInput

Example

Query
mutation rejectSubmittedMilestone($input: RejectMilestoneSubmissionInput) {
  rejectSubmittedMilestone(input: $input) {
    response
  }
}
Variables
{"input": RejectMilestoneSubmissionInput}
Response
{"data": {"rejectSubmittedMilestone": {"response": true}}}
Job Posts

createJobPosting

Description

Creates a new Job post. Required OrganizationId will be derived at fetcher side

Response

Returns a JobPostingCreateResponse

Arguments
Name Description
jobPostingRequest - JobPostingCreateRequest!

Example

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

setJobPostingPremium

Response

Returns a SetJobPostingPremiumResponse!

Arguments
Name Description
id - ID!
freeFeatured - Boolean Default = false
browserInfo - BrowserInfo
ccRequestId - String

Example

Query
mutation setJobPostingPremium(
  $id: ID!,
  $freeFeatured: Boolean,
  $browserInfo: BrowserInfo,
  $ccRequestId: String
) {
  setJobPostingPremium(
    id: $id,
    freeFeatured: $freeFeatured,
    browserInfo: $browserInfo,
    ccRequestId: $ccRequestId
  ) {
    id
    ccRequestId
  }
}
Variables
{
  "id": "4",
  "freeFeatured": false,
  "browserInfo": BrowserInfo,
  "ccRequestId": "abc123"
}
Response
{
  "data": {
    "setJobPostingPremium": {
      "id": "4",
      "ccRequestId": "abc123"
    }
  }
}

updateJobPosting

Description

Updates an existing Job post. Required OrganizationId will be derived at fetcher side

Response

Returns a JobPostingUpdateResponse

Arguments
Name Description
id - ID!
jobPostingRequest - JobPostingUpdateRequest!

Example

Query
mutation updateJobPosting(
  $id: ID!,
  $jobPostingRequest: JobPostingUpdateRequest!
) {
  updateJobPosting(
    id: $id,
    jobPostingRequest: $jobPostingRequest
  ) {
    id
    qualificationsSaved
    skillsSaved
    questionsSaved
    segmentationDataSaved
    attachmentsSaved
    ptcInfoSaved
    sandsJobPostSaved
  }
}
Variables
{
  "id": "4",
  "jobPostingRequest": JobPostingUpdateRequest
}
Response
{
  "data": {
    "updateJobPosting": {
      "id": 4,
      "qualificationsSaved": false,
      "skillsSaved": true,
      "questionsSaved": true,
      "segmentationDataSaved": true,
      "attachmentsSaved": true,
      "ptcInfoSaved": true,
      "sandsJobPostSaved": false
    }
  }
}
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.

Arguments
Name Description
input - CreateEmploymentRecordInput!

Example

Query
mutation addFreelancerEmploymentRecord($input: CreateEmploymentRecordInput!) {
  addFreelancerEmploymentRecord(input: $input) {
    id
    user {
      ...GenericUserFragment
    }
    companyName
    jobTitle
    standardizedCompanyId
    standardizedJobTitleId
    role
    startDate
    endDate
    description
    city
    country
  }
}
Variables
{"input": CreateEmploymentRecordInput}
Response
{
  "data": {
    "addFreelancerEmploymentRecord": {
      "id": "4",
      "user": GenericUser,
      "companyName": "xyz789",
      "jobTitle": "xyz789",
      "standardizedCompanyId": "xyz789",
      "standardizedJobTitleId": "abc123",
      "role": "xyz789",
      "startDate": "abc123",
      "endDate": "abc123",
      "description": "abc123",
      "city": "xyz789",
      "country": "xyz789"
    }
  }
}

addFreelancerLanguage

Description

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

Response

Returns a FreelancerProfileLanguage

Arguments
Name Description
input - FreelancerLanguageInput!

Example

Query
mutation addFreelancerLanguage($input: FreelancerLanguageInput!) {
  addFreelancerLanguage(input: $input) {
    id
    language {
      ...LanguageFragment
    }
    verified
    verifiedByCertificate
    verifiedByFeedback
  }
}
Variables
{"input": FreelancerLanguageInput}
Response
{
  "data": {
    "addFreelancerLanguage": {
      "id": "4",
      "language": Language,
      "verified": true,
      "verifiedByCertificate": false,
      "verifiedByFeedback": true
    }
  }
}

addFreelancerOtherExperience

Description

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

Arguments
Name Description
input - OtherExperienceInput!

Example

Query
mutation addFreelancerOtherExperience($input: OtherExperienceInput!) {
  addFreelancerOtherExperience(input: $input) {
    id
    user {
      ...GenericUserFragment
    }
    subject
    description
    active
    createdDateTime
    updatedDateTime
  }
}
Variables
{"input": OtherExperienceInput}
Response
{
  "data": {
    "addFreelancerOtherExperience": {
      "id": 4,
      "user": GenericUser,
      "subject": "xyz789",
      "description": "abc123",
      "active": false,
      "createdDateTime": "xyz789",
      "updatedDateTime": "abc123"
    }
  }
}

createOrganization

Description

Create a new child organization

Response

Returns an AccountProcessInstance!

Arguments
Name Description
input - CreateOrganizationInput!

Example

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

inviteToTeam

Description

Invite someone by email or username to an existing team ...

Response

Returns an InviteToTeamResponse!

Arguments
Name Description
invitations - [InvitationToTeamInput!]!

Example

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

removeFreelancerEmploymentRecord

Description

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

Response

Returns a Boolean

Arguments
Name Description
id - ID!
userId - ID!

Example

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

removeFreelancerLanguage

Description

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

Response

Returns a Boolean

Arguments
Name Description
userId - ID!
iso639Code - String!

Example

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

removeFreelancerOtherExperience

Description

Remove FL experience for the current user

Response

Returns a Boolean

Arguments
Name Description
id - ID!

Example

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

updateFreelancerAvailability

Description

update freelancer's availability given its id and userId

Response

Returns a FreelancerProfileAvailability

Arguments
Name Description
input - FreelancerProfileAvailabilityInput!

Example

Query
mutation updateFreelancerAvailability($input: FreelancerProfileAvailabilityInput!) {
  updateFreelancerAvailability(input: $input) {
    id
    user {
      ...GenericUserFragment
    }
    capacity
    availabilityDateTime
    name
    createdDateTime
  }
}
Variables
{"input": FreelancerProfileAvailabilityInput}
Response
{
  "data": {
    "updateFreelancerAvailability": {
      "id": "4",
      "user": GenericUser,
      "capacity": "fullTime",
      "availabilityDateTime": "abc123",
      "name": "abc123",
      "createdDateTime": "abc123"
    }
  }
}

updateFreelancerEmploymentRecord

Description

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

Arguments
Name Description
input - UpdateEmploymentRecordInput!

Example

Query
mutation updateFreelancerEmploymentRecord($input: UpdateEmploymentRecordInput!) {
  updateFreelancerEmploymentRecord(input: $input) {
    id
    user {
      ...GenericUserFragment
    }
    companyName
    jobTitle
    standardizedCompanyId
    standardizedJobTitleId
    role
    startDate
    endDate
    description
    city
    country
  }
}
Variables
{"input": UpdateEmploymentRecordInput}
Response
{
  "data": {
    "updateFreelancerEmploymentRecord": {
      "id": "4",
      "user": GenericUser,
      "companyName": "xyz789",
      "jobTitle": "abc123",
      "standardizedCompanyId": "xyz789",
      "standardizedJobTitleId": "xyz789",
      "role": "xyz789",
      "startDate": "abc123",
      "endDate": "xyz789",
      "description": "abc123",
      "city": "abc123",
      "country": "xyz789"
    }
  }
}

updateFreelancerOtherExperience

Description

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

Arguments
Name Description
input - UpdateOtherExperienceInput!

Example

Query
mutation updateFreelancerOtherExperience($input: UpdateOtherExperienceInput!) {
  updateFreelancerOtherExperience(input: $input) {
    id
    user {
      ...GenericUserFragment
    }
    subject
    description
    active
    createdDateTime
    updatedDateTime
  }
}
Variables
{"input": UpdateOtherExperienceInput}
Response
{
  "data": {
    "updateFreelancerOtherExperience": {
      "id": "4",
      "user": GenericUser,
      "subject": "abc123",
      "description": "xyz789",
      "active": false,
      "createdDateTime": "xyz789",
      "updatedDateTime": "xyz789"
    }
  }
}

updateOrganization

Description

Update organization data

Response

Returns an AccountProcessInstance!

Arguments
Name Description
input - UpdateOrganizationInput!

Example

Query
mutation updateOrganization($input: UpdateOrganizationInput!) {
  updateOrganization(input: $input) {
    id
    success
  }
}
Variables
{"input": UpdateOrganizationInput}
Response
{
  "data": {
    "updateOrganization": {
      "id": "4",
      "success": true
    }
  }
}
Other

addTeamActivity

Description

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

Response

Returns a ProcessAddResponse

Arguments
Name Description
orgId - ID!
teamId - ID
request - AddTeamActivityRequest!

Example

Query
mutation addTeamActivity(
  $orgId: ID!,
  $teamId: ID,
  $request: AddTeamActivityRequest!
) {
  addTeamActivity(
    orgId: $orgId,
    teamId: $teamId,
    request: $request
  ) {
    id
    success
  }
}
Variables
{
  "orgId": 4,
  "teamId": "4",
  "request": AddTeamActivityRequest
}
Response
{"data": {"addTeamActivity": {"id": 4, "success": false}}}

addUserToRoom

Description

Add users to the room

Response

Returns a Boolean!

Arguments
Name Description
roomId - ID!
roomUsers - [RoomUserInput!]!

Example

Query
mutation addUserToRoom(
  $roomId: ID!,
  $roomUsers: [RoomUserInput!]!
) {
  addUserToRoom(
    roomId: $roomId,
    roomUsers: $roomUsers
  )
}
Variables
{
  "roomId": "4",
  "roomUsers": [RoomUserInput]
}
Response
{"data": {"addUserToRoom": true}}

archiveRoom

Description

Archive an existing room

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

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID!
teamId - ID
codes - [String!]!

Example

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

assignTeamActivityToTheContract

Description

Assign and unassign contract to the list of activities A user needs to have hiring manager privileges within the team in order to create an activity at team level Activity appears in freelancer's team client only if his contract is assigned to the activity and activities are activated for the ongoing contract. This mutation overrides assigned contracts for the given activities. For example, if you pass empty list of codes, freelancer's contract is unassigned from all the activities it is assigned to

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID!
teamId - ID
contractId - ID!
codes - [String]!

Example

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

createOffer

Description

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

Response

Returns an OfferCreationResponse

Arguments
Name Description
offerInput - CreationOfferInput!

Example

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

createRoomStoryV2

Description

Creates new story in an existing dash room

Response

Returns a RoomStory!

Arguments
Name Description
input - RoomStoryCreateInputV2!

Example

Query
mutation createRoomStoryV2($input: RoomStoryCreateInputV2!) {
  createRoomStoryV2(input: $input) {
    id
    room {
      ...RoomFragment
    }
    createdDateTime
    updatedDateTime
    user {
      ...GenericUserFragment
    }
    message
    organization {
      ...GenericOrganizationFragment
    }
    roomStoryNote {
      ...RoomStoryNoteFragment
    }
  }
}
Variables
{"input": RoomStoryCreateInputV2}
Response
{
  "data": {
    "createRoomStoryV2": {
      "id": "4",
      "room": Room,
      "createdDateTime": "abc123",
      "updatedDateTime": "abc123",
      "user": GenericUser,
      "message": "xyz789",
      "organization": GenericOrganization,
      "roomStoryNote": RoomStoryNote
    }
  }
}

createRoomV2

Description

Create dash room based on input arguments and returns its information

Response

Returns a Room!

Arguments
Name Description
input - RoomCreateInputV2!

Example

Query
mutation createRoomV2($input: RoomCreateInputV2!) {
  createRoomV2(input: $input) {
    id
    roomName
    organization {
      ...CurrentOrganizationFragment
    }
    creator {
      ...RoomUserFragment
    }
    createdAtDateTime
    public
    topic
    owner {
      ...RoomUserFragment
    }
    numUnread
    roomFavoriteDateTime
    favorite
    numUnreadMentions
    roomUsers {
      ...RoomUserFragment
    }
    numUsers
    joinDateTime
    lastVisitedDateTime
    lastReadDateTime
    roomType
    readOnlyDateTime
    readOnly
    blockDateTime
    blockedBy {
      ...RoomUserFragment
    }
    hidden
    muted
    contractId
    contract {
      ...ContractFragment
    }
    vendorProposal {
      ...VendorProposalFragment
    }
    roomNote
    roomNotePresent
    offerIds
    recruiters {
      ...GenericUserFragment
    }
    latestStory {
      ...RoomStoryFragment
    }
    story {
      ...RoomStoryFragment
    }
    stories {
      ...RoomStoryConnectionFragment
    }
    latestStoryPreRendered {
      ...RoomStoryFragment
    }
  }
}
Variables
{"input": RoomCreateInputV2}
Response
{
  "data": {
    "createRoomV2": {
      "id": 4,
      "roomName": "abc123",
      "organization": CurrentOrganization,
      "creator": RoomUser,
      "createdAtDateTime": "abc123",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "xyz789",
      "favorite": false,
      "numUnreadMentions": 987,
      "roomUsers": [RoomUser],
      "numUsers": 987,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "abc123",
      "lastReadDateTime": "abc123",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": true,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": true,
      "muted": true,
      "contractId": "4",
      "contract": Contract,
      "vendorProposal": VendorProposal,
      "roomNote": "xyz789",
      "roomNotePresent": true,
      "offerIds": [4],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

endContractByClient

Description

End a contract by a client

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID!
input - EndContractInput!

Example

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

endContractByFreelancer

Description

End a contract by a freelancer

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID!
input - EndContractInput!

Example

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

pauseContract

Description

Pause a contract by a client

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID!
message - String

Example

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

removeRoom

Description

Removes a room

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

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

removeUserFromRoom

Description

Removes an user from a room

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

restartContract

Description

Restart a contract by a client

Response

Returns a ContractActionResponse

Arguments
Name Description
contractId - ID!
message - String

Example

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

roomCreate1on1IfNotExists

Description

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

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

sendCustomPayment

Description

Send custom payment

Response

Returns a CustomPaymentResponse

Arguments
Name Description
input - CustomPaymentInput

Example

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

unarchiveTeamActivity

Description

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

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID!
teamId - ID
codes - [String!]!

Example

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

updateRoomStoryV2

Description

Updates an existing story in a room

Response

Returns an UpdateRoomStoryResponse!

Arguments
Name Description
input - RoomStoryUpdateInputV2!

Example

Query
mutation updateRoomStoryV2($input: RoomStoryUpdateInputV2!) {
  updateRoomStoryV2(input: $input) {
    status
  }
}
Variables
{"input": RoomStoryUpdateInputV2}
Response
{
  "data": {
    "updateRoomStoryV2": {
      "status": "xyz789"
    }
  }
}

updateRoomV2

Description

Updates an existing room

Response

Returns a Room!

Arguments
Name Description
input - RoomUpdateInputV2

Example

Query
mutation updateRoomV2($input: RoomUpdateInputV2) {
  updateRoomV2(input: $input) {
    id
    roomName
    organization {
      ...CurrentOrganizationFragment
    }
    creator {
      ...RoomUserFragment
    }
    createdAtDateTime
    public
    topic
    owner {
      ...RoomUserFragment
    }
    numUnread
    roomFavoriteDateTime
    favorite
    numUnreadMentions
    roomUsers {
      ...RoomUserFragment
    }
    numUsers
    joinDateTime
    lastVisitedDateTime
    lastReadDateTime
    roomType
    readOnlyDateTime
    readOnly
    blockDateTime
    blockedBy {
      ...RoomUserFragment
    }
    hidden
    muted
    contractId
    contract {
      ...ContractFragment
    }
    vendorProposal {
      ...VendorProposalFragment
    }
    roomNote
    roomNotePresent
    offerIds
    recruiters {
      ...GenericUserFragment
    }
    latestStory {
      ...RoomStoryFragment
    }
    story {
      ...RoomStoryFragment
    }
    stories {
      ...RoomStoryConnectionFragment
    }
    latestStoryPreRendered {
      ...RoomStoryFragment
    }
  }
}
Variables
{"input": RoomUpdateInputV2}
Response
{
  "data": {
    "updateRoomV2": {
      "id": "4",
      "roomName": "abc123",
      "organization": CurrentOrganization,
      "creator": RoomUser,
      "createdAtDateTime": "xyz789",
      "public": false,
      "topic": "abc123",
      "owner": RoomUser,
      "numUnread": 123,
      "roomFavoriteDateTime": "abc123",
      "favorite": true,
      "numUnreadMentions": 987,
      "roomUsers": [RoomUser],
      "numUsers": 987,
      "joinDateTime": "xyz789",
      "lastVisitedDateTime": "xyz789",
      "lastReadDateTime": "abc123",
      "roomType": "ONE_ON_ONE",
      "readOnlyDateTime": "xyz789",
      "readOnly": false,
      "blockDateTime": "xyz789",
      "blockedBy": RoomUser,
      "hidden": true,
      "muted": true,
      "contractId": "4",
      "contract": Contract,
      "vendorProposal": VendorProposal,
      "roomNote": "abc123",
      "roomNotePresent": false,
      "offerIds": [4],
      "recruiters": [GenericUser],
      "latestStory": RoomStory,
      "story": RoomStory,
      "stories": RoomStoryConnection,
      "latestStoryPreRendered": RoomStory
    }
  }
}

updateTaskStatus

Description

Add freelancer's task update: add commit, attach something or status change

Response

Returns a TalentCloudTaskOverview!

Arguments
Name Description
input - UpdateTaskStatus

Example

Query
mutation updateTaskStatus($input: UpdateTaskStatus) {
  updateTaskStatus(input: $input) {
    id
    taskSectionIds
    name
    completionRequired
    active
    permissions {
      ...TalentCloudTaskOverviewPermissionFragment
    }
    primaryTaskOwner
  }
}
Variables
{"input": UpdateTaskStatus}
Response
{
  "data": {
    "updateTaskStatus": {
      "id": "4",
      "taskSectionIds": [4],
      "name": "abc123",
      "completionRequired": false,
      "active": true,
      "permissions": [TalentCloudTaskOverviewPermission],
      "primaryTaskOwner": "FREELANCER"
    }
  }
}

updateTeamActivity

Description

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

Response

Returns a ProcessUpdateResponse

Arguments
Name Description
orgId - ID!
teamId - ID
request - UpdateTeamActivityRequest!

Example

Query
mutation updateTeamActivity(
  $orgId: ID!,
  $teamId: ID,
  $request: UpdateTeamActivityRequest!
) {
  updateTeamActivity(
    orgId: $orgId,
    teamId: $teamId,
    request: $request
  ) {
    success
  }
}
Variables
{
  "orgId": "4",
  "teamId": 4,
  "request": UpdateTeamActivityRequest
}
Response
{"data": {"updateTeamActivity": {"success": true}}}

updateWorkflowTask

Description

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

Response

Returns an UpdateWorkflowTaskResult!

Arguments
Name Description
workflowId - ID
taskId - ID
updateWorkflowTaskDetailsInput - UpdateWorkflowTaskDetailsInput

Example

Query
mutation updateWorkflowTask(
  $workflowId: ID,
  $taskId: ID,
  $updateWorkflowTaskDetailsInput: UpdateWorkflowTaskDetailsInput
) {
  updateWorkflowTask(
    workflowId: $workflowId,
    taskId: $taskId,
    updateWorkflowTaskDetailsInput: $updateWorkflowTaskDetailsInput
  ) {
    workflowId
    updatedTaskView {
      ...WorkflowTaskViewFragment
    }
  }
}
Variables
{
  "workflowId": "4",
  "taskId": 4,
  "updateWorkflowTaskDetailsInput": UpdateWorkflowTaskDetailsInput
}
Response
{
  "data": {
    "updateWorkflowTask": {
      "workflowId": 4,
      "updatedTaskView": WorkflowTaskView
    }
  }
}

withdrawOffer

Description

Withdraws an offer through new offersCommand service.

  • This method check permissions from logged user
Response

Returns a Boolean!

Arguments
Name Description
input - WithdrawOfferInput!

Example

Query
mutation withdrawOffer($input: WithdrawOfferInput!) {
  withdrawOffer(input: $input)
}
Variables
{"input": WithdrawOfferInput}
Response
{"data": {"withdrawOffer": true}}

Types

Proposals

ClientProposal

Description

client proposal

Fields
Field Name Description
id - ID! implements Proposal { id of the client proposal
user - GenericUser! connection to the vendor who will be physically working on the job if accepted
organization - GenericOrganization! connection to the organization the vendor user belongs to
job - MarketplaceJobPosting! connection to the job for which vendor has applied
terms - ProposalTerms! terms on which vendor applied on
coverLetter - String cover letter to accompany the proposal
projectPlan - ProposalProjectPlan connection to the project plan which is a set of milestones defined by vendor
auditDetails - ProposalAuditDetails! information used to audit changes in proposals
status - ClientProposalStatus! status of the client proposal
annotations - [ClientProposalAnnotation!]! annotations of the client proposal
Example
{
  "id": "4",
  "user": GenericUser,
  "organization": GenericOrganization,
  "job": MarketplaceJobPosting,
  "terms": ProposalTerms,
  "coverLetter": "xyz789",
  "projectPlan": ProposalProjectPlan,
  "auditDetails": ProposalAuditDetails,
  "status": ClientProposalStatus,
  "annotations": ["Recommended"]
}
Proposals

ClientProposalAnnotation

Description

client proposal annotation

Values
Enum Value Description

Recommended

Shortlisted

Auto_Hidden

Read

Hidden

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": "xyz789",
  "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": "xyz789",
  "jobSuccessScore_eq": "ANY_JOB_SUCCESS",
  "earnings_eq": "ANY_AMOUNT_EARNED",
  "billedHours_eq": "ANY_HOURS",
  "applierType_eq": "FREELANCER",
  "topRated_eq": "TOP_RATED",
  "englishLevel_eq": "ANY_LEVEL",
  "title_eq": "xyz789",
  "textQuery_eq": "xyz789",
  "country_any": ["xyz789"],
  "region_any": ["abc123"],
  "languages_any": ["abc123"],
  "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": false,
  "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

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
edges - [ClientProposalsEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [ClientProposalsEdge],
  "pageInfo": PageInfo
}
Proposals

ClientProposalsEdge

Fields
Field Name Description
cursor - String!
node - ClientProposal
Example
{
  "cursor": "xyz789",
  "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": true
}
Proposals

ClientProposalSortAttribute

Fields
Input Field Description
field - ClientProposalSortAttributeType!
sortOrder - SortOrder!
Example
{"field": "CHARGERATE", "sortOrder": "ASC"}
Proposals

ClientProposalSortAttributeType

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

Fields
Input Field Description
fileName - String!
expirationDate - String
maxFileSize - Int
contentType - String
sslEnabled - Boolean
metaData - String
Example
{
  "fileName": "xyz789",
  "expirationDate": "abc123",
  "maxFileSize": 123,
  "contentType": "xyz789",
  "sslEnabled": true,
  "metaData": "xyz789"
}
Proposals

FileInfo

Fields
Field Name Description
id - ID! file uid Ex: "1120653822065278976"
uploadUrl - String! created using bucket
formKeyValues - [StringMapElement!]! formKeyValues holds following attributes ......... key Generated from UrlInfoInput- keyPrefix("api/gql/domain/") Ex: "api/gql/domain/77987***********" acl Ex: "private" Content-Disposition Generated from UrlInfoInput- "content-type,fileName,downloadBehaviour("inline | attachment")" Ex: "attachment; filename="abc.txt";filename*=utf-8''abc.txt" AWSAccessKeyId Ex: "ASI**************" policy Generated from UrlInfoInput- "bucket, key, timestamp, maxFileSize, contentType, contentDisposition" signature Generated from formKeyValues' "policy" Content-Type Ex: "application/octet-stream"
Example
{
  "id": "4",
  "uploadUrl": "xyz789",
  "formKeyValues": [StringMapElement]
}
Proposals

ProposalAuditDetails

Description

proposal audit details

Fields
Field Name Description
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
{
  "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

Fields
Field Name Description
engagementDurationValues - [ProposalEngagementDuration!]!
reasons - [ReasonsMetadata!]!
Arguments
reasonType - ReasonType
Example
{
  "engagementDurationValues": [
    ProposalEngagementDuration
  ],
  "reasons": [ReasonsMetadata]
}
Proposals

ProposalMilestones

Fields
Field Name Description
description - String!
dueDate - String!
amount - String! TODO: Needs to be changed back to Money when the API changes are made.
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": 123.45
}
Proposals

ProposalUpdateResultStatus

Description

applications with PENDING status"will be retried again by the system

Values
Enum Value Description

SUCCESS

PENDING

Example
"SUCCESS"
Proposals

UpdateClientProposalResult

Fields
Field Name Description
proposal - ClientProposal
status - ProposalUpdateResultStatus!
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": "xyz789",
  "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!
annotations_eq - VendorProposalAnnotation
freelancerId_eq - ID
organizationId_eq - ID
jobPostingIds_any - [ID!]
Example
{
  "status_eq": "Accepted",
  "annotations_eq": "Hidden",
  "freelancerId_eq": "4",
  "organizationId_eq": "4",
  "jobPostingIds_any": ["4"]
}
Proposals

VendorProposalsConnection

Description

connection to the vendor proposal list

Fields
Field Name Description
totalCount - Int
edges - [VendorProposalsEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [VendorProposalsEdge],
  "pageInfo": PageInfo
}
Proposals

VendorProposalsEdge

Fields
Field Name Description
cursor - String
node - VendorProposal
Example
{
  "cursor": "xyz789",
  "node": VendorProposal
}
Proposals

VendorProposalSortAttribute

Fields
Input Field Description
field - VendorProposalSortAttributeType!
sortOrder - SortOrder!
Example
{"field": "CREATEDDATETIME", "sortOrder": "ASC"}
Proposals

VendorProposalSortAttributeType

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

Accepted

Declined

Withdrawn

Replaced

Offered

Activated

Archived

Rejected

Hired

Pending

Invalid

Example
"Created"

Offers and Contracts

ActivateMilestoneInput

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

Actor

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

Values
Enum Value Description

System

AgencyManager

HiringManager

ContactPerson

Example
"System"
Offers and Contracts

AgreementKind

Values
Enum Value Description

Offer

Contract

Example
"Offer"
Offers and Contracts

ApproveMilestoneInput

Fields
Input Field Description
id - ID!
paidAmount - String!
bonusAmount - String
paymentComment - String
underpaymentReason - String
noteToContractor - String
Example
{
  "id": "4",
  "paidAmount": "abc123",
  "bonusAmount": "abc123",
  "paymentComment": "abc123",
  "underpaymentReason": "xyz789",
  "noteToContractor": "abc123"
}
Offers and Contracts

ClientFeedback

Fields
Field Name Description
score - Float
comment - String
freelancerResponse - String
Example
{
  "score": 987.65,
  "comment": "abc123",
  "freelancerResponse": "abc123"
}
Offers and Contracts

ClosingReason

Fields
Field Name Description
id - ID!
apiRef - String
reason - String
Example
{
  "id": "4",
  "apiRef": "abc123",
  "reason": "abc123"
}
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
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
workDays - [WorkDay!]!
Arguments
timeRange - DateTimeRange!
offset - Int
workDiaryTimeCells - [WorkDiaryTimeCell!] work diary of the current contract
Arguments
date - String!
offsetInSeconds - Int
feedback - Feedback
Example
{
  "id": "4",
  "title": "xyz789",
  "contractType": "HOURLY",
  "job": MarketplaceJobPosting,
  "hasAgency": false,
  "offer": Offer,
  "clientProposal": ClientProposal,
  "weeklyChargeAmount": Money,
  "weeklyHoursLimit": 987.65,
  "hourlyChargeRate": Money,
  "createdDateTime": "abc123",
  "firstContractStartDateTime": "abc123",
  "modifiedDateTime": "xyz789",
  "startDateTime": "abc123",
  "endDateTime": "abc123",
  "manualTimeAllowed": true,
  "hideScreenshots": true,
  "last": true,
  "weeklyStipendHours": 987.65,
  "estimatedDuration": ProposalEngagementDuration,
  "status": "ACTIVE",
  "suspended": true,
  "freelancer": FreelancerProfile,
  "paused": true,
  "clientCompany": PublicCompanyInfo,
  "milestones": [Milestone],
  "workDays": [WorkDay],
  "workDiaryTimeCells": [WorkDiaryTimeCell],
  "feedback": Feedback
}
Offers and Contracts

ContractDetails

Fields
Field Name Description
id - ID! basic contract data
title - String
status - ContractStatus
closingReason - ClosingReason
deliveryModel - DeliveryModel
kind - ContractKind
isPtc - Boolean
createDate - String dates
modifyDate - String
startDate - String
endDate - String
offer - Offer! offer and opening
job - JobPosting!
freelancer - ContractUser! contract vendor/freelancer data
vendorOrganization - GenericOrganization!
vendorTeam - GenericOrganization!
clientOrganization - GenericOrganization! contract client and agency data
clientTeam - GenericOrganization!
hiringManager - ContractUser
agencyManager - ContractUser
supervisor - ContractUser! contract supervisor
changingUserType - CreatorType contract changes
changedBy - ContractUser
endedBy - ContractUser
metadata - ContractMetadata
hourlyLimits - [HourlyLimit] contract terms
terms - ContractTerms
Example
{
  "id": 4,
  "title": "abc123",
  "status": "ACTIVE",
  "closingReason": ClosingReason,
  "deliveryModel": "TALENT_MARKETPLACE",
  "kind": "WEEKLY_RETAINER",
  "isPtc": true,
  "createDate": "abc123",
  "modifyDate": "xyz789",
  "startDate": "abc123",
  "endDate": "xyz789",
  "offer": Offer,
  "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
}
Offers and Contracts

ContractKind

Values
Enum Value Description

WEEKLY_RETAINER

PAYROLL

STAFF_AUG

DIRECT_CONTRACT

Example
"WEEKLY_RETAINER"
Offers and Contracts

ContractMetadata

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

ContractOfferConnection

Fields
Field Name Description
totalCount - Int
edges - [ContractOfferEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [ContractOfferEdge],
  "pageInfo": PageInfo
}
Offers and Contracts

ContractOfferEdge

Fields
Field Name Description
cursor - String!
node - ContractOfferResult
Example
{
  "cursor": "xyz789",
  "node": ContractOfferResult
}
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!
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.
catalogProject - Boolean
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": "xyz789",
  "lastUpdatedDateTime": "xyz789",
  "lastPublishedDateTime": "abc123",
  "inPrivateTalentCloud": true,
  "offerCreatedDateTime": "abc123",
  "offer": Offer,
  "contract": Contract,
  "catalogProject": false
}
Offers and Contracts

ContractOfferState

Values
Enum Value Description

Pending

Active

Paused

Ended

Example
"Pending"
Offers and Contracts

ContractOfferType

Values
Enum Value Description

Hourly

FixedPrice

Example
"Hourly"
Offers and Contracts

ContractOptionsInput

Description

addTerms - Flag to add terms to result or not, default false, optional addHourLimits - Flag to add hourly limits to results or not, default false, optional

Fields
Input Field Description
addTerms - Boolean
addHourLimits - Boolean
Example
{"addTerms": true, "addHourLimits": false}
Offers and Contracts

ContractPaging

Fields
Field Name Description
limit - Int
offset - Int
Example
{"limit": 987, "offset": 123}
Offers and Contracts

ContractPagingInput

Description

offset - Number of records to skip, optional, default 0 limit - Number of results, optional, default 10

Fields
Input Field Description
limit - Int
offset - Int
Example
{"limit": 123, "offset": 123}
Offers and Contracts

ContractProposal

Description

Freelancers can propose a contract to a client

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

ContractSearchResults

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

ContractState

Values
Enum Value Description

ACTIVE

CLOSED

PAUSED

PENDING

CANCELLED

Example
"ACTIVE"
Offers and Contracts

ContractStatus

Values
Enum Value Description

ACTIVE

CLOSED

PAUSED

Example
"ACTIVE"
Offers and Contracts

ContractTerms

Fields
Field Name Description
fixedPriceTerms - [FixedPriceContractTerm]
hourlyTerms - [HourlyContractTerm]
stipendTerms - [StipendContractTerm]
Example
{
  "fixedPriceTerms": [FixedPriceContractTerm],
  "hourlyTerms": [HourlyContractTerm],
  "stipendTerms": [StipendContractTerm]
}
Offers and Contracts

ContractUser

Fields
Field Name Description
id - ID!
rid - ID!
name - String
photoUrl - String
firstName - String
lastName - String
address - UserLocation
email - String
Example
{
  "id": "4",
  "rid": 4,
  "name": "xyz789",
  "photoUrl": "abc123",
  "firstName": "abc123",
  "lastName": "abc123",
  "address": UserLocation,
  "email": "abc123"
}
Offers and Contracts

CreateMilestoneInput

Fields
Input Field Description
offerId - ID
contractId - ID
description - String
instruction - String
depositAmount - String
dueDate - String
attachmentIds - [ID!]
Example
{
  "offerId": 4,
  "contractId": "4",
  "description": "abc123",
  "instruction": "abc123",
  "depositAmount": "abc123",
  "dueDate": "xyz789",
  "attachmentIds": [4]
}
Offers and Contracts

CreatorType

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

CustomFieldsConnection

Fields
Field Name Description
edges - [CustomFieldsEdge]
pageInfo - PageInfo
Example
{
  "edges": [CustomFieldsEdge],
  "pageInfo": PageInfo
}
Offers and Contracts

CustomFieldsEdge

Fields
Field Name Description
cursor - String!
node - CustomFields
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

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

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

DeliveryModel

Values
Enum Value Description

TALENT_MARKETPLACE

CATALOG_PROJECT

UPWORK_REMOTE

TALENT_SCOUT

MICRO_PAYMENTS

Example
"TALENT_MARKETPLACE"
Offers and Contracts

EditMilestoneInput

Fields
Input Field Description
id - ID!
description - String
instructions - String
depositAmount - String
dueDate - String
attachments - [ID!]
message - String
sequenceId - Int
Example
{
  "id": 4,
  "description": "abc123",
  "instructions": "abc123",
  "depositAmount": "abc123",
  "dueDate": "abc123",
  "attachments": ["4"],
  "message": "abc123",
  "sequenceId": 987
}
Offers and Contracts

EscrowRefundStatus

Values
Enum Value Description

Open

Disputed

Accepted

Expired

Example
"Open"
Offers and Contracts

Feedback

Fields
Field Name Description
clientFeedback - ClientFeedback
freelancerFeedback - FreelancerFeedback
Example
{
  "clientFeedback": ClientFeedback,
  "freelancerFeedback": FreelancerFeedback
}
Offers and Contracts

FixedPriceContractTerm

Fields
Field Name Description
id - ID!
fpCharge - Money
fixedAmount - Money
createDate - String
modifyDate - String
changeDate - String
createdBy - ContractUser
creatorUserType - CreatorType
changedBy - ContractUser
startDate - String
changingUserType - CreatorType
isFP2 - Boolean
endDate - String
jobType - JobType
ptcData - PtcData
milestones - [Milestone]
Example
{
  "id": 4,
  "fpCharge": Money,
  "fixedAmount": Money,
  "createDate": "xyz789",
  "modifyDate": "xyz789",
  "changeDate": "xyz789",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "startDate": "xyz789",
  "changingUserType": "CLIENT",
  "isFP2": true,
  "endDate": "abc123",
  "jobType": "FIXED",
  "ptcData": PtcData,
  "milestones": [Milestone]
}
Offers and Contracts

FixedPriceTerm

Description

Terms for fixed priced offer

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

FreelancerFeedback

Fields
Field Name Description
score - Float
comment - String
clientResponse - String
recommendScore - Int
Example
{
  "score": 987.65,
  "comment": "xyz789",
  "clientResponse": "abc123",
  "recommendScore": 123
}
Offers and Contracts

HourlyContractTerm

Fields
Field Name Description
id - ID!
hourlyRate - Money
createDate - String
modifyDate - String
changeDate - String
createdBy - ContractUser
creatorUserType - CreatorType
changedBy - ContractUser
startDate - String
changingUserType - CreatorType
manualTimeAllowed - Boolean
endDate - String
jobType - JobType
ptcData - PtcData
Example
{
  "id": 4,
  "hourlyRate": Money,
  "createDate": "xyz789",
  "modifyDate": "abc123",
  "changeDate": "xyz789",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "startDate": "abc123",
  "changingUserType": "CLIENT",
  "manualTimeAllowed": false,
  "endDate": "abc123",
  "jobType": "FIXED",
  "ptcData": PtcData
}
Offers and Contracts

HourlyLimit

Fields
Field Name Description
id - ID!
weeklyLimit - String
createDate - String
modifyDate - String
startDate - String
endDate - String
legacyId - Int
Example
{
  "id": "4",
  "weeklyLimit": "xyz789",
  "createDate": "abc123",
  "modifyDate": "abc123",
  "startDate": "xyz789",
  "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": false
}
Offers and Contracts

JobType

Values
Enum Value Description

FIXED

HOURLY

Example
"FIXED"
Offers and Contracts

Metadata

Fields
Field Name Description
sourceType - SourceType the source type
sourceId - ID source id, it could be empty according the case
data - String data in a json format
occupationUid - ID occupation uid
Example
{
  "sourceType": "JobPosting",
  "sourceId": 4,
  "data": "abc123",
  "occupationUid": 4
}
Offers and Contracts

Milestone

Fields
Field Name Description
id - ID! ID of the milestone
createdBy - GenericUser User information who created the milestone
dueDateTime - String Due date time of the milestone
state - OfferMilestoneState Current state of the offer
description - String Description available with the milestone
currentEscrowAmount - Money
depositAmount - Money
fundedAmount - Money
paid - Money
overpayment - Money
bonus - Money
previousMilestoneUnusedDeposit - Money
submissionCount - Int
sequenceId - Int The sequence in which the milestone is to be executed
payComments - String
lastSubmissionCreatedTime - String
createdDateTime - String Creation date for the milestone
modifiedDateTime - String Update date for the milestone
instructions - String
submissionEvents - [SubmissionEvent!]!
Example
{
  "id": "4",
  "createdBy": GenericUser,
  "dueDateTime": "abc123",
  "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]
}
Offers and Contracts

MilestoneRejectionResponse

Fields
Field Name Description
response - Boolean
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

ModernizedOffer

Fields
Field Name Description
id - ID! offer id
kind - OfferKind kind
offeror - Offeror who creates the offer
clientUserId - ID! client user id
clientTeamId - ID! client team uid
clientOrgId - ID client org uid
vendorUserId - ID! vendor uid
vendorTeamId - ID vendor team uid, in case of agency
vendorOrgId - ID vendor org ui, it could be the sole propriator
actors - [Actor] other participants in the offer
metadata - Metadata metadata associated to the offer
expirationDateTime - String expiration time
title - String! title
description - String offer's description
attachments - [ID] attachments
contractStartDateTime - String contract start date
contractEndDateTime - String contract end date
hourlyRateTerms - HourlyTerms hourly terms
stipendTerms - StipendTerms stipend terms
milestoneTerms - MilestoneTerms milestone terms
deliveryModel - OfferDeliveryModel Delivery model
state - WorkflowOfferState! offer state
staffingManagerId - ID staffing manager uid
contractId - ID contract id associated to the offer, once offer is accepted
agencyRootCompanyId - ID agency root organization id
instanceId - ID the current offer id
client - GenericOrganization! Connection to the client associated with the offer
clientCompany - PublicCompanyInfo Public company information
createdDateTime - String The creation date of the offer
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",
  "staffingManagerId": 4,
  "contractId": 4,
  "agencyRootCompanyId": 4,
  "instanceId": "4",
  "client": GenericOrganization,
  "clientCompany": PublicCompanyInfo,
  "createdDateTime": "xyz789"
}
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!
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
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!]
pagination - Pagination
Example
{
  "id": 4,
  "title": "abc123",
  "description": "xyz789",
  "type": "MARKET_PLACE_HOURLY",
  "job": MarketplaceJobPosting,
  "vendorProposal": VendorProposal,
  "closeJobPostingOnAccept": false,
  "client": GenericOrganization,
  "offerTerms": OfferTerms,
  "messageToContractor": "abc123",
  "state": "DRAFT",
  "offerFeatures": OfferFeatures,
  "clientCompany": PublicCompanyInfo,
  "milestones": [Milestone],
  "createdUsingBYOFlow": false,
  "freelancer": FreelancerProfile,
  "payrollOffer": false,
  "customFields": CustomFieldsConnection
}
Offers and Contracts

OfferAddressInput

Fields
Input Field Description
addressLine - String
suite - String
zip - String
Example
{
  "addressLine": "xyz789",
  "suite": "xyz789",
  "zip": "xyz789"
}
Offers and Contracts

OfferByClientFilter

Fields
Input Field Description
teamId_any - [ID!]
contactPersonId_any - [ID!]
offerType_any - [ContractOfferType!]
milestoneState_any - [OfferMilestoneState!]
escrowRefundStatus_any - [EscrowRefundStatus!]
freelancerId_any - [ID!]
agreementKind_any - [AgreementKind!]
commonFilter - OfferSearchCommonFilter
Example
{
  "teamId_any": [4],
  "contactPersonId_any": ["4"],
  "offerType_any": ["Hourly"],
  "milestoneState_any": ["NotFunded"],
  "escrowRefundStatus_any": ["Open"],
  "freelancerId_any": ["4"],
  "agreementKind_any": ["Offer"],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferByRootCompanyFilter

Fields
Input Field Description
freelancerId_any - [ID!]
agencyTeamOrgId_any - [ID!]
clientOrgId_any - [ID!]
commonFilter - OfferSearchCommonFilter
Example
{
  "freelancerId_any": [4],
  "agencyTeamOrgId_any": ["4"],
  "clientOrgId_any": [4],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferDeliveryModel

Values
Enum Value Description

TalentMarketplace

CatalogProject

UpworkRemote

TalentScout

DirectContract

MicroPayments

DirectContractV2

Example
"TalentMarketplace"
Offers and Contracts

OfferFeatures

Description

Features associated with the enterprise related offer

Fields
Field Name Description
purchaseOrder - PurchaseOrder
privateTalentCloud - PrivateTalentCloud
onSiteType - OfferWorkType
country - Country
state - String
localDescription - String
localFlexibilityDescription - String
eor - Boolean "Employer of Record" referred to as the W-2 Employer of Record because they are responsible for issuing W-2s (Wage and Tax Statement) to the employee shoulders the responsibility for all the traditional employment tasks and liabilities. When the invited freelancer accepts this invitation, the freelancer is added to the specific Upwork agency entity as a contractor
Example
{
  "purchaseOrder": PurchaseOrder,
  "privateTalentCloud": PrivateTalentCloud,
  "onSiteType": "REMOTE",
  "country": Country,
  "state": "xyz789",
  "localDescription": "xyz789",
  "localFlexibilityDescription": "xyz789",
  "eor": false
}
Offers and Contracts

OfferForFreelancerFilter

Fields
Input Field Description
agencyRootCompanyOrgId_any - [ID!]
agencyTeamOrgId_any - [ID!]
clientOrgId_any - [ID!]
commonFilter - OfferSearchCommonFilter
Example
{
  "agencyRootCompanyOrgId_any": [4],
  "agencyTeamOrgId_any": ["4"],
  "clientOrgId_any": ["4"],
  "commonFilter": OfferSearchCommonFilter
}
Offers and Contracts

OfferKind

Values
Enum Value Description

HourlyPack

WeeklyRetainer

Vanilla

PayrollENT

BYO

Enterprise

PayrollRMT

Example
"HourlyPack"
Offers and Contracts

OfferLegacyState

Values
Enum Value Description

Draft

DraftChanged

New

Accepted

Declined

Expired

Withdrawn

Changed

Canceled

Submitted

Example
"Draft"
Offers and Contracts

OfferList

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

OfferLocationInput

Fields
Input Field Description
workType - OfferWorkType
country - String Can be retrieved by Query countries: [Country!]!
state - String Can be retrieved by Query location{state}
description - String
flexible - Boolean
flexibilityDescription - String
city - String Can be retrieved by Query location{state}
address - OfferAddressInput
Example
{
  "workType": "REMOTE",
  "country": "abc123",
  "state": "abc123",
  "description": "abc123",
  "flexible": true,
  "flexibilityDescription": "xyz789",
  "city": "xyz789",
  "address": OfferAddressInput
}
Offers and Contracts

OfferMilestoneState

Values
Enum Value Description

NotFunded

InOffer

Active

Submitted

Rejected

RejectedByUpwork

Paid

PaidByUpwork

NotFundedClosed

CancelledByClient

CancelledByFreelancer

CancelledByUpwork

OfferCancelled

Example
"NotFunded"
Offers and Contracts

Offeror

Values
Enum Value Description

Client

Vendor

Example
"Client"
Offers and Contracts

OfferorInput

Values
Enum Value Description

Client

Example
"Client"
Offers and Contracts

OfferPayrollInput

Fields
Input Field Description
talentCloudId - ID
purchaseOrderId - ID
assets - [String!]
Example
{
  "talentCloudId": 4,
  "purchaseOrderId": 4,
  "assets": ["abc123"]
}
Offers and Contracts

OfferSearchAttribute

Values
Enum Value Description

JobApplication

JobPosting

ClientUser

VendorUser

ClientTeam

VendorTeam

ClientOrg

VendorOrg

Contract

Example
"JobApplication"
Offers and Contracts

OfferSearchCommonFilter

Fields
Input Field Description
text_eq - String
states_any - [ContractOfferState!]
startDatePeriod_bt - [String!]
endDatePeriod_bt - [String!]
catalogProject - Boolean
Example
{
  "text_eq": "xyz789",
  "states_any": ["Pending"],
  "startDatePeriod_bt": ["xyz789"],
  "endDatePeriod_bt": ["abc123"],
  "catalogProject": true
}
Offers and Contracts

OfferState

Values
Enum Value Description

DRAFT

DISCARDED

SUBMITTED

WITHDRAWN

REPLACED

AWAITING_APPROVAL

APPROVED

PENDING_VENDOR_ACCEPTANCE

PENDING_VENDOR_ACCEPTANCE_AFTER_REMINDER

ACCEPTED

REJECTED

FAILED

EXPIRED

CANCELED

DENIED

PENDING_FUND

FUNDING_FAILED

FUNDED

DELETED

Example
"DRAFT"
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": "xyz789",
  "expectedEndDate": "xyz789",
  "fixedPriceTerm": FixedPriceTerm,
  "hourlyTerms": HourlyTerms
}
Offers and Contracts

OfferType

Values
Enum Value Description

MARKET_PLACE_HOURLY

MARKET_PLACE_FIXED_PRICE

ENTERPRISE_HOURLY

ENTERPRISE_FIXED_PRICE

Example
"MARKET_PLACE_HOURLY"
Offers and Contracts

OfferWorkType

Values
Enum Value Description

REMOTE

PERMANENT

Example
"REMOTE"
Offers and Contracts

PeriodType

Values
Enum Value Description

Weekly

Monthly

Example
"Weekly"
Offers and Contracts

PtcData

Fields
Field Name Description
startDate - String
endDate - String
Example
{
  "startDate": "abc123",
  "endDate": "abc123"
}
Offers and Contracts

PurchaseOrder

Fields
Field Name Description
id - ID! ID of the PO
orderNumber - String! The order number to be displayed to the user
description - String Description associated with the offer, if any
amount - Money! PO amount
expiresAtDateTime - String Time for experince of the model
aclType - PurchaseOrderAclType! Controls who can see/use this PO
aclSpecification - String
archived - Boolean!
placeHolder - Boolean! True if "I don't have it yet" is enabled and selected
createdAtDateTime - String!
creator - GenericUser!
alertThreshold - String Percentage of spend used at which point user shall be notified
notificationAlcType - PurchaseOrderNotificationAclType Controls who gets notified
notificationAlcSpecification - String
Example
{
  "id": 4,
  "orderNumber": "abc123",
  "description": "xyz789",
  "amount": Money,
  "expiresAtDateTime": "xyz789",
  "aclType": "HMS_IN_COMPANY",
  "aclSpecification": "abc123",
  "archived": true,
  "placeHolder": true,
  "createdAtDateTime": "xyz789",
  "creator": GenericUser,
  "alertThreshold": "xyz789",
  "notificationAlcType": "ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY",
  "notificationAlcSpecification": "xyz789"
}
Offers and Contracts

PurchaseOrderAclType

Values
Enum Value Description

HMS_IN_COMPANY

HMS_IN_TEAM

USER_LIST

Example
"HMS_IN_COMPANY"
Offers and Contracts

PurchaseOrderNotificationAclType

Values
Enum Value Description

ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY

USERS_WITH_HIRING_PERMISSIONS_IN_SELECTED_TEAMS

SPECIFIC_USERS

NONE

Example
"ALL_USERS_WITH_HIRING_PERMISSIONS_IN_COMPANY"
Offers and Contracts

RejectMilestoneSubmissionInput

Fields
Input Field Description
id - ID! Milestone Submission ID
noteToContractor - String
attachments - [ID!]
Example
{
  "id": "4",
  "noteToContractor": "abc123",
  "attachments": [4]
}
Offers and Contracts

SearchOffersByAttributesInput

Fields
Input Field Description
ids - [ID!]! List of ids of attributes
searchAttribute - OfferSearchAttribute! attribute to search offers by
includeAttachments - Boolean indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true
includeMilestones - Boolean indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true
Example
{
  "ids": [4],
  "searchAttribute": "JobApplication",
  "includeAttachments": false,
  "includeMilestones": true
}
Offers and Contracts

SearchOffersByIdInput

Fields
Input Field Description
ids - [ID!] offers ids
includeAttachments - Boolean indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true
includeMilestones - Boolean indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true
Example
{
  "ids": ["4"],
  "includeAttachments": false,
  "includeMilestones": false
}
Offers and Contracts

SearchOffersInput

Fields
Input Field Description
id - ID! Id of the attribute
searchAttribute - OfferSearchAttribute! attribute to search offers by
states - [OfferLegacyState!] legacy offer states to search by
limit - Int size of a single page, '0' means unlimited, default 10. Default = 10
page - Int page number starting from '1', default 1. Default = 1
ascendingOrder - Boolean wherever order of offers should be ascending, default true. Default = true
includeAttachments - Boolean indicates wherever query for attachments or not, turning it off may improve query performance,default true. Default = true
includeMilestones - Boolean indicates wherever query for milestones or not, turning it off may improve query performance,default true. Default = true
Example
{
  "id": 4,
  "searchAttribute": "JobApplication",
  "states": ["Draft"],
  "limit": 123,
  "page": 123,
  "ascendingOrder": false,
  "includeAttachments": true,
  "includeMilestones": true
}
Offers and Contracts

SourceType

Values
Enum Value Description

JobPosting

JobApplication

Direct

ContractProposal

Payroll

TalentScout

CategoryUid

CategoryRef

CatalogProjectOrderUid

UpworkRemote

BringYourOwn

Example
"JobPosting"
Offers and Contracts

StipendContractTerm

Fields
Field Name Description
id - String!
createDate - String
modifyDate - String
changeDate - String
createdBy - ContractUser
creatorUserType - CreatorType
changedBy - ContractUser
minGuaranteedHours - String
stipendAmount - Money
startDate - String
changingUserType - CreatorType
endDate - String
jobType - JobType
ptcData - PtcData
Example
{
  "id": "xyz789",
  "createDate": "xyz789",
  "modifyDate": "xyz789",
  "changeDate": "abc123",
  "createdBy": ContractUser,
  "creatorUserType": "CLIENT",
  "changedBy": ContractUser,
  "minGuaranteedHours": "abc123",
  "stipendAmount": Money,
  "startDate": "abc123",
  "changingUserType": "CLIENT",
  "endDate": "abc123",
  "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

Fields
Field Name Description
id - ID!
createdDateTime - String
modifiedDateTime - String
amount - Money
sequenceId - Int
Example
{
  "id": 4,
  "createdDateTime": "abc123",
  "modifiedDateTime": "abc123",
  "amount": Money,
  "sequenceId": 987
}
Offers and Contracts

SubmissionEvent

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

SubmissionMessage

Fields
Field Name Description
createdDateTime - String
message - String
Example
{
  "createdDateTime": "xyz789",
  "message": "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

Fields
Input Field Description
vendorId - ID!
startDateBefore - String
endDateAfter - String
Example
{
  "vendorId": "4",
  "startDateBefore": "abc123",
  "endDateAfter": "abc123"
}
Offers and Contracts

WorkflowOfferState

Values
Enum Value Description

Submitted

Active

Expired

Declined

Withdrawn

Accepted

Replaced

Canceled

ApprovalSuceeded

ApprovalFailed

OnboardingSucceded

OnboardingFailed

Draft

Committed

Example
"Submitted"

Reporting

BillRate

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": 987.65,
  "code": "xyz789",
  "offerRef": 4
}
Reporting

BPAPrivateDataFilter

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

Cell

Fields
Field Name Description
timestamp - Int!
date - String!
manual - Boolean!
overtime - Boolean!
memo - String
Example
{
  "timestamp": 987,
  "date": "xyz789",
  "manual": true,
  "overtime": false,
  "memo": "abc123"
}
Reporting

TimeReport

Fields
Field Name Description
dateWorkedOn - String! Date of the time report
weekWorkedOn - String! Week of the time report
monthWorkedOn - String! Month of the time report
yearWorkedOn - String! Year of the time report
freelancer - GenericUser User associated with the time report
team - GenericOrganization Team associated with the time report
contractOffer - ContractOfferResult Contract-Offer associated with the time report Use contract
contract - ContractDetails
termId - ID the active termId of the contract
task - String Task associated with the time report
taskDescription - String Task description associated with the time report
memo - String Memo associated with the time report
totalHoursWorked - Float Total hours worked for the time report
totalCharges - Float Total charges made for the time report
totalOnlineHoursWorked - Float Total online hours worked for the time report
totalOnlineCharge - Float Total charges made for online work for the time report
totalOfflineHoursWorked - Float Total offline hours worked for the time report
totalOfflineCharge - Float Total charges made for offline work for the time report
billRate - BillRate Bill rate associated with the time report
Example
{
  "dateWorkedOn": "xyz789",
  "weekWorkedOn": "abc123",
  "monthWorkedOn": "xyz789",
  "yearWorkedOn": "abc123",
  "freelancer": GenericUser,
  "team": GenericOrganization,
  "contractOffer": ContractOfferResult,
  "contract": ContractDetails,
  "termId": 4,
  "task": "abc123",
  "taskDescription": "xyz789",
  "memo": "abc123",
  "totalHoursWorked": 987.65,
  "totalCharges": 987.65,
  "totalOnlineHoursWorked": 987.65,
  "totalOnlineCharge": 987.65,
  "totalOfflineHoursWorked": 123.45,
  "totalOfflineCharge": 123.45,
  "billRate": BillRate
}
Reporting

TimeReportConnection

Fields
Field Name Description
totalCount - Int
edges - [TimeReportEdge!]
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [TimeReportEdge],
  "pageInfo": PageInfo
}
Reporting

TimeReportEdge

Fields
Field Name Description
node - TimeReport!
cursor - String!
Example
{
  "node": TimeReport,
  "cursor": "abc123"
}
Reporting

TimeReportFilter

Fields
Input Field Description
organizationId_eq - ID!
timeReportDate_bt - DateTimeRange!
Example
{
  "organizationId_eq": "4",
  "timeReportDate_bt": DateTimeRange
}
Reporting

TransactionHistory

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

TransactionHistoryDetail

Fields
Field Name Description
transactionHistoryRow - [TransactionHistoryRow!]
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 format 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": ["abc123"]
}
Reporting

TransactionHistoryRow

Fields
Field Name Description
rowNumber - Int
runningChargeableBalance - Money
recordId - ID
remainder - String
amountCreditedToUser - Money
transactionReviewDueDate - String
transactionCreationDate - String
relatedUserPaymentMethod - Int
accountingSubtype - String
descriptionUI - String
relatedAssignment - Int
amountSentInOrigCurrency - Money
paymentGuaranteed - Boolean
fixedPriceEARMark - Int
relatedTransactionId - ID
relatedInvoiceId - ID
fullyPaidDate - String
type - String
transactionAmount - Money
relatedAccountingEntity - Int
description - String
purchaseOrderNumber - String
assignmentAgencyName - String
assignmentCompanyName - String
assignmentDeveloperName - String
assignmentTeamCompanyId - ID
assignmentTeamCompanyReference - Int
assignmentTeamId - ID
assignmentTeamReference - Int
assignmentTeamUserId - ID
assignmentTeamUserReference - Int
payment - Money
paymentStatus - String
prefix - String
Example
{
  "rowNumber": 123,
  "runningChargeableBalance": Money,
  "recordId": 4,
  "remainder": "abc123",
  "amountCreditedToUser": Money,
  "transactionReviewDueDate": "xyz789",
  "transactionCreationDate": "abc123",
  "relatedUserPaymentMethod": 123,
  "accountingSubtype": "abc123",
  "descriptionUI": "xyz789",
  "relatedAssignment": 987,
  "amountSentInOrigCurrency": Money,
  "paymentGuaranteed": true,
  "fixedPriceEARMark": 987,
  "relatedTransactionId": "4",
  "relatedInvoiceId": "4",
  "fullyPaidDate": "xyz789",
  "type": "xyz789",
  "transactionAmount": Money,
  "relatedAccountingEntity": 987,
  "description": "xyz789",
  "purchaseOrderNumber": "xyz789",
  "assignmentAgencyName": "abc123",
  "assignmentCompanyName": "abc123",
  "assignmentDeveloperName": "abc123",
  "assignmentTeamCompanyId": "4",
  "assignmentTeamCompanyReference": 123,
  "assignmentTeamId": 4,
  "assignmentTeamReference": 123,
  "assignmentTeamUserId": 4,
  "assignmentTeamUserReference": 987,
  "payment": Money,
  "paymentStatus": "abc123",
  "prefix": "xyz789"
}
Reporting

WorkDay

Fields
Field Name Description
workDiary - WorkDiary
date - String!
Example
{
  "workDiary": WorkDiary,
  "date": "abc123"
}
Reporting

WorkDiary

Fields
Field Name Description
cells - [Cell!]
Example
{"cells": [Cell]}

Job Posts

AccessType

Values
Enum Value Description

PUBLIC_INDEX

ACCESS_PUBLIC

ACCESS_PRIVATE

Example
"PUBLIC_INDEX"
Job Posts

ApplicationsBidStats

Fields
Field Name Description
avgRateBid - Money
minRateBid - Money
maxRateBid - Money
avgInterviewedRateBid - Money
Example
{
  "avgRateBid": Money,
  "minRateBid": Money,
  "maxRateBid": Money,
  "avgInterviewedRateBid": Money
}
Job Posts

Area

Fields
Field Name Description
id - ID!
areaType - AreaType
name - String
Example
{
  "id": "4",
  "areaType": "CITY",
  "name": "xyz789"
}
Job Posts

AreaFilter

Fields
Input Field Description
latitude - Float!
longitude - Float!
radius - Float!
Example
{"latitude": 123.45, "longitude": 123.45, "radius": 987.65}
Job Posts

AreaType

Values
Enum Value Description

CITY

AREA

POSTAL_CODE

Example
"CITY"
Job Posts

BrowserInfo

Fields
Input Field Description
colorDepth - Int
javaEnabled - Boolean
javaScriptEnabled - Boolean
language - String
screenHeight - Int
screenWidth - Int
timeZoneOffset - Int
userAgent - String
acceptHeader - String
Example
{
  "colorDepth": 987,
  "javaEnabled": true,
  "javaScriptEnabled": true,
  "language": "abc123",
  "screenHeight": 987,
  "screenWidth": 987,
  "timeZoneOffset": 123,
  "userAgent": "xyz789",
  "acceptHeader": "abc123"
}
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

Values
Enum Value Description

ALL

INDIVIDUALS

AGENCIES

Example
"ALL"
Job Posts

CustomFieldDropDown

Fields
Input Field Description
id - ID
customFieldId - ID
value - String
displayValue - String
orderIndex - Int
description - String
inUse - Boolean
active - Boolean
aclType - DropdownAclType
teamRids - [String]
Example
{
  "id": 4,
  "customFieldId": "4",
  "value": "abc123",
  "displayValue": "abc123",
  "orderIndex": 987,
  "description": "xyz789",
  "inUse": false,
  "active": false,
  "aclType": "COMPANY",
  "teamRids": ["xyz789"]
}
Job Posts

CustomFieldsResponse

Fields
Input Field Description
id - ID
customFieldId - ID
value - String
displayValue - String
Example
{
  "id": 4,
  "customFieldId": "4",
  "value": "xyz789",
  "displayValue": "abc123"
}
Job Posts

CustomJobPostSkill

Fields
Field Name Description
parentSkillId - ID
freeText - String
Example
{"parentSkillId": 4, "freeText": "abc123"}
Job Posts

DropdownAclType

Values
Enum Value Description

COMPANY

TEAM

Example
"COMPANY"
Job Posts

Earning

Values
Enum Value Description

ANY

AT_LEAST_1

AT_LEAST_100

AT_LEAST_1000

AT_LEAST_10000

Example
"ANY"
Job Posts

EngagementType

Values
Enum Value Description

FULL_TIME

PART_TIME

AS_NEEDED

NOT_SURE

Example
"FULL_TIME"
Job Posts

EnglishProficiency

Values
Enum Value Description

ANY

BASIC

CONVERSATIONAL

FLUENT

NATIVE

Example
"ANY"
Job Posts

ExperienceLevel

Values
Enum Value Description

ENTRY_LEVEL

INTERMEDIATE

EXPERT

Example
"ENTRY_LEVEL"
Job Posts

FixedPriceContractTerms

Fields
Field Name Description
amount - Money!
maxAmount - Money
engagementDuration - EngagementDuration
Example
{
  "amount": Money,
  "maxAmount": Money,
  "engagementDuration": EngagementDuration
}
Job Posts

FreelancerClientRelation

Fields
Field Name Description
companyRid - ID!
companyName - String!
edcUserId - ID!
lastContractPlatform - String!
lastContractRid - ID!
lastContractTitle - String!
Example
{
  "companyRid": "4",
  "companyName": "xyz789",
  "edcUserId": "4",
  "lastContractPlatform": "abc123",
  "lastContractRid": 4,
  "lastContractTitle": "abc123"
}
Job Posts

HourlyContractTerms

Fields
Field Name Description
engagementDuration - EngagementDuration
engagementType - EngagementType!
notSureProjectDuration - Boolean
hourlyBudgetType - JobPostingHourlyBudgetType
hourlyBudgetMin - Float
hourlyBudgetMax - Float
Example
{
  "engagementDuration": EngagementDuration,
  "engagementType": "FULL_TIME",
  "notSureProjectDuration": true,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": 987.65,
  "hourlyBudgetMax": 123.45
}
Job Posts

JobActivity

Fields
Field Name Description
lastClientActivity - String
invitesSent - Int!
totalInvitedToInterview - Int!
totalHired - Int!
totalUnansweredInvites - Int!
totalOffered - Int!
totalRecommended - Int
Example
{
  "lastClientActivity": "xyz789",
  "invitesSent": 123,
  "totalInvitedToInterview": 123,
  "totalHired": 123,
  "totalUnansweredInvites": 123,
  "totalOffered": 123,
  "totalRecommended": 987
}
Job Posts

JobDuration

Values
Enum Value Description

WEEK

MONTH

QUARTER

SEMESTER

ONGOING

Example
"WEEK"
Job Posts

JobFeaturePrediction

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": true,
  "opening": "abc123"
}
Job Posts

JobPosting

Description

Management side JobPosting information

Fields
Field Name Description
id - ID!
info - JobPostingInfo
visibility - AccessType
ownership - JobPostingOwnership
content - JobPostingContent
attachment - [JobPostingAttachment!]
classification - JobPostingClassification
segmentationData - JobPostingSegmentationData
contractTerms - JobPostingContractTerms Contract information of the Posting
contractorSelection - JobPostingContractorSelection
additionalInfo - JobPostingAdditionalInfo
ptcInfo - JobPostingPtcInfo
proposalsStatistics - ProposalsStatistics
customFields - [JobPostingCustomFields]
Example
{
  "id": 4,
  "info": JobPostingInfo,
  "visibility": "PUBLIC_INDEX",
  "ownership": JobPostingOwnership,
  "content": JobPostingContent,
  "attachment": [JobPostingAttachment],
  "classification": JobPostingClassification,
  "segmentationData": JobPostingSegmentationData,
  "contractTerms": JobPostingContractTerms,
  "contractorSelection": JobPostingContractorSelection,
  "additionalInfo": JobPostingAdditionalInfo,
  "ptcInfo": JobPostingPtcInfo,
  "proposalsStatistics": ProposalsStatistics,
  "customFields": [JobPostingCustomFields]
}
Job Posts

JobPostingAccess

Values
Enum Value Description

PUBLIC_INDEX

PUBLIC

PRIVATE

Example
"PUBLIC_INDEX"
Job Posts

JobPostingAdditionalInfo

Fields
Field Name Description
clientNumberOfHiresOnCreate - Int
clientTotalSpentOnCreate - Money
directHire - Boolean
invitePost - Boolean
lastBuyerActivity - String
Example
{
  "clientNumberOfHiresOnCreate": 987,
  "clientTotalSpentOnCreate": Money,
  "directHire": false,
  "invitePost": false,
  "lastBuyerActivity": "abc123"
}
Job Posts

JobPostingAdditionalRequest

Fields
Input Field Description
directHire - Boolean
invitePost - Boolean
earlyEngagement - Boolean
earlyEngagementVisited - Boolean
Example
{
  "directHire": false,
  "invitePost": true,
  "earlyEngagement": true,
  "earlyEngagementVisited": true
}
Job Posts

JobPostingAdditionalSkillInput

Fields
Input Field Description
skillId - String
freetext - String
legacyConvertedSkill - Boolean
Example
{
  "skillId": "abc123",
  "freetext": "xyz789",
  "legacyConvertedSkill": false
}
Job Posts

JobPostingAttachment

Fields
Field Name Description
id - ID!
sequenceNumber - Int!
fileName - String!
link - String
afsFileLink - String
contentLength - Int
contentType - String
createdDateTime - String
Example
{
  "id": 4,
  "sequenceNumber": 123,
  "fileName": "xyz789",
  "link": "abc123",
  "afsFileLink": "abc123",
  "contentLength": 123,
  "contentType": "abc123",
  "createdDateTime": "xyz789"
}
Job Posts

JobPostingCategory

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

JobPostingClassification

Description

classification info attached with the job posting management side

Fields
Field Name Description
category - JobPostingCategory
subCategory - JobSubPostingCategory
skills - [Skill!]
customSkills - [CustomJobPostSkill!]
additionalSkills - [Skill!]
occupationId - ID
customAdditionalSkills - [String!]
Example
{
  "category": JobPostingCategory,
  "subCategory": JobSubPostingCategory,
  "skills": [Skill],
  "customSkills": [CustomJobPostSkill],
  "additionalSkills": [Skill],
  "occupationId": 4,
  "customAdditionalSkills": ["xyz789"]
}
Job Posts

JobPostingConnection

Fields
Field Name Description
totalCount - Int
edges - [JobPostingEdge]!
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [JobPostingEdge],
  "pageInfo": PageInfo
}
Job Posts

JobPostingContent

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

JobPostingContractorSelection

Fields
Field Name Description
proposalRequirement - JobPostingProposalRequirements
qualification - JobPostingQualification
location - JobPostingLocation
Example
{
  "proposalRequirement": JobPostingProposalRequirements,
  "qualification": JobPostingQualification,
  "location": JobPostingLocation
}
Job Posts

JobPostingContractTerms

Fields
Field Name Description
contractStartDate - String Start date for the contract terms formatted according to ISO-8601
contractEndDate - String End date for the contract terms formatted according to ISO-8601
contractType - ContractType!
onSiteType - OnSiteType
personsToHire - Int
experienceLevel - ExperienceLevel
fixedPriceContractTerms - FixedPriceContractTerms
hourlyContractTerms - HourlyContractTerms
Example
{
  "contractStartDate": "xyz789",
  "contractEndDate": "xyz789",
  "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
Example
{
  "organizationId": "4",
  "jobPostingInfo": JobPostingRequestInfo,
  "qualifications": JobPostingQualificationRequest,
  "questions": [JobPostingQuestionRequest],
  "segmentationData": [JobPostingSegmentationRequest],
  "attachmentIds": ["4"],
  "ptcInfo": JobPostingPtcInfoRequest,
  "savePtcInfo": false,
  "invitePost": true,
  "jobPostingAdditionalRequest": JobPostingAdditionalRequest,
  "sandsJobPost": SandsJobPostRequest,
  "customFields": JobPostingCustomFieldsRequest
}
Job Posts

JobPostingCreateResponse

Fields
Field Name Description
id - ID!
qualificationsSaved - Boolean!
skillsSaved - Boolean!
questionsSaved - Boolean!
segmentationDataSaved - Boolean!
attachmentsSaved - Boolean!
ptcInfoSaved - Boolean!
jobPostingAdditional - Boolean!
sandsJobPostSaved - Boolean!
customFieldsSaved - Boolean!
Example
{
  "id": "4",
  "qualificationsSaved": true,
  "skillsSaved": false,
  "questionsSaved": false,
  "segmentationDataSaved": false,
  "attachmentsSaved": false,
  "ptcInfoSaved": false,
  "jobPostingAdditional": false,
  "sandsJobPostSaved": false,
  "customFieldsSaved": false
}
Job Posts

JobPostingCustomFields

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

Fields
Input Field Description
responses - [CustomFieldsResponse]
newDropdowns - [CustomFieldDropDown]
Example
{
  "responses": [CustomFieldsResponse],
  "newDropdowns": [CustomFieldDropDown]
}
Job Posts

JobPostingEdge

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

JobPostingHourlyBudgetType

Values
Enum Value Description

DEFAULT

MANUAL

NOT_PROVIDED

Example
"DEFAULT"
Job Posts

JobPostingInfo

Fields
Field Name Description
status - JobPostingStatus
company - CurrentOrganization
auditTime - AuditTime
hidden - Boolean
siteSource - String
keepOpenOnHire - Boolean
draftJobPostingId - ID
publishDateTime - String Publish date time of the posting formatted according to ISO-8601
filledDateTime - String
sourcingUpdateForbidden - Boolean
sourcingUpdateCount - Int
premium - Boolean
legacyCiphertext - String
hideBudget - Boolean
categoryId - ID
groupId - ID
notSureFreelancersToHire - Boolean
notSureExperienceLevel - Boolean
hourlyBudgetType - JobPostingHourlyBudgetType
hourlyBudgetMin - Money
hourlyBudgetMax - Money
changedByUser - GenericUser
reasonId - ID
reasonName - String
Example
{
  "status": "REQUESTED",
  "company": CurrentOrganization,
  "auditTime": AuditTime,
  "hidden": false,
  "siteSource": "abc123",
  "keepOpenOnHire": true,
  "draftJobPostingId": 4,
  "publishDateTime": "xyz789",
  "filledDateTime": "abc123",
  "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": "xyz789"
}
Job Posts

JobPostingLocation

Fields
Field Name Description
countries - [String!]
states - [String!]
timezones - [String!]
localCheckRequired - Boolean
localMarket - Boolean
areas - [Area!]
notSureLocationPreference - Boolean
localDescription - String
localFlexibilityDescription - String
address - String
Example
{
  "countries": ["abc123"],
  "states": ["abc123"],
  "timezones": ["abc123"],
  "localCheckRequired": false,
  "localMarket": true,
  "areas": [Area],
  "notSureLocationPreference": false,
  "localDescription": "xyz789",
  "localFlexibilityDescription": "xyz789",
  "address": "abc123"
}
Job Posts

JobPostingLocationRequest

Fields
Input Field Description
areaType - AreaType
name - String
Example
{"areaType": "CITY", "name": "xyz789"}
Job Posts

JobPostingOwnership

Description

Owner of the job

Fields
Field Name Description
user - GenericUser
clientCompany - CurrentOrganization
company - GenericOrganization
team - GenericOrganization
Example
{
  "user": GenericUser,
  "clientCompany": CurrentOrganization,
  "company": GenericOrganization,
  "team": GenericOrganization
}
Job Posts

JobPostingProposalRequirements

Fields
Field Name Description
coverLetterRequired - Boolean
freelancerMilestonesAllowed - Boolean
screeningQuestions - [JobPostingQuestion!]
Example
{
  "coverLetterRequired": true,
  "freelancerMilestonesAllowed": true,
  "screeningQuestions": [JobPostingQuestion]
}
Job Posts

JobPostingPtcInfo

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

JobPostingPtcInfoRequest

Fields
Input Field Description
jobReference - String
talentCloudIds - [ID!]
visibility - JobPostingPtcVisibility
employerCompanyReference - String
status - JobPostingPtcStatus
purchaseOrderId - ID
locationCheckRequired - Boolean
countries - [String!]
onSiteType - OnSiteType
onSiteCity - String
onSiteCountry - String
Example
{
  "jobReference": "xyz789",
  "talentCloudIds": [4],
  "visibility": "ANY_USER",
  "employerCompanyReference": "abc123",
  "status": "OPEN",
  "purchaseOrderId": "4",
  "locationCheckRequired": true,
  "countries": ["abc123"],
  "onSiteType": "REMOTE",
  "onSiteCity": "abc123",
  "onSiteCountry": "xyz789"
}
Job Posts

JobPostingPtcStatus

Values
Enum Value Description

OPEN

CANCEL

FILED

DELETED_DRAFT

VERIFICATION_PENDING

PENDING_PAYMENT_METHOD

IN_REVIEW

Example
"OPEN"
Job Posts

JobPostingPtcVisibility

Values
Enum Value Description

ANY_USER

MEMBER_SELECTED_CLOUD

ONLY_INVITED

Example
"ANY_USER"
Job Posts

JobPostingQualification

Fields
Field Name Description
contractorType - ContractorType
englishProficiency - EnglishProficiency
hasPortfolio - Boolean
risingTalent - Boolean
jobSuccessScore - Int
earnings - Earning
preferredGroups - [PreferredGroup!]
preferredTests - [PreferredTest]
Example
{
  "contractorType": "ALL",
  "englishProficiency": "ANY",
  "hasPortfolio": true,
  "risingTalent": 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
Example
{
  "oDeskHours": 987,
  "testId": 4,
  "locationRegionId": 4,
  "hasPortfolio": false,
  "contractorType": "ALL",
  "jobSuccessScore": 987,
  "englishProficiency": "ANY",
  "risingTalent": true,
  "countries": ["xyz789"],
  "regions": ["abc123"],
  "locationCheckRequired": false,
  "states": ["xyz789"],
  "timezones": ["xyz789"],
  "earnings": "ANY",
  "localMarket": true,
  "onSiteType": "REMOTE",
  "locations": [JobPostingLocationRequest],
  "localDescription": "xyz789",
  "localFlexibilityDescription": "abc123"
}
Job Posts

JobPostingQuestion

Fields
Field Name Description
id - ID!
question - String
user - GenericUser
questionType - QuestionType
auditTime - AuditTime
Example
{
  "id": "4",
  "question": "abc123",
  "user": GenericUser,
  "questionType": "EXPERIENCE",
  "auditTime": AuditTime
}
Job Posts

JobPostingQuestionRequest

Fields
Input Field Description
question - String!
type - QuestionType
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
contractType - ContractType Type of the contract, Hourly/Fixed
amount - String Amount as string containing exact value with dot symbol (".") is used to separate integer and fractional parts
coverLetterRequired - Boolean
access - AccessType
experienceLevel - ExperienceLevel
freelancersToHire - Int
categoryId - ID Consumers can use the following query for category and group ID

ontologyCategories {
  id
  preferredLabel
  subcategories {
    id
    preferredLabel
}

It's equal to subcategories.id (eg Web Development)
groupId - ID Equal to ontologyCategories.id (eg Web, Mobile & Software Dev) (see example in categoryId)
endDate - String End date for the Posting formatted according to ISO-8601
startDate - String Start date for the Posting formatted according to ISO-8601
siteSource - String
maxAmount - String Amount as string containing exact value with dot symbol (".") is used to separate integer and fractional parts
keepOpenOnHire - Boolean
draftJobPostingId - ID
freelancerMilestonesAllowed - Boolean
premium - Boolean
hideBudget - Boolean
notSureFreelancersToHire - Boolean
notSureProjectDuration - Boolean
notSureExperienceLevel - Boolean
notSureLocationPreference - Boolean
hourlyBudgetType - JobPostingHourlyBudgetType
hourlyBudgetMin - String Hourly min budget as string containing exact value with dot symbol (".") is used to separate integer and fractional parts
hourlyBudgetMax - String Hourly max budget as string containing exact value with dot symbol (".") is used to separate integer and fractional parts
Example
{
  "title": "xyz789",
  "description": "xyz789",
  "engagementType": "FULL_TIME",
  "durationId": "4",
  "status": "REQUESTED",
  "contractType": "HOURLY",
  "amount": "xyz789",
  "coverLetterRequired": true,
  "access": "PUBLIC_INDEX",
  "experienceLevel": "ENTRY_LEVEL",
  "freelancersToHire": 123,
  "categoryId": "4",
  "groupId": 4,
  "endDate": "xyz789",
  "startDate": "abc123",
  "siteSource": "abc123",
  "maxAmount": "abc123",
  "keepOpenOnHire": true,
  "draftJobPostingId": "4",
  "freelancerMilestonesAllowed": true,
  "premium": false,
  "hideBudget": true,
  "notSureFreelancersToHire": false,
  "notSureProjectDuration": true,
  "notSureExperienceLevel": false,
  "notSureLocationPreference": true,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": "abc123",
  "hourlyBudgetMax": "xyz789"
}
Job Posts

JobPostingSegmentationData

Fields
Field Name Description
segmentationValues - [JobPostingSegmentationValue!]
Example
{"segmentationValues": [JobPostingSegmentationValue]}
Job Posts

JobPostingSegmentationRequest

Fields
Input Field Description
segmentationValueId - ID!
customValue - String
Example
{
  "segmentationValueId": "4",
  "customValue": "abc123"
}
Job Posts

JobPostingSegmentationValue

Fields
Field Name Description
id - ID!
label - String
referenceName - String
sortOrder - Int
segmentationType - SegmentationType
auditTime - AuditTime
skill - Skill
Example
{
  "id": "4",
  "label": "xyz789",
  "referenceName": "xyz789",
  "sortOrder": 987,
  "segmentationType": SegmentationType,
  "auditTime": AuditTime,
  "skill": Skill
}
Job Posts

JobPostingsFilter

Description

Input filter for searching Job Posting for a given organization

Fields
Input Field Description
jobPostingId_eq - ID Search by job posting id
organizationId_eq - ID Search all jobs posted by the given Organization
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
{
  "jobPostingId_eq": "4",
  "organizationId_eq": 4,
  "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": "xyz789",
  "createdDateTimeTo_eq": "abc123"
}
Job Posts

JobPostingSkillInput

Fields
Input Field Description
parentSkillId - String!
skillId - String
freetext - String
boolAnswer - Boolean
legacyConvertedSkill - Boolean
Example
{
  "parentSkillId": "abc123",
  "skillId": "abc123",
  "freetext": "abc123",
  "boolAnswer": true,
  "legacyConvertedSkill": false
}
Job Posts

JobPostingStatus

Values
Enum Value Description

REQUESTED

CANCELLED

FILLED

DRAFT

DELETED_DRAFT

VERIFICATION_PENDING

PENDING_PAYMENT_METHOD

IN_REVIEW

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
sandsJobPost - SandsJobPostRequest
Example
{
  "organizationId": "4",
  "jobPostingInfo": JobPostingRequestInfo,
  "qualifications": JobPostingQualificationRequest,
  "questions": [JobPostingQuestionRequest],
  "segmentationData": [JobPostingSegmentationRequest],
  "attachmentIds": ["4"],
  "ptcInfo": JobPostingPtcInfoRequest,
  "savePtcInfo": false,
  "invitePost": false,
  "sandsJobPost": SandsJobPostRequest
}
Job Posts

JobPostingUpdateResponse

Fields
Field Name Description
id - ID!
qualificationsSaved - Boolean!
skillsSaved - Boolean!
questionsSaved - Boolean!
segmentationDataSaved - Boolean!
attachmentsSaved - Boolean!
ptcInfoSaved - Boolean!
sandsJobPostSaved - Boolean!
Example
{
  "id": 4,
  "qualificationsSaved": false,
  "skillsSaved": true,
  "questionsSaved": true,
  "segmentationDataSaved": false,
  "attachmentsSaved": true,
  "ptcInfoSaved": false,
  "sandsJobPostSaved": true
}
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": true,
  "fields": ["xyz789"]
}
Job Posts

JobSubPostingCategory

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

MarketplaceAdditionalSearchInfo

Fields
Field Name Description
highlightTitle - String
Example
{"highlightTitle": "abc123"}
Job Posts

MarketplaceContractorSelection

Fields
Field Name Description
proposalRequirement - MarketplaceProposalRequirements
qualification - MarketplaceQualification
location - MarketplaceLocation
Example
{
  "proposalRequirement": MarketplaceProposalRequirements,
  "qualification": MarketplaceQualification,
  "location": MarketplaceLocation
}
Job Posts

MarketplaceContractTerms

Fields
Field Name Description
contractStartDate - String Start date for the contract terms formatted according to ISO-8601
contractEndDate - String End date for the contract terms formatted according to ISO-8601
contractType - ContractType!
onSiteType - OnSiteType
personsToHire - Int!
experienceLevel - ExperienceLevel
fixedPriceContractTerms - FixedPriceContractTerms
hourlyContractTerms - HourlyContractTerms
notSurePersonsToHire - Boolean
notSureExperiencelevel - Boolean
Example
{
  "contractStartDate": "abc123",
  "contractEndDate": "abc123",
  "contractType": "HOURLY",
  "onSiteType": "REMOTE",
  "personsToHire": 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 withing 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 withing 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
area_eq - AreaFilter
preserveFacet_eq - String
userLocationMatch_eq - Boolean
visitorCountry_eq - String
Example
{
  "searchExpression_eq": "xyz789",
  "skillExpression_eq": "xyz789",
  "titleExpression_eq": "xyz789",
  "searchTerm_eq": SearchTerm,
  "categoryIds_any": ["4"],
  "subcategoryIds_any": [4],
  "occupationIds_any": [4],
  "ontologySkillIds_all": ["4"],
  "sinceId_eq": "abc123",
  "maxId_eq": "xyz789",
  "jobType_eq": "HOURLY",
  "duration_any": ["WEEK"],
  "workload_eq": "FULL_TIME",
  "clientHiresRange_eq": IntRange,
  "clientFeedBackRange_eq": FloatRange,
  "budgetRange_eq": IntRange,
  "verifiedPaymentOnly_eq": false,
  "previousClients_eq": false,
  "experienceLevel_eq": "ENTRY_LEVEL",
  "locations_any": ["xyz789"],
  "cityId_any": ["abc123"],
  "zipCodeId_any": ["abc123"],
  "radius_eq": 123,
  "areaId_any": ["xyz789"],
  "timezone_eq": "abc123",
  "usState_eq": "xyz789",
  "daysPosted_eq": 987,
  "jobPostingAccess": "PUBLIC_INDEX",
  "ptcIds_any": ["4"],
  "ptcOnly_eq": true,
  "enterpriseOnly_eq": false,
  "proposalRange_eq": IntRange,
  "pagination_eq": Pagination,
  "area_eq": AreaFilter,
  "preserveFacet_eq": "abc123",
  "userLocationMatch_eq": true,
  "visitorCountry_eq": "abc123"
}
Job Posts

MarketplaceJobPosting

Fields
Field Name Description
id - ID!
workFlowState - MarketplacePostingWorkFlowState
ownership - MarketplacePostingOwnership
annotations - MarketplacePostingAnnotations
activityStat - MarketplacePostingActivityStat
content - MarketplaceJobPostingContent
attachments - [MarketplacePostingAttachment!]
classification - MarketplacePostingClassification
segmentationData - MarketplaceSegmentationData
contractTerms - MarketplaceContractTerms
contractorSelection - MarketplaceContractorSelection
additionalSearchInfo - MarketplaceAdditionalSearchInfo
clientCompany - PrivateCompanyInfo Company profile of the client Use clientCompanyPublic for company information
clientCompanyPublic - MarketplacePublicCompanyInfo
canClientReceiveContractProposal - Boolean! Indicates whether there is something that would prevent client from receiving contract proposal
clientProposals - ClientProposalsConnection! list of client proposals
Arguments
sortAttribute - ClientProposalSortAttribute
pagination - Pagination
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!]
pagination - Pagination
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": false,
  "clientProposals": ClientProposalsConnection,
  "customFields": CustomFieldsConnection
}
Job Posts

MarketplaceJobPostingContent

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

MarketplaceJobPostingsContents

Fields
Field Name Description
id - ID!
ciphertext - String!
title - String!
description - String!
publishedDateTime - String!
annotations - MarketplacePostingAnnotations
Example
{
  "id": 4,
  "ciphertext": "abc123",
  "title": "xyz789",
  "description": "xyz789",
  "publishedDateTime": "xyz789",
  "annotations": MarketplacePostingAnnotations
}
Job Posts

MarketplaceJobPostingSearchClientInfo

Fields
Field Name Description
memberSinceDateTime - String Deprecated legacy field
totalHires - Int!
totalPostedJobs - Int! past_hires
totalSpent - Money! jobs_posted
verificationStatus - ClientVerificationStatus total_spent
location - MarketPlaceJobSearchLocation payment_verification_status
totalReviews - Int!
totalFeedback - Float! reviews_count
companyRid - ID! feedback
companyName - String
edcUserId - ID!
lastContractPlatform - String
lastContractRid - ID
lastContractTitle - String
companyOrgUid - ID!
hasFinancialPrivacy - Boolean!
Example
{
  "memberSinceDateTime": "abc123",
  "totalHires": 987,
  "totalPostedJobs": 987,
  "totalSpent": Money,
  "verificationStatus": "VERIFIED",
  "location": MarketPlaceJobSearchLocation,
  "totalReviews": 123,
  "totalFeedback": 987.65,
  "companyRid": 4,
  "companyName": "xyz789",
  "edcUserId": "4",
  "lastContractPlatform": "abc123",
  "lastContractRid": 4,
  "lastContractTitle": "xyz789",
  "companyOrgUid": "4",
  "hasFinancialPrivacy": true
}
Job Posts

MarketplaceJobPostingSearchConnection

Fields
Field Name Description
totalCount - Int
edges - [MarketplaceJobpostingSearchEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [MarketplaceJobpostingSearchEdge],
  "pageInfo": PageInfo
}
Job Posts

MarketplaceJobpostingSearchEdge

Fields
Field Name Description
cursor - String!
node - MarketplaceJobPostingSearchResult!
Example
{
  "cursor": "abc123",
  "node": MarketplaceJobPostingSearchResult
}
Job Posts

MarketplaceJobPostingSearchOccupation

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

MarketplaceJobPostingSearchOccupations

Fields
Field Name Description
category - MarketplaceJobPostingSearchOccupation!
subCategories - [MarketplaceJobPostingSearchOccupation]
occupationService - MarketplaceJobPostingSearchOccupation
Example
{
  "category": MarketplaceJobPostingSearchOccupation,
  "subCategories": [
    MarketplaceJobPostingSearchOccupation
  ],
  "occupationService": MarketplaceJobPostingSearchOccupation
}
Job Posts

MarketplaceJobPostingSearchRelevance

Fields
Field Name Description
id - ID!
effectiveCandidates - Int!
recommendedEffectiveCandidates - Int!
uniqueImpressions - Int!
publishTime - String
hoursInactive - Int!
Example
{
  "id": 4,
  "effectiveCandidates": 123,
  "recommendedEffectiveCandidates": 123,
  "uniqueImpressions": 987,
  "publishTime": "abc123",
  "hoursInactive": 123
}
Job Posts

MarketplaceJobPostingSearchResult

Fields
Field Name Description
id - ID!
job - MarketplaceJobPosting
title - String!
description - String!
ciphertext - String!
duration - JobDuration
durationLabel - String
engagement - String
amount - Money!
recordNumber - String!
experienceLevel - FreelancerProfileExperienceLevel!
category - String contractorTier
subcategory - String
freelancersToHire - Int!
relevance - MarketplaceJobPostingSearchRelevance!
enterprise - Boolean!
relevanceEncoded - String!
totalApplicants - Int!
preferredFreelancerLocation - [String]
preferredFreelancerLocationMandatory - Boolean
premium - Boolean!
clientNotSureFields - [String]
clientPrivateFields - [String]
applied - Boolean!
createdDateTime - String!
publishedDateTime - String!
renewedDateTime - String
client - MarketplaceJobPostingSearchClientInfo!
skills - [MarketplaceJobPostingSearchSkill]!
occupations - MarketplaceJobPostingSearchOccupations
hourlyBudgetType - JobPostingHourlyBudgetType
hourlyBudgetMin - Money
hourlyBudgetMax - Money
localJobUserDistance - String
weeklyBudget - Money
engagementDuration - EngagementDuration
totalFreelancersToHire - Int
teamId - ID
freelancerClientRelation - FreelancerClientRelation
Example
{
  "id": "4",
  "job": MarketplaceJobPosting,
  "title": "abc123",
  "description": "xyz789",
  "ciphertext": "abc123",
  "duration": "WEEK",
  "durationLabel": "xyz789",
  "engagement": "xyz789",
  "amount": Money,
  "recordNumber": "xyz789",
  "experienceLevel": "NONE",
  "category": "abc123",
  "subcategory": "abc123",
  "freelancersToHire": 987,
  "relevance": MarketplaceJobPostingSearchRelevance,
  "enterprise": false,
  "relevanceEncoded": "xyz789",
  "totalApplicants": 123,
  "preferredFreelancerLocation": ["xyz789"],
  "preferredFreelancerLocationMandatory": false,
  "premium": true,
  "clientNotSureFields": ["xyz789"],
  "clientPrivateFields": ["xyz789"],
  "applied": true,
  "createdDateTime": "xyz789",
  "publishedDateTime": "xyz789",
  "renewedDateTime": "abc123",
  "client": MarketplaceJobPostingSearchClientInfo,
  "skills": [MarketplaceJobPostingSearchSkill],
  "occupations": MarketplaceJobPostingSearchOccupations,
  "hourlyBudgetType": "DEFAULT",
  "hourlyBudgetMin": Money,
  "hourlyBudgetMax": Money,
  "localJobUserDistance": "abc123",
  "weeklyBudget": Money,
  "engagementDuration": EngagementDuration,
  "totalFreelancersToHire": 123,
  "teamId": "4",
  "freelancerClientRelation": FreelancerClientRelation
}
Job Posts

MarketplaceJobPostingSearchSkill

Fields
Field Name Description
id - ID!
name - String!
prettyName - String!
highlighted - Boolean
Example
{
  "id": "4",
  "name": "xyz789",
  "prettyName": "abc123",
  "highlighted": true
}
Job Posts

MarketplaceJobPostingSearchSortAttribute

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

MarketplaceJobPostingSearchSortField

Values
Enum Value Description

RECENCY

RELEVANCE

CLIENT_TOTAL_CHARGE

CLIENT_RATING

Example
"RECENCY"
Job Posts

MarketplaceJobPostingSearchType

Values
Enum Value Description

USER_JOBS_SEARCH

JOBS_FEED

USER_SITE_SEARCH_RSS

Example
"USER_JOBS_SEARCH"
Job Posts

MarketPlaceJobSearchLocation

Fields
Field Name Description
city - String
country - String
timezone - String
state - String
offsetToUTC - String
Example
{
  "city": "xyz789",
  "country": "abc123",
  "timezone": "xyz789",
  "state": "abc123",
  "offsetToUTC": "abc123"
}
Job Posts

MarketplaceLocation

Fields
Field Name Description
countries - [String!]
states - [String!]
timezones - [String!]
localCheckRequired - Boolean
localMarket - Boolean
areas - [Area!]
notSureLocationPreference - Boolean
localDescription - String
localFlexibilityDescription - String
Example
{
  "countries": ["xyz789"],
  "states": ["xyz789"],
  "timezones": ["abc123"],
  "localCheckRequired": false,
  "localMarket": false,
  "areas": [Area],
  "notSureLocationPreference": true,
  "localDescription": "xyz789",
  "localFlexibilityDescription": "abc123"
}
Job Posts

MarketplacePostingActivityStat

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

MarketplacePostingAnnotations

Fields
Field Name Description
tags - [String!]
customFields - [StringMapElement!]
Example
{
  "tags": ["xyz789"],
  "customFields": [StringMapElement]
}
Job Posts

MarketplacePostingAttachment

Fields
Field Name Description
id - ID!
sequenceNumber - Int!
fileName - String!
fileSize - Int!
Example
{
  "id": 4,
  "sequenceNumber": 123,
  "fileName": "xyz789",
  "fileSize": 987
}
Job Posts

MarketplacePostingClassification

Fields
Field Name Description
category - JobCategory
subCategory - JobCategory
occupation - Occupation
skills - [Skill!]
additionalSkills - [Skill!]
Example
{
  "category": JobCategory,
  "subCategory": JobCategory,
  "occupation": Occupation,
  "skills": [Skill],
  "additionalSkills": [Skill]
}
Job Posts

MarketplacePostingOwnership

Fields
Field Name Description
company - GenericOrganization
team - GenericOrganization
Example
{
  "company": GenericOrganization,
  "team": GenericOrganization
}
Job Posts

MarketplacePostingWorkFlowState

Fields
Field Name Description
closeResult - String
status - WorkFlowStateStatus!
Example
{
  "closeResult": "abc123",
  "status": "CLOSED"
}
Job Posts

MarketplaceProposalRequirements

Fields
Field Name Description
coverLetterRequired - Boolean
freelancerMilestonesAllowed - Boolean
screeningQuestions - [MarketplaceQuestion!]
Example
{
  "coverLetterRequired": false,
  "freelancerMilestonesAllowed": false,
  "screeningQuestions": [MarketplaceQuestion]
}
Job Posts

MarketplacePublicCompanyInfo

Fields
Field Name Description
id - ID!
legacyType - OrganizationLegacyType
teamsEnabled - Boolean
canHire - Boolean
hidden - Boolean
includeInStats - Boolean No longer available for orgs
country - Country
state - String
city - String
timezone - String
accountingEntity - String
billingType - BillingType
paymentVerificationStatus - PaymentVerificationStatus use paymentVerification instead
paymentVerification - PaymentVerificationResult
agencyDetails - AgencyDetails
Example
{
  "id": 4,
  "legacyType": "CLIENT",
  "teamsEnabled": false,
  "canHire": false,
  "hidden": false,
  "includeInStats": false,
  "country": Country,
  "state": "abc123",
  "city": "abc123",
  "timezone": "abc123",
  "accountingEntity": "abc123",
  "billingType": "BILL",
  "paymentVerificationStatus": "DEPOSIT_UNSUPPORTED",
  "paymentVerification": PaymentVerificationResult,
  "agencyDetails": AgencyDetails
}
Job Posts

MarketplaceQualification

Fields
Field Name Description
contractorType - ContractorType
englishProficiency - EnglishProficiency
hasPortfolio - Boolean
hoursWorked - Int
risingTalent - Boolean
jobSuccessScore - Int
minEarning - Earning
preferredGroups - [PreferredGroup!]
preferenceTests - [PreferredTest]
Example
{
  "contractorType": "ALL",
  "englishProficiency": "ANY",
  "hasPortfolio": false,
  "hoursWorked": 123,
  "risingTalent": true,
  "jobSuccessScore": 987,
  "minEarning": "ANY",
  "preferredGroups": [PreferredGroup],
  "preferenceTests": [PreferredTest]
}
Job Posts

MarketplaceQuestion

Fields
Field Name Description
question - String
sequenceNumber - Int
Example
{
  "question": "abc123",
  "sequenceNumber": 987
}
Job Posts

MarketplaceSegmentationData

Fields
Field Name Description
segmentationValues - [MarketplaceSegmentationValue!]
Example
{"segmentationValues": [MarketplaceSegmentationValue]}
Job Posts

MarketplaceSegmentationInfo

Fields
Field Name Description
id - ID!
label - String
referenceName - String
sortOrder - Int
segmentationType - SegmentationType
skill - Skill
Example
{
  "id": 4,
  "label": "abc123",
  "referenceName": "abc123",
  "sortOrder": 123,
  "segmentationType": SegmentationType,
  "skill": Skill
}
Job Posts

MarketplaceSegmentationValue

Fields
Field Name Description
customValue - String
segmentationInfo - MarketplaceSegmentationInfo
Example
{
  "customValue": "abc123",
  "segmentationInfo": MarketplaceSegmentationInfo
}
Job Posts

OnSiteType

Values
Enum Value Description

REMOTE

OCCASIONAL

PERMANENT

Example
"REMOTE"
Job Posts

PreferredGroup

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

PreferredTest

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

ProposalsStatistics

Fields
Field Name Description
totalProposals - Int!
totalMessaged - Int!
totalHired - Int!
totalInvitesSent - Int!
totalApplicantsWithAutoHidden - Int!
totalArchived - Int!
totalAutoHidden - Int!
totalDeclined - Int!
totalHidden - Int!
totalOffered - Int!
totalShortlisted - Int!
totalWithdrawn - Int!
Example
{
  "totalProposals": 987,
  "totalMessaged": 123,
  "totalHired": 987,
  "totalInvitesSent": 123,
  "totalApplicantsWithAutoHidden": 123,
  "totalArchived": 123,
  "totalAutoHidden": 987,
  "totalDeclined": 987,
  "totalHidden": 987,
  "totalOffered": 123,
  "totalShortlisted": 987,
  "totalWithdrawn": 123
}
Job Posts

QuestionType

Values
Enum Value Description

EXPERIENCE

BPAV1

Example
"EXPERIENCE"
Job Posts

SandsJobPostRequest

Fields
Input Field Description
occupationId - String jobPostId: ID # the correct id will be provided by upstream Equal to services.id (eg Front-End Development)
skills - [JobPostingSkillInput!]
status - SandsJobPostStatus
freetextOccupation - String
tags - [String!]
additionalSkills - [JobPostingAdditionalSkillInput!]
occupations - [ID!]
Example
{
  "occupationId": "xyz789",
  "skills": [JobPostingSkillInput],
  "status": "DRAFT",
  "freetextOccupation": "xyz789",
  "tags": ["abc123"],
  "additionalSkills": [JobPostingAdditionalSkillInput],
  "occupations": ["4"]
}
Job Posts

SandsJobPostStatus

Values
Enum Value Description

DRAFT

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

SegmentationType

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

SetJobPostingPremiumResponse

Fields
Field Name Description
id - ID! ID of modified job posting
ccRequestId - String IF $browserInfo specified and $authCcRequestRid is null and not free featured and account requires 3Ds THEN id for 3DSecure ELSE null
Example
{
  "id": "4",
  "ccRequestId": "xyz789"
}
Job Posts

WorkFlowStateStatus

Values
Enum Value Description

CLOSED

ACTIVE

Example
"CLOSED"

Users and teams

AccessRestictionReason

Values
Enum Value Description

ROLES_MISMATCH

SUSPENSION

MONETIZATION

Example
"ROLES_MISMATCH"
Users and teams

AccountAuditRecord

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

AccountProcessInstance

Fields
Field Name Description
id - ID
success - Boolean!
Example
{"id": "4", "success": false}
Users and teams

AgencyDetails

Fields
Field Name Description
vetted - Boolean
topRatedStatus - String
topRatedPlusStatus - String
Example
{
  "vetted": true,
  "topRatedStatus": "abc123",
  "topRatedPlusStatus": "xyz789"
}
Users and teams

AvailabilitySource

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

BillingType

Values
Enum Value Description

BILL

MANAGED_EMPLOYER

MANAGED_SERVICES

Example
"BILL"
Users and teams

ClientVerificationStatus

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

Fields
Field Name Description
public - PublicCompanyInfo
private - PrivateCompanyInfo
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": "abc123",
  "organizationId": "abc123",
  "organizationRid": "abc123",
  "organizationType": "Business",
  "organizationLegacyType": "Client",
  "organizationEnterpriseType": "Standard",
  "legacyEnterpriseOrganization": false,
  "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

Profile Mutation: create employment record input

Fields
Input Field Description
userId - ID
companyName - String!
jobTitle - String!
standardizedCompanyId - String
standardizedJobTitleId - String
role - String!
startDate - String! start date - e.g: "1999-01-01"
endDate - String end date - e.g: "2002-01-01"
description - String
city - String!
country - String!
Example
{
  "userId": 4,
  "companyName": "abc123",
  "jobTitle": "abc123",
  "standardizedCompanyId": "abc123",
  "standardizedJobTitleId": "xyz789",
  "role": "xyz789",
  "startDate": "xyz789",
  "endDate": "xyz789",
  "description": "xyz789",
  "city": "xyz789",
  "country": "xyz789"
}
Users and teams

CreateOrganizationInput

Fields
Input Field Description
parentOrganizationId - ID!
organizationName - String!
aceRid - String
country - String
type - OrganizationRequestType
Example
{
  "parentOrganizationId": 4,
  "organizationName": "abc123",
  "aceRid": "abc123",
  "country": "abc123",
  "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
pagination - Pagination
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!
userId - ID
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
permissions - UserPermissions Get user permissions under organization
Arguments
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!
sortAttribute - SortAttribute
Example
{
  "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": "abc123",
  "staffs": StaffsConnection,
  "permissions": 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.
permissions - UserPermissions
Arguments
photoUrl - String photo url of the user.
offer - ContractOfferConnection List of Offers available to the current user/freelancer Sort options: Team, StartDate, EndDate, ContractName, FreelancerName, ClientCompanyName, ClientName, State
Arguments
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
ciphertext - String
i18NSettings - I18nSettings! User's i18n settings The input argument companyReferenceId is used in different checks for agencies, companies and independent contractors; For freelancers, the value shouldn't be provided.
Arguments
companyReferencedId - ID
talentProfile - TalentProfile Current user's primary freelancer profile data
Example
{
  "id": "4",
  "nid": "4",
  "rid": 4,
  "email": "abc123",
  "name": "xyz789",
  "permissions": UserPermissions,
  "photoUrl": "abc123",
  "offer": ContractOfferConnection,
  "timeReport": [TimeReport],
  "contractTimeReport": TimeReportConnection,
  "freelancerProfile": FreelancerProfile,
  "ciphertext": "xyz789",
  "i18NSettings": I18nSettings,
  "talentProfile": TalentProfile
}
Users and teams

FailedInvitation

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

FreelancerLanguageInput

Description

Profile Mutation: create freelancer language input

Fields
Input Field Description
userId - ID
iso639Code - String
language - LanguageDataInput!
Example
{
  "userId": 4,
  "iso639Code": "abc123",
  "language": LanguageDataInput
}
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": "abc123",
  "cityName": "xyz789",
  "zip": "xyz789",
  "timezone": "xyz789",
  "street": "abc123"
}
Users and teams

FreelancerProfile

Description

Freelancer Profile details.

Fields
Field Name Description
user - CurrentUser! the user (freelancer) who owns this profile
personalData - FreelancerProfilePersonalData! personal data of the profile.(firstName, lastName, etc)
userPreferences - FreelancerProfileUserPreferences! user preferences of the profile.(Eg: profileAccess, hideEarnings, etc)
otherExperiences - FreelancerProfileOtherExperiencesConnection! list of otherExperiences. Eg: otherExperiences with subject eq 'Web Development'
Arguments
SortAttribute - SortAttribute
pagination - Pagination
languages - FreelancerProfileLanguagesConnection! list of languages that freelancer can speak
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!
skills - FreelancerSkillsConnection! list of freelancer skills.
aggregates - FreelancerProfileAggregates! freelancer profile aggregates
contract - FreelancerProfileContract contract by it's ID
Arguments
id - ID!
contracts - FreelancerProfileContractsConnection! list of contracts of the freelancer
Arguments
SortAttribute - SortAttribute
pagination - Pagination
jobCategories - FreelancerProfileJobCategoriesConnection job categories selected by the freelancer on their profile.
profileCompletenessSummary - FreelancerProfileCompletenessSummary profile completeness summary
linkedExternalAccountsList - FreelancerProfileLinkedExternalAccountsConnection! list of external social network accounts
verifications - FreelancerProfileVerifications verification data ( phone verified, webcam verified) of the profile.
fullName - String! Freelancer first name + last name
firstName - String! Freelancer first name
lastName - String! Freelancer last name
countryDetails - Country
email - String
portrait - Portrait
phoneNumber - PhoneNumber phone number visible only for the current user
privateTalentCloud - PrivateTalentCloudConnection! talent clouds that the freelancer is part of
Example
{
  "user": CurrentUser,
  "personalData": FreelancerProfilePersonalData,
  "userPreferences": FreelancerProfileUserPreferences,
  "otherExperiences": FreelancerProfileOtherExperiencesConnection,
  "languages": FreelancerProfileLanguagesConnection,
  "certificates": [FreelancerProfileCertificate],
  "employmentRecords": [
    FreelancerProfileEmploymentRecord
  ],
  "availability": FreelancerProfileAvailability,
  "committedResponseTime": FreelancerProfileCommittedResponseTime,
  "project": FreelancerProfileProject,
  "skills": FreelancerSkillsConnection,
  "aggregates": FreelancerProfileAggregates,
  "contract": FreelancerProfileContract,
  "contracts": FreelancerProfileContractsConnection,
  "jobCategories": FreelancerProfileJobCategoriesConnection,
  "profileCompletenessSummary": FreelancerProfileCompletenessSummary,
  "linkedExternalAccountsList": FreelancerProfileLinkedExternalAccountsConnection,
  "verifications": FreelancerProfileVerifications,
  "fullName": "abc123",
  "firstName": "abc123",
  "lastName": "xyz789",
  "countryDetails": Country,
  "email": "abc123",
  "portrait": Portrait,
  "phoneNumber": PhoneNumber,
  "privateTalentCloud": PrivateTalentCloudConnection
}
Users and teams

FreelancerProfileAggregates

Description

End ProfilePart: Freelancer's ProjectList ProfilePart: ProfileAggregates TODO: More details on Aggregate attributes

Fields
Field Name Description
user - GenericUser!
lastWorkedDateTime - String It's the latest timestamp between the worked hours logged and the last payment date from the most recent contract.
lastApplicationDate - String Date when the user applied last time for a job
totalHourlyJobs - Int Total hourly jobs.
totalHourlyJobsRecent - Int Total hourly jobs done for last 180 days
totalFixedJobs - Int Total fixed price jobs.
totalFixedJobsRecent - Int Total fixed price jobs performed in the last 180 days
responsiveness - String Freelancer's responsiveness to client's invites
totalRevenue - Money Total Revenue. The actual amount, freelancer has received.
activeInterviews - Int Total no of interviews in progress.
currentContracts - Int Total no of active contracts.
jobSuccessScore - Float Job Success Score calculated Biweekly
topRatedStatus - String Top rated status
topRatedPlusStatus - String Top rated plus status
vetted - Boolean Flag that indicates if freelancer is expert-vetted
totalHoursActual - Float Total hours calculated by total charges divided by hourly rate
totalHours - Float Total Billed Hours. A summation of billed hours with total charges >= $1.
totalHoursRecent - Float Total Hours worked for last 180 days
totalFeedback - Float Total Feedback score received
totalFeedbackRecent - Float Total Feedback score received for last 180 days
billedContracts - Int Number of contracts with total charges >= $1.
billedContractsRecent - Int Number of contracts with total charges >= $1 for last 180 days
adjustedFeedbackScore - Float freelancer Adjusted Score. A 5-star rating score the platform gives to each freelancer based on the feedback scores received in each completed contract.
adjustedFeedbackScoreRecent - Float freelancer adjusted average feedback score for the last 180 days
profileStats - FreelancerProfileStats
lastActivityDateTime - String Last Activity Timestamp captured by the platform from these activities: last job application submitted, last exam taken, last date worked, last date being hired, last payment date
totalEarnings - Money Life time Total Freelancer Earnings. The same value as Total Charge.
topRatedStatusDatetime - String The most recent timestamp when a freelancer being granted with a Top Rated status.
recentEarnings - Money
averageRecentEarnings - Money
recentCharge - Money
averageRecentCharge - Money
qualityScore - Float
totalHoursRounded - Int Total hours from Assignment table's "Hours" column
Example
{
  "user": GenericUser,
  "lastWorkedDateTime": "abc123",
  "lastApplicationDate": "xyz789",
  "totalHourlyJobs": 123,
  "totalHourlyJobsRecent": 123,
  "totalFixedJobs": 987,
  "totalFixedJobsRecent": 987,
  "responsiveness": "abc123",
  "totalRevenue": Money,
  "activeInterviews": 123,
  "currentContracts": 987,
  "jobSuccessScore": 123.45,
  "topRatedStatus": "xyz789",
  "topRatedPlusStatus": "xyz789",
  "vetted": true,
  "totalHoursActual": 123.45,
  "totalHours": 123.45,
  "totalHoursRecent": 987.65,
  "totalFeedback": 123.45,
  "totalFeedbackRecent": 987.65,
  "billedContracts": 987,
  "billedContractsRecent": 123,
  "adjustedFeedbackScore": 123.45,
  "adjustedFeedbackScoreRecent": 987.65,
  "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

End ProfilePart: Freelancer's Employment Record ProfilePart: Freelancer's Availability

Fields
Field Name Description
id - ID!
user - GenericUser!
capacity - FreelancerProfileAvailabilityCapacity availability capacity: eg: More than 30 hours/week, less than 30 hours/ As needed -Open to Offers.
availabilityDateTime - String if freelancer's not available, their next availability date.
name - String!
createdDateTime - String!
Example
{
  "id": 4,
  "user": GenericUser,
  "capacity": "fullTime",
  "availabilityDateTime": "xyz789",
  "name": "abc123",
  "createdDateTime": "xyz789"
}
Users and teams

FreelancerProfileAvailabilityCapacity

Values
Enum Value Description

fullTime

partTime

lessThen

notSure

rangeOfHours

none

Example
"fullTime"
Users and teams

FreelancerProfileAvailabilityInput

Description

Profile Mutation: create freelancer availability input

Fields
Input Field Description
userId - ID! This field must be deprecated(@unused) id will be extracted from current user context
availability - FreelancerProfileCapacityInput!
Example
{
  "userId": 4,
  "availability": FreelancerProfileCapacityInput
}
Users and teams

FreelancerProfileCapacityInput

Fields
Input Field Description
capacity - FreelancerProfileAvailabilityCapacity
availabilityDateTime - String
creationDateTime - String!
sourceInput - AvailabilitySource
Example
{
  "capacity": "fullTime",
  "availabilityDateTime": "xyz789",
  "creationDateTime": "abc123",
  "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!
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": "xyz789",
  "score": "xyz789",
  "active": true,
  "verified": false,
  "url": "xyz789",
  "createdDateTime": "abc123",
  "lastUpdatedDateTime": "abc123",
  "expirationDate": "xyz789",
  "externalId": "abc123"
}
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": "xyz789",
  "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": 987,
  "display": 123,
  "action": "abc123",
  "actionCredit": 123,
  "actionForEmptySection": "abc123",
  "skillsCount": 987,
  "employmentRecordCount": 987,
  "portraitRecordCount": 987,
  "overviewRecordCount": 123,
  "videoRecordCount": 123,
  "educationRecordCount": 123,
  "certificatesCount": 987,
  "otherExperiencesCount": 123,
  "portfolioCount": 123,
  "linkedExternalAccountsCount": 123,
  "createdDateTime": "xyz789"
}
Users and teams

FreelancerProfileContract

Fields
Field Name Description
id - ID!
description - String
title - String!
clientOrganization - GenericOrganization! the client organization involved in this contract.
type - FreelancerProfileContractType! fixed or hourly contract.
accessType - FreelancerProfileContractAccessType! public or private
private - Boolean!
job - JobPosting! the job opening/posting that is associated with the contract.
startDateTime - String! when did the contract start
endDateTime - String when will the contract end
totalCharges - Money total money that was invoiced in this contract.
totalHours - Float no of total hours spent on this contract.
hourlyRate - Money hourly rate used by the freelancer for this contract.
initialAmount - Money
feedbackToTheClient - FreelancerProfileContractFeedback feedback provided by the freelancer when the contract ended.
feedbackToTheFreelancer - FreelancerProfileContractFeedback feedback provided by the client to the freelancer when the contract ended.
isFromElance - Boolean TODO: Probably Legacy: clarification required - this flag determines where this contract is from ; either Elance or ODesk ?
Example
{
  "id": 4,
  "description": "abc123",
  "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": true
}
Users and teams

FreelancerProfileContractAccessType

Values
Enum Value Description

PublicAccess

PrivateAccess

AuthAccess

Example
"PublicAccess"
Users and teams

FreelancerProfileContractEdge

Fields
Field Name Description
node - FreelancerProfileContract!
cursor - String!
Example
{
  "node": FreelancerProfileContract,
  "cursor": "abc123"
}
Users and teams

FreelancerProfileContractFeedback

Fields
Field Name Description
score - Float!
comment - String
publicComment - Boolean!
response - String
scoreDetails - [FreelancerProfileContractFeedbackScore!]
Example
{
  "score": 987.65,
  "comment": "xyz789",
  "publicComment": true,
  "response": "xyz789",
  "scoreDetails": [FreelancerProfileContractFeedbackScore]
}
Users and teams

FreelancerProfileContractFeedbackScore

Fields
Field Name Description
score - Float!
label - String!
description - String
Example
{
  "score": 123.45,
  "label": "abc123",
  "description": "xyz789"
}
Users and teams

FreelancerProfileContractsConnection

Description

End ProfilePart: ProfileAggregates ProfilePart: Freelancer's Contracts Connection to the Contracts list

Fields
Field Name Description
totalCount - Int
edges - [FreelancerProfileContractEdge!]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [FreelancerProfileContractEdge],
  "pageInfo": PageInfo
}
Users and teams

FreelancerProfileContractsFilter

Description

Contracts related filters

Fields
Input Field Description
title_eq - String
contractType_eq - FreelancerProfileContractType
contractAccessTyp_eq - FreelancerProfileContractAccessType
Example
{
  "title_eq": "xyz789",
  "contractType_eq": "Fixed",
  "contractAccessTyp_eq": "PublicAccess"
}
Users and teams

FreelancerProfileContractType

Values
Enum Value Description

Fixed

Hourly

Example
"Fixed"
Users and teams

FreelancerProfileEmploymentRecord

Description

End ProfilePart: Freelancer's Certificates ProfilePart: Freelancer's Employment Record

Fields
Field Name Description
id - ID!
user - GenericUser!
companyName - String!
jobTitle - String!
standardizedCompanyId - String
standardizedJobTitleId - String
role - String
startDate - String! start date formatted according to ISO-8601
endDate - String end date - e.g: "2002-01-01"
description - String
city - String!
country - String!
Example
{
  "id": "4",
  "user": GenericUser,
  "companyName": "xyz789",
  "jobTitle": "xyz789",
  "standardizedCompanyId": "xyz789",
  "standardizedJobTitleId": "xyz789",
  "role": "xyz789",
  "startDate": "xyz789",
  "endDate": "xyz789",
  "description": "abc123",
  "city": "xyz789",
  "country": "abc123"
}
Users and teams

FreelancerProfileExperienceLevel

Values
Enum Value Description

NONE

ENTRY_LEVEL

INTERMEDIATE

EXPERT

Example
"NONE"
Users and teams

FreelancerProfileJobCategoriesConnection

Description

End ProfilePart: Freelancer's Contracts ProfilePart: Job Categories

Fields
Field Name Description
edges - [FreelancerProfileJobCategoryEdge!]
Example
{"edges": [FreelancerProfileJobCategoryEdge]}
Users and teams

FreelancerProfileJobCategory

Fields
Field Name Description
category - JobCategory
selectedSubCategories - [JobCategory!]!
Example
{
  "category": JobCategory,
  "selectedSubCategories": [JobCategory]
}
Users and teams

FreelancerProfileJobCategoryEdge

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

FreelancerProfileLanguage

Fields
Field Name Description
id - ID!
language - Language!
verified - Boolean
verifiedByCertificate - Boolean
verifiedByFeedback - Boolean
Example
{
  "id": "4",
  "language": Language,
  "verified": true,
  "verifiedByCertificate": true,
  "verifiedByFeedback": true
}
Users and teams

FreelancerProfileLanguageEdge

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

FreelancerProfileLanguageProficiencyTitle

Values
Enum Value Description

BASIC

CONVERSATIONAL

FLUENT

NATIVE_OR_BILINGUAL

Example
"BASIC"
Users and teams

FreelancerProfileLanguagesConnection

Description

End ProfilePart: Other Experiences of the the freelancer ProfilePart: Freelancer's Languages Connection to the FreelancerLanguages list

Fields
Field Name Description
edges - [FreelancerProfileLanguageEdge!]
Example
{"edges": [FreelancerProfileLanguageEdge]}
Users and teams

FreelancerProfileLinkedExternalAccounts

Fields
Field Name Description
id - ID!
name - String! name of the social network, eg: facebook, github, twitter etc
expiryDateTime - String expires on
revokedDateTime - String Revoked on
authorizedDateTime - String! Authorization done on
userProfile - String! link to the user profile on that social network
Example
{
  "id": "4",
  "name": "abc123",
  "expiryDateTime": "abc123",
  "revokedDateTime": "abc123",
  "authorizedDateTime": "xyz789",
  "userProfile": "xyz789"
}
Users and teams

FreelancerProfileLinkedExternalAccountsConnection

Description

End ProfilePart: Pci ProfilePart: Linked External Accounts Connection to the Linked External Accounts

Fields
Field Name Description
edges - [FreelancerProfileLinkedExternalAccountsEdge!]
Example
{"edges": [FreelancerProfileLinkedExternalAccountsEdge]}
Users and teams

FreelancerProfileLinkedExternalAccountsEdge

Fields
Field Name Description
node - FreelancerProfileLinkedExternalAccounts!
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": true,
  "createdDateTime": "abc123",
  "updatedDateTime": "xyz789"
}
Users and teams

FreelancerProfileOtherExperienceEdge

Fields
Field Name Description
node - FreelancerProfileOtherExperience!
cursor - String!
Example
{
  "node": FreelancerProfileOtherExperience,
  "cursor": "xyz789"
}
Users and teams

FreelancerProfileOtherExperiencesConnection

Description

End ProfilePart: Freelancer Profile UserPreferences ProfilePart: Other Experiences of the the freelancer Connection to the Other Experiences list

Fields
Field Name Description
totalCount - Int
edges - [FreelancerProfileOtherExperienceEdge!]
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [FreelancerProfileOtherExperienceEdge],
  "pageInfo": PageInfo
}
Users and teams

FreelancerProfileOtherExperiencesFilter

Description

OtherExperiences related filters

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

FreelancerProfilePersonalData

Description

ProfilePart: Personal data of the freelancer attributes of personal data.

Fields
Field Name Description
firstName - String!
lastName - String!
portrait - Portrait
title - String Profile Title
description - String Profile Description
address - FreelancerLocation freelancer address
chargeRate - Money! Freelancer's typical billing rate
workPhone - String
profileUrl - String link to the freelancer's profile
profileState - PersonalDataProfileState under Review, auto rejected, rejected, accepted etc.
Example
{
  "firstName": "abc123",
  "lastName": "xyz789",
  "portrait": Portrait,
  "title": "abc123",
  "description": "xyz789",
  "address": FreelancerLocation,
  "chargeRate": Money,
  "workPhone": "xyz789",
  "profileUrl": "abc123",
  "profileState": "IN_PROGRESS"
}
Users and teams

FreelancerProfileProject

Description

Portfolio projects of the Freelancer

Fields
Field Name Description
id - ID!
title - String portfolio project title
description - String description of the portfolio project
contractLink - FreelancerProfileProjectContractLink connection to the upwork contract if the project is done on upwork
thumbnailId - String pointer to the thumbnail
thumbnailOriginalId - String pointer to the thumbnail in original
thumbnail - String link to the thumbnail
thumbnailOriginal - String link to the original thumbnail
projectUrl - String url if exists for the portfolio project
completionDateTime - String the date when this project was completed
public - Boolean if this project is visible for upwork users or publically
rank - Int order of this portfolio project in all of the portfolio projects.
attachments - [FreelancerProfileProjectAttachment!] filtered list of project attachments. eg: type eq JPG
skills - FreelancerSkillsConnection list of skills associated with this freelancer's project.
category - JobCategory the top Level category associated to this portfolio project
subCategory - JobCategory level 2 category associated with this portfolio project.
occupationId - String associated occupation from the ontology, for this portfolio project.
projectType - FreelancerProfileProjectType case study, gallery or general.
role - String role played by the freelancer on this project.
projectGoal - String
solution - String project solution in case study for example.
primaryImageId - String
createdDateTime - String!
Example
{
  "id": "4",
  "title": "xyz789",
  "description": "abc123",
  "contractLink": FreelancerProfileProjectContractLink,
  "thumbnailId": "abc123",
  "thumbnailOriginalId": "abc123",
  "thumbnail": "xyz789",
  "thumbnailOriginal": "abc123",
  "projectUrl": "abc123",
  "completionDateTime": "abc123",
  "public": false,
  "rank": 123,
  "attachments": [FreelancerProfileProjectAttachment],
  "skills": FreelancerSkillsConnection,
  "category": JobCategory,
  "subCategory": JobCategory,
  "occupationId": "xyz789",
  "projectType": "CLASSIC_VIEW",
  "role": "abc123",
  "projectGoal": "abc123",
  "solution": "xyz789",
  "primaryImageId": "xyz789",
  "createdDateTime": "xyz789"
}
Users and teams

FreelancerProfileProjectAttachment

Fields
Field Name Description
id - ID
link - String
fileName - String
fileSize - Int
rank - Int
videoUrl - String
type - String
title - String
description - String
imageSmall - String
imageMiddle - String
imageLarge - String
Example
{
  "id": 4,
  "link": "xyz789",
  "fileName": "abc123",
  "fileSize": 123,
  "rank": 123,
  "videoUrl": "abc123",
  "type": "xyz789",
  "title": "xyz789",
  "description": "xyz789",
  "imageSmall": "abc123",
  "imageMiddle": "abc123",
  "imageLarge": "xyz789"
}
Users and teams

FreelancerProfileProjectType

Values
Enum Value Description

CLASSIC_VIEW

CASE_STUDY

GALLERY

MULTIMEDIA_PORTFOLIO_VIEW

Example
"CLASSIC_VIEW"
Users and teams

FreelancerProfileResponseTime

Values
Enum Value Description

NEVER

SOON

IMMEDIATE

Example
"NEVER"
Users and teams

FreelancerProfileStats

Fields
Field Name Description
totalCharge360 - Money The sum of total charges from the last 360 days
totalCharge360NoAgency - Money The sum of total charges from the last 360 days, excluding agency contracts
adjustedScore360 - Float This is the feedback score calculated using the contracts completed in the last 360 days
longTermClients - Int
suspensions - Int The total suspension count
suspensions360 - Int The total suspension count recorded in last 360 days
suspensions90limited - Int Recent account holds
topLevelJobCategoryApplied90Days - String The main job category (Level-1 job category) a freelancer has applied to in the last 90 days.
proposalsCount90Days - Int The count of job applications a freelancer has submitted in last 90 days
medianProposalsForTheTopLevelCategory365 - Int The median for the number of job applications in the main category prior to the first hire for the last 365 days
fitProposalsViewRatio90Days - Float Ratio of number of fit job applications viewed over number of job applications submitted in last 90 days
hiddenProposalsViewedRatio90Days - Float Ratio of number of hidden job applications viewed over number of job applications submitted in last 90 days
totalProposalsViewedRatio90Days - Float Ratio of number of job applications viewed over number of job applications submitted in last 90 days
proposalInterviewedRation90Days - Float Ratio of number of job applications that were interviewed by client over number of job applications submitted in last 90 days.
proposalsHiredRatio90Days - Float Ratio of number of hired over number of job applications submitted in last 90 days
hideReasonsForProposals - [String] 3 most commonly cited reasons for clients hiding the application
totalInvites90Days - Int The number of invitations received in last 90 days
totalInviteResponses90Days - Int The number of responses of invitations received in last 90 days
inviteResponsesPerDay90Days - Int The count on how many invitations a contractor had responded within a day in last 90 days.
totalCharge365NoPending - Money 12-month earnings, based on earnings in the last 365 days including today
totalCharge90 - Money 3-month earnings
weeksEligibleWithin16wks - Float Top Rated eligible weeks for the last 16 weeks.
Example
{
  "totalCharge360": Money,
  "totalCharge360NoAgency": Money,
  "adjustedScore360": 123.45,
  "longTermClients": 987,
  "suspensions": 987,
  "suspensions360": 123,
  "suspensions90limited": 123,
  "topLevelJobCategoryApplied90Days": "xyz789",
  "proposalsCount90Days": 123,
  "medianProposalsForTheTopLevelCategory365": 123,
  "fitProposalsViewRatio90Days": 987.65,
  "hiddenProposalsViewedRatio90Days": 987.65,
  "totalProposalsViewedRatio90Days": 987.65,
  "proposalInterviewedRation90Days": 987.65,
  "proposalsHiredRatio90Days": 123.45,
  "hideReasonsForProposals": ["abc123"],
  "totalInvites90Days": 123,
  "totalInviteResponses90Days": 987,
  "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": true,
  "hideEarnings": false,
  "exposeFullName": false,
  "clientFeedbackOptional": false,
  "projectTypePreference": "BOTH_LONGTERM_AND_ONETIME",
  "hideJss": false
}
Users and teams

FreelancerProfileVerifications

Description

End ProfilePart: Linked External Accounts 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
Example
{
  "idVerified": true,
  "phoneVerified": false,
  "webcamVerified": true,
  "idBadgeStatus": "xyz789"
}
Users and teams

FreelancerProfileVisibility

Values
Enum Value Description

PUBLIC

ONLY_UPWORK_USERS

PRIVATE

AUTH

Example
"PUBLIC"
Users and teams

FreelancerProjectTypePreference

Values
Enum Value Description

BOTH_LONGTERM_AND_ONETIME

LONGER_TERM_3PLUS_MONTHS

SHORTER_TERM_LESS_THAN_3MONTHS

Example
"BOTH_LONGTERM_AND_ONETIME"
Users and teams

FreeLancerSkillEdge

Fields
Field Name Description
node - Skill!
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!]
Example
{"edges": [FreeLancerSkillEdge]}
Users and teams

FreelancerStats

Description

End ProfilePart: Verifications Freelancer Stats

Fields
Field Name Description
mainCategory90 - String!
applicationsSent90 - Int!
applicationFitZscore90 - Int!
applicationHiddenZscore90 - Int!
viewRateZscore90 - Int!
interviewRateZscore90 - Int!
hireRateZscore90 - Int!
medianCtgPreHireApps365 - Int!
totalInvitations90 - Int!
respondedInvitations90 - Int!
invitationsRespondedIn1Day90 - Int!
totalHires - Int!
recommendRate - String!
feedback360 - String!
policyViolations360 - Int!
allSourcesAvailable - Boolean!
nss100Bw - String!
longTermClients - Int!
hideReasonsTop3 - [String]!
profileDiscoveries - ProfileDiscoveries!
topRatedStatus - String!
policyViolations90Limited - Int!
nss100BwUpdatedDate - String!
notAvailableSources - [String]!
earnings365NoPending - Int!
weeksEligibleWithin16wks - Int!
topRatedPlusStatus - String!
Example
{
  "mainCategory90": "abc123",
  "applicationsSent90": 123,
  "applicationFitZscore90": 123,
  "applicationHiddenZscore90": 123,
  "viewRateZscore90": 123,
  "interviewRateZscore90": 987,
  "hireRateZscore90": 987,
  "medianCtgPreHireApps365": 123,
  "totalInvitations90": 987,
  "respondedInvitations90": 123,
  "invitationsRespondedIn1Day90": 987,
  "totalHires": 987,
  "recommendRate": "xyz789",
  "feedback360": "xyz789",
  "policyViolations360": 987,
  "allSourcesAvailable": true,
  "nss100Bw": "xyz789",
  "longTermClients": 123,
  "hideReasonsTop3": ["xyz789"],
  "profileDiscoveries": ProfileDiscoveries,
  "topRatedStatus": "xyz789",
  "policyViolations90Limited": 987,
  "nss100BwUpdatedDate": "abc123",
  "notAvailableSources": ["xyz789"],
  "earnings365NoPending": 123,
  "weeksEligibleWithin16wks": 987,
  "topRatedPlusStatus": "xyz789"
}
Users and teams

FreelancerVisibility

Fields
Field Name Description
locked - Boolean
risky - Boolean
currentVisibility - String
originalVisibility - String
Example
{
  "locked": true,
  "risky": true,
  "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
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!
sortAttribute - SortAttribute
Example
{
  "id": "4",
  "rid": "4",
  "legacyId": 4,
  "name": "xyz789",
  "type": "BUSINESS",
  "legacyType": "CLIENT",
  "flag": OrganizationFlag,
  "parentOrganization": GenericOrganization,
  "active": false,
  "hidden": false,
  "company": PrivateCompanyInfo,
  "photoUrl": "xyz789",
  "creationDate": "xyz789",
  "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
ciphertext - String
talentProfile - TalentProfile FreelancerProfile from ORPC is being deprecated We should transition general profile to use TalentProfile instead
Example
{
  "id": "4",
  "nid": "4",
  "rid": "4",
  "name": "abc123",
  "firstName": "abc123",
  "lastName": "abc123",
  "photoUrl": "xyz789",
  "publicUrl": "xyz789",
  "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
Example
{"country": Country}
Users and teams

I18nSettings

Description

User's i18n entity

Fields
Field Name Description
countrySupported - Boolean
location - I18nLocation
status - I18nSettingsStatus
locationViewType - LocationViewType
userPreferredLocationType - UserPreferredLocationType
settingsFlags - I18nSettingsFlags
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
showJobSearch - Boolean
showPhoneVerification - Boolean
showSmfToUpdateAddress - Boolean
showPersonalAddressAutocomplete - Boolean
showMessageContainer - Boolean
showLocationPreferenceOnJobPost - Boolean
defaultDomesticEnabled - Boolean
jobSearchDefaultedToON - Boolean
showLocationVerificationOnFWH - Boolean
domesticEnabledForFreelancersOnFLSearch - Boolean
Example
{
  "showDomesticLocationFilterOnFLSearch": true,
  "showJobSearch": true,
  "showPhoneVerification": false,
  "showSmfToUpdateAddress": false,
  "showPersonalAddressAutocomplete": true,
  "showMessageContainer": false,
  "showLocationPreferenceOnJobPost": true,
  "defaultDomesticEnabled": true,
  "jobSearchDefaultedToON": true,
  "showLocationVerificationOnFWH": true,
  "domesticEnabledForFreelancersOnFLSearch": false
}
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
roles - [InviteToTeamRoles!]! email of the invitee
inviteeEmail - String username of the invitee (either this or email must be specified, not both)
inviteeUsername - String list of roles to be granted to invitee (optional, can be inferred from config of the flow)
invitedToTopLevelOrganizationId - ID top level org ID to which invitee is invited Deprecated: Argument is not used anymore and going to be dropped
invitedToOrganizationsIds - [ID!] list of team IDs to which invitee is invited (optional, invitedToTopLevelOrganizationId could be enough)
inviterUserId - ID inviter user ID (personUid)
landingUrl - String! landing URL (to which user will be redirected after accepting invitation)
emailParams - InviteToTeamEmailParams parameters that will be attached to email template
metadata - [StringMapElementInput!] map of metadata
Example
{
  "flow": "HELP_ME_HIRE",
  "roles": ["ADMIN"],
  "inviteeEmail": "abc123",
  "inviteeUsername": "abc123",
  "invitedToTopLevelOrganizationId": "4",
  "invitedToOrganizationsIds": [4],
  "inviterUserId": 4,
  "landingUrl": "abc123",
  "emailParams": InviteToTeamEmailParams,
  "metadata": [StringMapElementInput]
}
Users and teams

InviteToTeamEmailParams

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

InviteToTeamFailedResponse

Fields
Field Name Description
code - String
message - String
invitation - FailedInvitation
Example
{
  "code": "abc123",
  "message": "abc123",
  "invitation": FailedInvitation
}
Users and teams

InviteToTeamFlow

Values
Enum Value Description

HELP_ME_HIRE

DETECT_AND_REDIRECT

HELP_ME_HIRE_JOB_POST_FORM

HELP_ME_HIRE_PROPOSAL_MANAGER

HELP_ME_HIRE_FREELANCER_PROFILE

HELP_ME_HIRE_STANDALONE_PAGE

HELP_ME_HIRE_DASH_INTERVIEW_ROOM

HELP_ME_HIRE_DASH_CONTRACT_ROOM

HELP_ME_HIRE_GLOBAL_NAV

HELP_ME_HIRE_JOBS_HOME_MOBILE

HELP_ME_HIRE_JOBS_HOME_DESKTOP

CLIENT_INVITE_TO_TEAM

AGENCY_INVITE_TO_TEAM

HELP_ME_HIRE_DASH

DASH_INVITE_TO_ROOM

AC_TO_EAC_INVITE

BYO_EOR_AGENCY

HELP_ME_HIRE2_JOB_POST_FORM

HELP_ME_HIRE_TEST_RESEND

HELP_ME_HIRE2_JOBS_HOME_SHARE

HELP_ME_HIRE2_ALL_JOBS_SHARE

HELP_ME_HIRE2_GLOBAL_NAV

HELP_ME_HIRE2_JOBS_HOME_MOBILE

HELP_ME_HIRE2_JOBS_HOME_DESKTOP

Example
"HELP_ME_HIRE"
Users and teams

InviteToTeamResponse

Fields
Field Name Description
succeeded - [InviteToTeamSucceededResponse]!
failed - [InviteToTeamFailedResponse]!
Example
{
  "succeeded": [InviteToTeamSucceededResponse],
  "failed": [InviteToTeamFailedResponse]
}
Users and teams

InviteToTeamRoles

Values
Enum Value Description

ADMIN

FINANCE

RECRUITER

WORKDIARY_TEAM

CHAT_TEAM

CHAT_COMPANY

AFFILIATE_CONTRACTOR

AFFILIATE_CONTRACTOR_EXCLUSIVE

ON_CONTRACT

MANAGER

WORKDIARY_SELF

ENTERPRISE_SETTINGS

ENTERPRISE_COMPLIANCE

ENTERPRISE_PROGRAM

Example
"ADMIN"
Users and teams

InviteToTeamSucceededResponse

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

LanguageDataInput

Description

language input

Fields
Input Field Description
id - ID
personRid - ID
verified - Boolean
verifiedByCertificate - Boolean
verifiedByFeedback - Boolean
language - LanguageInput!
proficiencyLevel - LanguageProficiencyLevelInput!
Example
{
  "id": 4,
  "personRid": "4",
  "verified": false,
  "verifiedByCertificate": false,
  "verifiedByFeedback": true,
  "language": LanguageInput,
  "proficiencyLevel": LanguageProficiencyLevelInput
}
Users and teams

LanguageInput

Fields
Input Field Description
iso639Code - String!
active - Boolean!
englishName - String!
Example
{
  "iso639Code": "xyz789",
  "active": true,
  "englishName": "abc123"
}
Users and teams

LanguageProficiencyLevelInput

Description

Profile Mutation: proficiency level input

Fields
Input Field Description
code - String!
rank - Int
active - Boolean
description - String
type - String
proficiencyTitle - FreelancerProfileLanguageProficiencyTitle
Example
{
  "code": "xyz789",
  "rank": 123,
  "active": true,
  "description": "abc123",
  "type": "xyz789",
  "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

Organization

Fields
Field Name Description
id - ID! ID of the current organization
rid - ID Record ID of the organization
legacyId - ID
name - String Name of the current organization
type - OrganizationType Type of the Organization. Possible values are BUSINESS / SOLE_PROPRIETOR
legacyType - OrganizationLegacyType LEgacy type of the Organization. Posibble values are CLIENT / VENDOR
flag - OrganizationFlag Flag associated with the Organization
active - Boolean Indicates whether this organization is active. Applicable to a team organization.
hidden - Boolean Indicates whether this organization/team is hidden. Applicable to a team organization.
company - PrivateCompanyInfo Private information about current company
photoUrl - String
creationDate - String
Possible Types
Organization Types

CurrentOrganization

GenericOrganization

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

OrganizationFlag

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

OrganizationLegacyType

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": "abc123",
  "city": "abc123",
  "state": "xyz789",
  "country": "abc123",
  "zipCode": "abc123"
}
Users and teams

OrganizationRequestType

Values
Enum Value Description

AGENCY

CLIENT

SOLE_PROPRIETOR

Example
"AGENCY"
Users and teams

OrganizationType

Values
Enum Value Description

BUSINESS

SOLE_PROPRIETOR

Example
"BUSINESS"
Users and teams

OrgUserPermissionFilter

Fields
Input Field Description
userId - String
resourceType_eq - ResourceType!
actions_any - [String!]!
limit - Int
offset - String
performExternalChecks_eq - Boolean
teamOrgIds_any - [ID!] the teamOrgIds in which the permissions for the resourceType and action are needed
returnAllTeams - Boolean return all teams if teamOrgIds is not specified, else only parent organization is returned. Default = false
Example
{
  "userId": "xyz789",
  "resourceType_eq": "OPENING",
  "actions_any": ["abc123"],
  "limit": 987,
  "offset": "xyz789",
  "performExternalChecks_eq": true,
  "teamOrgIds_any": ["4"],
  "returnAllTeams": true
}
Users and teams

OtherExperienceInput

Description

Profile Mutation: create other experience input

Fields
Input Field Description
userId - ID
subject - String!
description - String!
active - Boolean
Example
{
  "userId": "4",
  "subject": "xyz789",
  "description": "xyz789",
  "active": true
}
Users and teams

PaymentVerificationResult

Fields
Field Name Description
status - PaymentVerificationStatus
Example
{"status": "DEPOSIT_UNSUPPORTED"}
Users and teams

PaymentVerificationStatus

Values
Enum Value Description

DEPOSIT_UNSUPPORTED

ONHOLD

EXPIRED

DECLINED

VERIFICATIONFAILED

VERIFICATIONINPROGRESS

VERIFIED

ACTIVE

Example
"DEPOSIT_UNSUPPORTED"
Users and teams

PersonalDataLocation

Fields
Field Name Description
country - String
state - String
city - String
zip - String
timezone - String
Example
{
  "country": "abc123",
  "state": "abc123",
  "city": "xyz789",
  "zip": "xyz789",
  "timezone": "abc123"
}
Users and teams

PersonalDataProfileState

Values
Enum Value Description

IN_PROGRESS

ACCEPTED

DRAFT

REJECTED

UNDER_REVIEW

NOT_STARTED

FAILED_REVIEW_QUEUE_SUBMISSION

ELANCER_ONBOARDING

AUTO_REJECTED_DELAYED

IN_PROCESS

AUTO_ACCEPTED

AUTO_REJECTED

Example
"IN_PROGRESS"
Users and teams

PhoneNumber

Fields
Field Name Description
code - String
number - String
Example
{
  "code": "abc123",
  "number": "xyz789"
}
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
ciphertext - String
Example
{
  "id": 4,
  "nid": "4",
  "rid": "4",
  "name": "abc123",
  "firstName": "xyz789",
  "lastName": "abc123",
  "photoUrl": "xyz789",
  "publicUrl": "xyz789",
  "email": "abc123",
  "location": UserLocation,
  "ciphertext": "xyz789"
}
Users and teams

PrivateCompanyInfo

Fields
Field Name Description
id - ID!
name - String
description - String
legacyType - PrivateCompanyLegacyType
logoURL - String
contactUser - GenericUser
phone - String
displayName - String
teamsEnabled - Boolean
canHire - Boolean
hidden - Boolean
includeInStats - Boolean No longer available for orgs
companyName - String
country - Country
state - String
city - String
address - String
zip - String
timezone - String
accountingEntity - String
billingType - BillingType
summary - String
paymentVerificationStatus - PaymentVerificationStatus use paymentVerification instead
paymentVerification - PaymentVerificationResult
agencyDetails - AgencyDetails
jobPosts - JobPostingConnection! Job posts of the company
Arguments
jobPostsFilter - JobPostsFilter
pagination - Pagination
Example
{
  "id": 4,
  "name": "abc123",
  "description": "abc123",
  "legacyType": "CLIENT",
  "logoURL": "abc123",
  "contactUser": GenericUser,
  "phone": "abc123",
  "displayName": "abc123",
  "teamsEnabled": true,
  "canHire": true,
  "hidden": true,
  "includeInStats": false,
  "companyName": "xyz789",
  "country": Country,
  "state": "xyz789",
  "city": "xyz789",
  "address": "abc123",
  "zip": "abc123",
  "timezone": "xyz789",
  "accountingEntity": "abc123",
  "billingType": "BILL",
  "summary": "xyz789",
  "paymentVerificationStatus": "DEPOSIT_UNSUPPORTED",
  "paymentVerification": PaymentVerificationResult,
  "agencyDetails": AgencyDetails,
  "jobPosts": JobPostingConnection
}
Users and teams

PrivateCompanyLegacyType

Values
Enum Value Description

CLIENT

AGENCY

Example
"CLIENT"
Users and teams

ProfileDiscoveries

Fields
Field Name Description
updatedDate - String!
currentWeekCnt - String!
weekMinus1Cnt - String!
weekMinus2Cnt - String!
weekMinus3Cnt - String!
weekMinus4Cnt - String!
weekMinus5Cnt - String!
Example
{
  "updatedDate": "abc123",
  "currentWeekCnt": "xyz789",
  "weekMinus1Cnt": "abc123",
  "weekMinus2Cnt": "xyz789",
  "weekMinus3Cnt": "abc123",
  "weekMinus4Cnt": "abc123",
  "weekMinus5Cnt": "xyz789"
}
Users and teams

PublicCompanyInfo

Fields
Field Name Description
id - ID!
name - String
description - String
legacyType - OrganizationLegacyType
logoURL - String
Example
{
  "id": "4",
  "name": "abc123",
  "description": "xyz789",
  "legacyType": "CLIENT",
  "logoURL": "abc123"
}
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

Example
"PROPOSAL_DECLINE"
Users and teams

ResourceType

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

Example
"OPENING"
Users and teams

Staff

Fields
Field Name Description
id - ID
user - GenericUser
activationStatus - Int

Enum representing the activation status

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

Enum representing the type of staff within the organization.

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

StaffsConnection

Fields
Field Name Description
edges - [StaffsConnectionEdge]!
totalCount - Int
pageInfo - PageInfo
Example
{
  "edges": [StaffsConnectionEdge],
  "totalCount": 987,
  "pageInfo": PageInfo
}
Users and teams

StaffsConnectionEdge

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

UpdateEmploymentRecordInput

Description

Profile Mutation: update employment record input

Fields
Input Field Description
id - ID!
userId - ID
companyName - String
jobTitle - String
standardizedCompanyId - String
standardizedJobTitleId - String
role - String!
startDate - String start date - e.g: "1999-01-01"
endDate - String end date - e.g: "2002-01-01"
description - String
city - String
country - String
Example
{
  "id": "4",
  "userId": "4",
  "companyName": "abc123",
  "jobTitle": "xyz789",
  "standardizedCompanyId": "abc123",
  "standardizedJobTitleId": "xyz789",
  "role": "abc123",
  "startDate": "xyz789",
  "endDate": "abc123",
  "description": "abc123",
  "city": "abc123",
  "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": "abc123",
  "hidden": true,
  "address": OrganizationLocationInput,
  "vatId": "xyz789"
}
Users and teams

UpdateOtherExperienceInput

Description

Profile Mutation: update other experience input

Fields
Input Field Description
id - ID!
userId - ID
subject - String
description - String
active - Boolean
Example
{
  "id": 4,
  "userId": "4",
  "subject": "xyz789",
  "description": "abc123",
  "active": true
}
Users and teams

User

Fields
Field Name Description
id - ID!

Unique user identifier

Example: 1181921839933591552

nid - ID!

Nickname ID of a user. Please, only use if really needed. Unique ID should be used when possible.

Example: foofreelancer

rid - ID!

Record ID of a user. Please, only use if really needed. Unique ID should be used when possible.

Example: 2366358

ciphertext - String
Possible Types
User Types

CurrentUser

GenericUser

PiiUser

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

UserIdsByEmailRecordEdge

Fields
Field Name Description
cursor - String
node - UserIdsByEmailRecordNode
Example
{
  "cursor": "xyz789",
  "node": UserIdsByEmailRecordNode
}
Users and teams

UserIdsByEmailRecordNode

Fields
Field Name Description
id - ID
email - String
visibilityLevel - FreelancerProfileVisibility
title - String
user - GenericUser
Example
{
  "id": 4,
  "email": "abc123",
  "visibilityLevel": "PUBLIC",
  "title": "xyz789",
  "user": GenericUser
}
Users and teams

UserIdsByEmailResponse

Fields
Field Name Description
totalCount - Int
edges - [UserIdsByEmailRecordEdge!]
Example
{"totalCount": 987, "edges": [UserIdsByEmailRecordEdge]}
Users and teams

UserLocation

Description

Location of the user

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

UserPermissionAccess

Values
Enum Value Description

ACCESS_DENIED

ACCESS_UNKNOWN

ACCESS_GRANTED

Example
"ACCESS_DENIED"
Users and teams

UserPermissionEdge

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

UserPermissionFilter

Description

Filter to load specific user's permissions

Fields
Input Field Description
resourceType_eq - ResourceType!
actions_any - [String!]!
limit - Int
offset - String
performExternalChecks_eq - Boolean
teamOrgIds_any - [ID!] the teamOrgIds in which the permissions for the resourceType and action are needed
returnAllTeams - Boolean return all teams if teamOrgIds is not specified, else only parent organization is returned. Default = false
returnFirstGrantedResult_eq - Boolean return first granted result. Default = false
Example
{
  "resourceType_eq": "OPENING",
  "actions_any": ["xyz789"],
  "limit": 123,
  "offset": "abc123",
  "performExternalChecks_eq": true,
  "teamOrgIds_any": [4],
  "returnAllTeams": false,
  "returnFirstGrantedResult_eq": true
}
Users and teams

UserPermissionNode

Fields
Field Name Description
organization - CurrentOrganization top level organization in which the current user is logged in
team - GenericOrganization team or child organization in which permissions are listed. NULL indicates the permissions are applicable to the root organization
action - String!
access - UserPermissionAccess!
reason - AccessRestictionReason
Example
{
  "organization": CurrentOrganization,
  "team": GenericOrganization,
  "action": "xyz789",
  "access": "ACCESS_DENIED",
  "reason": "ROLES_MISMATCH"
}
Users and teams

UserPermissions

Fields
Field Name Description
edges - [UserPermissionEdge]
offset - String
Example
{
  "edges": [UserPermissionEdge],
  "offset": "abc123"
}
Users and teams

UserPreferredLocationType

Description

User's i18n preferred location type values

Values
Enum Value Description

WORLD

COUNTRY

Example
"WORLD"

Ontology

AttrGroupFilter

Fields
Input Field Description
attributeGroupId - ID!
metadataContext - String
metadataCategoryId - ID
metadataSubCategoryId - ID
metadataVersion - String
Example
{
  "attributeGroupId": "4",
  "metadataContext": "abc123",
  "metadataCategoryId": "4",
  "metadataSubCategoryId": 4,
  "metadataVersion": "xyz789"
}
Ontology

AttributeSkillsMap

Fields
Field Name Description
attribute - String!
skills - [Skill!]!
Example
{
  "attribute": "abc123",
  "skills": [Skill]
}
Ontology

BroaderOccupationMap

Fields
Field Name Description
broader - String!
occupation - Occupation
Example
{
  "broader": "abc123",
  "occupation": Occupation
}
Ontology

CategoryServicesResponse

Fields
Field Name Description
categories - [Occupation!]!
categoryServices - [StringMapOccupation!]!
Example
{
  "categories": [Occupation],
  "categoryServices": [StringMapOccupation]
}
Ontology

CategorySubcategory

Fields
Field Name Description
category - Occupation!
subcategory - Occupation!
Example
{
  "category": Occupation,
  "subcategory": Occupation
}
Ontology

Deliverable

Fields
Field Name Description
id - ID!
ontologyId - String!

ontologyId is a semantic identifier that uniquely identifies an ontology element

Its value doesn't depend on the environment (same for dev, staging, prod)

Example: upwork:AdministrationSoftware

type - [OntologyEntityType]!
entityStatus - OntologyEntityStatus!

Defines the status of an occupation.

  • 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": "xyz789",
  "type": ["OCCUPATION"],
  "entityStatus": "ACTIVE",
  "preferredLabel": "xyz789",
  "definition": "xyz789",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "xyz789"
}
Ontology

ElementSkillMap

Fields
Field Name Description
element - String!
skill - Skill!
Example
{
  "element": "xyz789",
  "skill": Skill
}
Ontology

Occupation

Fields
Field Name Description
id - ID!
ontologyId - String!

ontologyId is a semantic identifier that unqiuely identifies an ontology element

Its value doesn't depend on the environment (same for dev, staging, prod)

Example: upwork:AdministrationSoftware

type - [OntologyEntityType]!
entityStatus - OntologyEntityStatus!

Defines the status of an occupation.

  • 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]
Example
{
  "id": "4",
  "ontologyId": "abc123",
  "type": ["OCCUPATION"],
  "entityStatus": "ACTIVE",
  "preferredLabel": "xyz789",
  "definition": "xyz789",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "abc123",
  "skills": [Skill]
}
Ontology

OccupationAttrGroupFilter

Fields
Input Field Description
occupationId - ID!
metadataContext - String
metadataCategoryId - ID
metadataSubCategoryId - ID
metadataVersion - String
Example
{
  "occupationId": "4",
  "metadataContext": "abc123",
  "metadataCategoryId": 4,
  "metadataSubCategoryId": 4,
  "metadataVersion": "abc123"
}
Ontology

OccupationAttrGroupsResponse

Fields
Field Name Description
occupation - Occupation!
broaderOccupations - [BroaderOccupationMap!]
attributeGroups - [Skill!]
attributes - [AttributeSkillsMap!]
Example
{
  "occupation": Occupation,
  "broaderOccupations": [BroaderOccupationMap],
  "attributeGroups": [Skill],
  "attributes": [AttributeSkillsMap]
}
Ontology

OntologyCategory

Description

@description: A simplified representation of Marketplace ontology's 'category' (level 1 of hierarchy)

Fields
Field Name Description
id - ID! UID of an entity
preferredLabel - String A label of an entity that is displayed across Upwork. It must be a unique value.
altLabel - [String] Defines alternative labels for an entity.
slug - String A human-understandable string that is used as the last of URLs built to refer the given entity. Example: 'accounting-consulting' (for 'Accounting & Consulting' category)
ontologyId - String A semantic identifier that uniquely identifies an ontology element. Its value doesn't depend on the environment, unlike a UID identifier. Example: upwork:AdministrationSoftware
subcategories - [OntologySubcategory!]! A list of simplified 'subcategory' entities which ara children of the given category
services - [OntologyService!]! A list of simplified 'service' entities which descendants (indirect children) of the given category - or, put another way, a list of all 'services' whose top parent is the current 'category'
Example
{
  "id": "4",
  "preferredLabel": "xyz789",
  "altLabel": ["xyz789"],
  "slug": "abc123",
  "ontologyId": "xyz789",
  "subcategories": [OntologySubcategory],
  "services": [OntologyService]
}
Ontology

OntologyConnection

Fields
Field Name Description
totalCount - Int
edges - [OntologyEntityEdge!]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [OntologyEntityEdge],
  "pageInfo": PageInfo
}
Ontology

OntologyDeliverablesFilter

Fields
Input Field Description
limit - Int! Max number of responses
offset - Int
includeDeprecated - Boolean
Example
{"limit": 987, "offset": 123, "includeDeprecated": true}
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": "abc123",
  "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

Deliverable

JobCategory

Occupation

Skill

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

OntologyEntityEdge

Fields
Field Name Description
node - OntologyEntity!
cursor - String!
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!
Example
{"ontologyEntity": OntologyEntity}
Ontology

OntologyEntityStatus

Description

Defines the status of an occupation. - Active: Skill is active and available for use - Deprecated: Skill has been deprecated - Pending: Skill has been created recently and is not active yet

Values
Enum Value Description

ACTIVE

DEPRECATED

PENDING

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

OntologyGraphNode

Fields
Field Name Description
id - ID!
uid - ID
label - String!
types - [String!]
status - OntologyEntityStatus
properties - [PropertyStringMap!]
relationships - [StringListMap!]
metadata - [StringMapElement!]
Example
{
  "id": "4",
  "uid": 4,
  "label": "xyz789",
  "types": ["abc123"],
  "status": "ACTIVE",
  "properties": [PropertyStringMap],
  "relationships": [StringListMap],
  "metadata": [StringMapElement]
}
Ontology

OntologyOccupationFilter

Fields
Input Field Description
taxonomyLevel - String
offset - Int
limit - Int!
includeDeprecated - Boolean
Example
{
  "taxonomyLevel": "xyz789",
  "offset": 123,
  "limit": 123,
  "includeDeprecated": false
}
Ontology

OntologyRelatedNodes

Fields
Field Name Description
source - OntologyGraphNode!
target - OntologyGraphNode!
relationProperties - [PropertyStringMap!]!
Example
{
  "source": OntologyGraphNode,
  "target": OntologyGraphNode,
  "relationProperties": [PropertyStringMap]
}
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

@description: A simplified representation of Marketplace ontology's 'service' (level 3 of hierarchy)

Fields
Field Name Description
id - ID! UID of an entity
preferredLabel - String A label of an entity that is displayed across Upwork. It must be a unique value.
altLabel - [String] Defines alternative labels for an entity.
slug - String A human-understandable string that is used as the last of URLs built to refer the given entity. Example: 'accounting-consulting' (for 'Accounting & Consulting' category)
ontologyId - String A semantic identifier that uniquely identifies an ontology element. Its value doesn't depend on the environment, unlike a UID identifier. Example: upwork:AdministrationSoftware
Example
{
  "id": 4,
  "preferredLabel": "abc123",
  "altLabel": ["abc123"],
  "slug": "abc123",
  "ontologyId": "xyz789"
}
Ontology

OntologySkill

Fields
Field Name Description
id - ID!
preferredLabel - String
ontologyId - String
Example
{
  "id": 4,
  "preferredLabel": "abc123",
  "ontologyId": "xyz789"
}
Ontology

OntologySkillsFilter

Fields
Input Field Description
includeDeprecated - Boolean
categoriesUids - [ID]
subCategoriesUids - [ID]
servicesUids - [ID]
attributesOnly - Boolean
Example
{
  "includeDeprecated": true,
  "categoriesUids": [4],
  "subCategoriesUids": ["4"],
  "servicesUids": [4],
  "attributesOnly": false
}
Ontology

OntologySubcategory

Description

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

PropertyStringMap

Fields
Field Name Description
name - String!
propertyType - Int!
value - String!
Example
{
  "name": "abc123",
  "propertyType": 123,
  "value": "xyz789"
}
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!
allowOther - Boolean! Defines if addition of free text answers is allowed
clientQuestion - String
clientTip - String
freelancerQuestion - String
freelancerTip - String
advancedClient - Boolean! Defines advanced attribute groups which are being displayed in the bottom of the page.
client - Boolean!
freelancer - Boolean!
requiredClient - Boolean! Defines if attribute group is required or optional for clients.
requiredFreelancer - Boolean! Defines if attribute group is required or optional for freelancers.
otherClientLabel - String Defines the label that is displayed in the 'see more' dialog in job posts.
otherFreelancerLabel - String Defines the label that is displayed in the 'show more' view in profiles.
presentationMode - String
priority - Int Defines the order in which attributes and attribute groups appear in.
isRequiredBy - [String]

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

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

SkillName

Fields
Field Name Description
id - ID!
preferredLabel - String!
Example
{"id": 4, "preferredLabel": "xyz789"}
Ontology

StringListMap

Fields
Field Name Description
key - String!
value - [String!]!
Example
{
  "key": "xyz789",
  "value": ["abc123"]
}
Ontology

StringMapOccupation

Fields
Field Name Description
category - String!
services - [Occupation!]!
Example
{
  "category": "xyz789",
  "services": [Occupation]
}

Search

FreelancerProfileSearchAreaInput

Fields
Input Field Description
latitude - Float!
longitude - Float!
Example
{"latitude": 987.65, "longitude": 987.65}
Search

FreelancerProfileSearchFilter

Fields
Input Field Description
userType - FreelancerProfileSearchUserTypeEnum!
searchType - FreelancerProfileSearchType!
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",
  "searchType": "local",
  "weightedOntologyIds": [
    FreelancerProfileSearchWeightedOntologyIdInput
  ],
  "keyword": "abc123",
  "occupationIds": ["abc123"],
  "location": FreelancerProfileSearchLocationInput
}
Search

FreelancerProfileSearchLocationInput

Fields
Input Field Description
country - String
state - String
city - String
area - FreelancerProfileSearchAreaInput
Example
{
  "country": "xyz789",
  "state": "abc123",
  "city": "xyz789",
  "area": FreelancerProfileSearchAreaInput
}
Search

FreelancerProfileSearchType

Values
Enum Value Description

local

search on local pages

hire

search on hire pages

user

search freelancers for network pages
Example
"local"
Search

FreelancerProfileSearchUserTypeEnum

Values
Enum Value Description

Freelancer

Client

Example
"Freelancer"
Search

FreelancerProfileSearchWeightedOntologyIdInput

Fields
Input Field Description
ontologyId - String!
weight - Float!
Example
{"ontologyId": "abc123", "weight": 123.45}
Search

FreelancerProfilesSearchRecord

Fields
Field Name Description
id - ID Record Id
title - String title of the freelancer profile
description - String description of the freelancer's profile
shortName - String shortName of the freelancer
ciphertext - String freelancer's ciphertext
portrait - String portrait url of the freelancer
lastActiveDateTime - String DateTime when the freelancer was last active on the platform
totalHourlyJobs - Int total count of hourly jobs
totalFixedPriceJobs - Int total count of fixed price jobs
skills - [Skill] skills of the freelancer
hourlyRate - Money hourly rate of the freelancer
topRatedStatus - String Top rated status
avgFeedbackScore - Float average feedback score across all contracts
hideEarnings - Boolean boolean indicating if the earnings are hidden from the profile
freelancer - CurrentUser user details of the freelancer
location - FreelancerSearchResultLocation Freelancer's location
contracts - [FreelancerSearchResultContractSummary] Contracts executed by the freelancer
Example
{
  "id": 4,
  "title": "abc123",
  "description": "abc123",
  "shortName": "xyz789",
  "ciphertext": "abc123",
  "portrait": "abc123",
  "lastActiveDateTime": "abc123",
  "totalHourlyJobs": 987,
  "totalFixedPriceJobs": 123,
  "skills": [Skill],
  "hourlyRate": Money,
  "topRatedStatus": "abc123",
  "avgFeedbackScore": 987.65,
  "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": "xyz789",
  "ciphertext": "xyz789"
}
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
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": "xyz789"
}
Search

FreelancerSearchResultContractFeedbackSummary

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": true,
  "comment": "xyz789",
  "score": 987.65
}
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": "xyz789",
  "feedback": FreelancerSearchResultContractFeedbackSummary,
  "title": "abc123",
  "hourlyRate": Money,
  "totalHours": 123,
  "totalCharges": Money,
  "startedDateTime": "xyz789",
  "endDateTime": "xyz789"
}
Search

FreelancerSearchResultLocation

Fields
Field Name Description
country - String
city - String
state - String
Example
{
  "country": "abc123",
  "city": "abc123",
  "state": "xyz789"
}
Search

UserFreelancerProfilesSearchRecord

Fields
Field Name Description
shortName - String shortName of the freelancer
ciphertext - String freelancer's ciphertext
user - GenericUser freelancer id, ciphertext
userProfile - FreelancerProfile freelancer profile details
Example
{
  "shortName": "abc123",
  "ciphertext": "xyz789",
  "user": GenericUser,
  "userProfile": FreelancerProfile
}

Metadata

Country

Description

Information about a country

Fields
Field Name Description
id - ID
name - String Geographical name of a country
twoLetterAbbreviation - String Official two-letter abbrevation of a country. i.e. iso2Code
threeLetterAbbreviation - String Official three-letter abbreviation of a country, i.e. iso3Code
region - CountryRegion! Region that country belongs to. Currently only EU is recognized
phoneCode - String
relatedRegion - Region
relatedSubRegion - Region
active - Boolean
registrationAllowed - Boolean
Example
{
  "id": "4",
  "name": "abc123",
  "twoLetterAbbreviation": "abc123",
  "threeLetterAbbreviation": "abc123",
  "region": "EU",
  "phoneCode": "abc123",
  "relatedRegion": Region,
  "relatedSubRegion": Region,
  "active": false,
  "registrationAllowed": true
}
Metadata

CountryRegion

Values
Enum Value Description

EU

OTHER

Example
"EU"
Metadata

ReasonsMetadata

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

Region

Fields
Field Name Description
id - ID!
name - String!
parentRegion - Region
Example
{
  "id": 4,
  "name": "xyz789",
  "parentRegion": Region
}
Metadata

RequestMetadata

Fields
Field Name Description
sudo - Boolean! Indicates whether request performed in sudo mode
internal - Boolean! Indicates whether request performed internally
Example
{"sudo": false, "internal": false}
Metadata

TimeZoneRecord

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

Visitor

Fields
Field Name Description
i18n - VisitorI18N
Arguments
countryName - String!
visitorId - ID
segment - VisitorSegment Query to look up visitor segment data based on visitorId and the respective segment name
Arguments
visitorId - ID!
segmentName - String!
Example
{
  "i18n": VisitorI18N,
  "segment": VisitorSegment
}
Metadata

VisitorI18N

Fields
Field Name Description
countrySupported - Boolean
status - String
locationViewType - String
userPreferredLocationType - String
settingsFlags - VisitorI18NSettings
Example
{
  "countrySupported": false,
  "status": "abc123",
  "locationViewType": "xyz789",
  "userPreferredLocationType": "xyz789",
  "settingsFlags": VisitorI18NSettings
}
Metadata

VisitorI18NSettings

Fields
Field Name Description
showDomesticLocationFilterOnFLSearch - Boolean
showJobSearch - Boolean
showPhoneVerification - Boolean
showSmfToUpdateAddress - Boolean
showPersonalAddressAutocomplete - Boolean
showMessageContainer - Boolean
showLocationPreferenceOnJobPost - Boolean
defaultDomesticEnabled - Boolean
jobSearchDefaultedToON - Boolean
showLocationVerificationOnFWH - Boolean
domesticEnabledForFreelancersOnFLSearch - Boolean
Example
{
  "showDomesticLocationFilterOnFLSearch": false,
  "showJobSearch": false,
  "showPhoneVerification": false,
  "showSmfToUpdateAddress": false,
  "showPersonalAddressAutocomplete": true,
  "showMessageContainer": false,
  "showLocationPreferenceOnJobPost": true,
  "defaultDomesticEnabled": true,
  "jobSearchDefaultedToON": false,
  "showLocationVerificationOnFWH": false,
  "domesticEnabledForFreelancersOnFLSearch": true
}
Metadata

VisitorSegment

Description

Visitors to the site are typically categorized/segmented according to a specific criteria, such as demographics or user behavior. VisitorSegment contains information about that visitor

Fields
Field Name Description
visitorId - ID!
segmentName - String
data - String
Example
{
  "visitorId": 4,
  "segmentName": "abc123",
  "data": "xyz789"
}

Other

AccountingEntity

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

ActivitiesConnection

Fields
Field Name Description
totalCount - Int Defines total amount of activities
edges - [ActivityEdge!] Defines list of activities
page - Page Defines page information
Example
{
  "totalCount": 123,
  "edges": [ActivityEdge],
  "page": Page
}
Other

Activity

Fields
Field Name Description
totalContracts - Int!

Defines the total number of associated contracts

Example: "0"

url - String Defines associated URL
codeOrder - String

Defines code order

Example: "team_task_01"

status - String!

Defines activity status

Example: "active"

level - String

Defines activity level

Example: "team"

contracts - [ActivityContract]

Defines list of related contracts

Example: "[12345, 67890]"

userId - ID Defines the user, which the activity is assigned to
code - String! Defines activity code
createdTime - String

Defines the exact time when the activity was created

Example: "2023-01-16 09:12:57"

companyId - String

Defines the company ID, which the activity belongs to

Example: "mycompanyid"

recordId - ID! Defines unique record ID
teamId - ID!

Defines the team ID, which the activity belongs to

Example: "myteamid"

description - String

Defines activity description

Example: "my test activity"

Example
{
  "totalContracts": 987,
  "url": "abc123",
  "codeOrder": "abc123",
  "status": "xyz789",
  "level": "abc123",
  "contracts": [ActivityContract],
  "userId": 4,
  "code": "abc123",
  "createdTime": "abc123",
  "companyId": "abc123",
  "recordId": "4",
  "teamId": "4",
  "description": "xyz789"
}
Other

ActivityContract

Fields
Field Name Description
contractId - ID!

Defines contract ID

Example: "12345"

Example
{"contractId": "4"}
Other

ActivityEdge

Fields
Field Name Description
node - Activity Defines activity node
Example
{"node": Activity}
Other

ActivityFilterInput

Fields
Input Field Description
contractId - ID Filter activities assigned to a specific contract
codes - [String!] Filter by the specific task code ID. It can be the list of codes
search - String Search term to filter tasks by code and description
status - String Filter activities by status
Example
{
  "contractId": 4,
  "codes": ["abc123"],
  "search": "abc123",
  "status": "abc123"
}
Other

AddTeamActivityRequest

Fields
Input Field Description
code - String! An activity tracking code (this defines the activity tracking code)
description - String! The description of the code being added
contractIds - [ID!] List of associated contracts
budget - Float The budget for the activity
batchAssignment - BatchAssignmentOptions The level of the activity
Example
{
  "code": "xyz789",
  "description": "xyz789",
  "contractIds": ["4"],
  "budget": 123.45,
  "batchAssignment": "selectedContracts"
}
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": "xyz789"
}
Other

AvailableScope

Values
Enum Value Description

INTERNAL

PUBLIC

ENTERPRISE

Example
"INTERNAL"
Other

BatchAssignmentOptions

Values
Enum Value Description

selectedContracts

allInOrg

allInTopLevelOrg

allInMyOrgs

Example
"selectedContracts"
Other

Boolean

Description

Built-in Boolean

Example
true
Other

ContractActionResponse

Fields
Field Name Description
success - Boolean! Defines success status
Example
{"success": true}
Other

ContractOfferLastEvent

Fields
Field Name Description
reasonId - ID
message - String
lastEventTime - String
Example
{
  "reasonId": "4",
  "message": "xyz789",
  "lastEventTime": "xyz789"
}
Other

ContractOfferLegacyState

Values
Enum Value Description

Draft

DraftChanged

New

Accepted

Declined

Expired

Withdrawn

Changed

Canceled

Submitted

Example
"Draft"
Other

ContractOfferTermsVersion

Values
Enum Value Description

V1

V2

Example
"V1"
Other

ContractOfferVendorType

Values
Enum Value Description

FREELANCER

AGENCY

Example
"FREELANCER"
Other

ContractType

Values
Enum Value Description

HOURLY

FIXED

Example
"HOURLY"
Other

CreationOfferInput

Fields
Input Field Description
interactive - Boolean
idempotencyKey - String
ignoreTestAccount - Boolean
kind - OfferKindInput!
offeror - OfferorInput!
clientTeamId - ID!
vendorUser - VendorUserInput!
metadata - OfferMetadataInput!
attachments - [String!]
title - String!
description - String
contractStartDateTime - String required for Enterprise offers, optional for marketplace offers
contractEndDateTime - String required for Enterprise Compliance offers (and must not be more than 180 days into the future from the start date); optional (and ignored) for others
hourlyRateTerms - OfferHourlyRateTerms
stipendTerms - OfferStipendTerms
milestoneTerms - OfferMilestoneTerms
deliveryModel - OfferDeliveryModelInput!
closeOnAccept - Boolean False by default. Default = false
scheduledRateIncrease - OfferScheduledRateIncreaseInput only allowed for Marketplace offers
customFields - [StringMapElementInput]
offerLocation - OfferLocationInput
offerPayroll - OfferPayrollInput
Example
{
  "interactive": true,
  "idempotencyKey": "xyz789",
  "ignoreTestAccount": false,
  "kind": "Vanilla",
  "offeror": "Client",
  "clientTeamId": "4",
  "vendorUser": VendorUserInput,
  "metadata": OfferMetadataInput,
  "attachments": ["abc123"],
  "title": "xyz789",
  "description": "abc123",
  "contractStartDateTime": "abc123",
  "contractEndDateTime": "abc123",
  "hourlyRateTerms": OfferHourlyRateTerms,
  "stipendTerms": OfferStipendTerms,
  "milestoneTerms": OfferMilestoneTerms,
  "deliveryModel": "TalentMarketplace",
  "closeOnAccept": false,
  "scheduledRateIncrease": OfferScheduledRateIncreaseInput,
  "customFields": [StringMapElementInput],
  "offerLocation": OfferLocationInput,
  "offerPayroll": OfferPayrollInput
}
Other

CustomPaymentInput

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

CustomPaymentResponse

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

CustomPaymentType

Values
Enum Value Description

BONUS

Example
"BONUS"
Other

DateTime

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": "xyz789"
}
Other

DateTimeRange

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

Day

Values
Enum Value Description

MONDAY

TUESDAY

WEDNESDAY

THURSDAY

FRIDAY

SATURDAY

SUNDAY

Example
"MONDAY"
Other

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

EngagementDuration

Fields
Field Name Description
id - ID!
label - String!
weeks - Int!
Example
{"id": 4, "label": "abc123", "weeks": 123}
Other

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": "xyz789",
  "communicationScore": 123,
  "cooperationScore": 987,
  "deadlinesScore": 987,
  "qualityScore": 123,
  "skillsScore": 123
}
Other

File

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": "abc123",
  "encoding": "xyz789",
  "size": 123,
  "createdDateTime": "abc123"
}
Other

Float

Description

Built-in Float

Example
987.65
Other

FloatRange

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

FreelancerProfilesSearchRecordType

Example
FreelancerProfilesSearchRecord
Other

FreelancerType

Values
Enum Value Description

Agency

Independent

Example
"Agency"
Other

ID

Description

Built-in ID

Example
4
Other

Int

Description

Built-in Int

Example
123
Other

IntRange

Fields
Input Field Description
rangeStart - Int
rangeEnd - Int
Example
{"rangeStart": 987, "rangeEnd": 987}
Other

JobCategory

Fields
Field Name Description
id - ID!
ontologyId - String!

ontologyId is a semantic identifier that unqiuely identifies an ontology element

Its value doesn't depend on the environment (same for dev, staging, prod)

Example: upwork:AdministrationSoftware

type - [OntologyEntityType]!
entityStatus - OntologyEntityStatus!

Defines the status of an occupation.

  • 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": "xyz789",
  "type": ["OCCUPATION"],
  "entityStatus": "ACTIVE",
  "preferredLabel": "abc123",
  "definition": "abc123",
  "createdDateTime": "xyz789",
  "modifiedDateTime": "abc123"
}
Other

Language

Fields
Field Name Description
iso639Code - String! ISO 639 standards - https://en.wikipedia.org/wiki/ISO_639(example: en)
active - Boolean!
englishName - String!
Example
{
  "iso639Code": "xyz789",
  "active": false,
  "englishName": "xyz789"
}
Other

ModernizedContractOffer

Fields
Field Name Description
id - ID! offer id
kind - OfferKind kind
offeror - Offeror who creates the offer
clientUserId - ID! client user id
clientTeamId - ID! client team uid
clientOrgId - ID client org uid
vendorUserId - ID! vendor uid
vendorTeamId - ID vendor team uid, in case of agency
vendorOrgId - ID vendor org ui, it could be the sole propriator
actors - [Actor] other participants in the offer
metadata - Metadata metadata associated to the offer
expirationDateTime - String expiration time
title - String! title
description - String offer's description
attachments - [ID] attachments
contractStartDateTime - String contract start date
contractEndDateTime - String contract end date
hourlyRateTerms - HourlyTerms hourly terms
stipendTerms - StipendTerms stipend terms
milestoneTerms - MilestoneTerms milestone terms
deliveryModel - OfferDeliveryModel Delivery model
state - WorkflowOfferState! offer state
instanceId - ID the current offer id
staffingManagerId - ID staffing manager uid
contractId - ID contract id associated to the offer, once offer is accepted
agencyRootCompanyId - ID agency root organization id
type - ContractOfferType Type of the offer
vendorType - ContractOfferVendorType Vendor type of offer
termsVersion - ContractOfferTermsVersion Term Version of offer
legacyState - ContractOfferLegacyState legacy State of offer
previousOfferId - ID Previous offer id
newOfferId - ID New Offer Id
closePostingUponAccept - Boolean Close Posting upon to Accept
domesticPayroll - Boolean is offer on domestic payroll
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": "xyz789",
  "attachments": [4],
  "contractStartDateTime": "xyz789",
  "contractEndDateTime": "xyz789",
  "hourlyRateTerms": HourlyTerms,
  "stipendTerms": StipendTerms,
  "milestoneTerms": MilestoneTerms,
  "deliveryModel": "TalentMarketplace",
  "state": "Submitted",
  "instanceId": 4,
  "staffingManagerId": 4,
  "contractId": 4,
  "agencyRootCompanyId": 4,
  "type": "Hourly",
  "vendorType": "FREELANCER",
  "termsVersion": "V1",
  "legacyState": "Draft",
  "previousOfferId": "4",
  "newOfferId": "4",
  "closePostingUponAccept": false,
  "domesticPayroll": false,
  "lastEvent": ContractOfferLastEvent,
  "createdDateTime": "xyz789"
}
Other

ModernizedContractOfferList

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

Money

Fields
Field Name Description
rawValue - String! float point as a string, for example "1.23"
currency - String! ISO currency code, see https://en.wikipedia.org/wiki/ISO_4217 (for example, USD)
displayValue - String! display representation, for example, "$1.23"
Example
{
  "rawValue": "xyz789",
  "currency": "xyz789",
  "displayValue": "xyz789"
}
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

OfferCreationResponse

Fields
Field Name Description
offer - ModernizedOffer
Example
{"offer": ModernizedOffer}
Other

OfferDeliveryModelInput

Values
Enum Value Description

TalentMarketplace

Example
"TalentMarketplace"
Other

OfferHourlyRateTerms

Fields
Input Field Description
vendorRate - MoneyInput! Hourly rate associated with the offer, currency amount in the lowest currency denominations (so USD 49.12 would be 4912)
weeklyLimit - String Max hour can be logged per week, note: "0" and null/"not set" has different meanings,
manualTimeAllowed - Boolean
Example
{
  "vendorRate": MoneyInput,
  "weeklyLimit": "abc123",
  "manualTimeAllowed": true
}
Other

OfferKindInput

Values
Enum Value Description

Vanilla

Standard marketplace offer

Enterprise

Enterprise
Example
"Vanilla"
Other

OfferMetadataInput

Fields
Input Field Description
sourceType - SourceTypeInput!
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
data - String
checkoutId - ID
Example
{
  "sourceType": "JobPosting",
  "sourceId": "4",
  "occupationId": 4,
  "jobPostingId": 4,
  "data": "abc123",
  "checkoutId": 4
}
Other

OfferMilestoneTerms

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

OfferPeriodTypeInput

Values
Enum Value Description

Weekly

Example
"Weekly"
Other

OfferScheduledRateIncreaseInput

Fields
Input Field Description
rate - String
cadenceMonths - Int
Example
{"rate": "xyz789", "cadenceMonths": 987}
Other

OfferStipendTerms

Fields
Input Field Description
stipend - MoneyInput! periodic stipend
vendorRate - MoneyInput!
period - OfferPeriodTypeInput!
Example
{
  "stipend": MoneyInput,
  "vendorRate": MoneyInput,
  "period": "Weekly"
}
Other

OfferTermsMilestoneInput

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

OntologyEntityResult

Types
Union Types

Skill

Occupation

Example
Skill
Other

Page

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

PageFilterInput

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

PageInfo

Fields
Field Name Description
endCursor - String
hasNextPage - Boolean
Example
{"endCursor": "xyz789", "hasNextPage": true}
Other

Pagination

Description

Pagination

Fields
Input Field Description
after - String
first - Int!
Example
{"after": "abc123", "first": 987}
Other

Paging

Fields
Input Field Description
start - Int
rows - Int
Example
{"start": 123, "rows": 123}
Other

PagingInfo

Fields
Field Name Description
total - Int
offset - Int
count - Int
Example
{"total": 987, "offset": 987, "count": 123}
Other

Portrait

Description

Portrait of the freelancer

Fields
Field Name Description
portrait - String Link to profile portrait
portrait32 - String
portrait50 - String
portrait100 - String
portrait150 - String
portrait500 - String
Example
{
  "portrait": "xyz789",
  "portrait32": "xyz789",
  "portrait50": "xyz789",
  "portrait100": "xyz789",
  "portrait150": "abc123",
  "portrait500": "xyz789"
}
Other

PrivateTalentCloud

Description

A Talent Cloud network is an Upwork Enterprise client's private group of professional freelancers and agencies.

Fields
Field Name Description
id - ID!
name - String! Talent cloud name
creator - GenericUser! person creating the talent cloud (should generally match actorId)
creatorOrganization - GenericOrganization! organization of the person creating the TC
joinInstructions - String! Message to display to freelancers when they request to join a talent cloud
welcomeMessageToAddedFreelancers - String! Message to display to a freelancer after joining a talent cloud
joinRequestAutoApproved - Boolean! If set to false, talent cloud join requests must pass manual review
messageAfterJoinRequest - String! Message to display to a freelancer after submitting a join request to a talent cloud
joinRejectionMessage - String! Message to display to a freelancer if the TC join request was rejected
externalName - String Name to display in external (to the client company) context
active - Boolean! If the talent cloud is active or not
joinRequestNotifyUsers - [GenericUser]! Users to notify when a new join request is created
logoImageLarge - File fileStorage UID
logoImageSmall - File fileStorage UID
description - String! Talent cloud description
onboardingTaskEnabled - Boolean! Flag indicating whether or not onboarding is enabled for this talent cloud
onboardingTaskEnableUpdatedDateTime - String Timestamp when onboardingTaskEnabled has been set to true (null until that)
selectable - Boolean! If true, then talent cloud can be selected for new offers. Implies that talent cloud is active
talentCloudTasks - [TalentCloudTask] list of talent cloud task overviews
Example
{
  "id": "4",
  "name": "xyz789",
  "creator": GenericUser,
  "creatorOrganization": GenericOrganization,
  "joinInstructions": "abc123",
  "welcomeMessageToAddedFreelancers": "abc123",
  "joinRequestAutoApproved": false,
  "messageAfterJoinRequest": "xyz789",
  "joinRejectionMessage": "xyz789",
  "externalName": "xyz789",
  "active": true,
  "joinRequestNotifyUsers": [GenericUser],
  "logoImageLarge": File,
  "logoImageSmall": File,
  "description": "xyz789",
  "onboardingTaskEnabled": false,
  "onboardingTaskEnableUpdatedDateTime": "xyz789",
  "selectable": false,
  "talentCloudTasks": [TalentCloudTask]
}
Other

PrivateTalentCloudConnection

Fields
Field Name Description
totalCount - Int
edges - [PrivateTalentCloudEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [PrivateTalentCloudEdge],
  "pageInfo": PageInfo
}
Other

PrivateTalentCloudEdge

Fields
Field Name Description
cursor - String
node - PrivateTalentCloud
Example
{
  "cursor": "abc123",
  "node": PrivateTalentCloud
}
Other

ProcessAddResponse

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

ProcessUpdateResponse

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

Room

Fields
Field Name Description
id - ID! ID of the room
roomName - String Name of the dash room
organization - CurrentOrganization The organization that the room belongs to
creator - RoomUser Room creator
createdAtDateTime - String Creation time of the room
public - Boolean If true, then anyone can see and join the room If false, only invited users can join it
topic - String Room topic (a.k.a. subtitle)
owner - RoomUser User that owns the room, can be different from creator
numUnread - Int Count of unread messages
roomFavoriteDateTime - String Time when the room was marked as favorite
favorite - Boolean Flag indicating whether the room was marked as favorite
numUnreadMentions - Int Count of unread mentions
roomUsers - [RoomUser!] List of users in this room
numUsers - Int Count of users in the room
joinDateTime - String Date time when user joined this room
lastVisitedDateTime - String Date time when user last visited this room The last time when a story was posted in the room or the room was modified
lastReadDateTime - String The last time the room was visited
roomType - RoomType Type of room, can be: GROUP, INTERVIEW, ONE_ON_ONE
readOnlyDateTime - String Time when the room was marked as read-only
readOnly - Boolean Flag indicating wheter the room is marked as read-only
blockDateTime - String Time when the room was blocked
blockedBy - RoomUser User who blocked the room
hidden - Boolean Flag indicating wheter the room is marked as hidden This makes the room invisible but can be unhidden unlike deleted rooms
muted - Boolean! Flag to indicate whether this room is muted for the curent user
contractId - ID Contract assoicated with the room, if any
contract - Contract
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": 123,
  "roomFavoriteDateTime": "abc123",
  "favorite": true,
  "numUnreadMentions": 987,
  "roomUsers": [RoomUser],
  "numUsers": 123,
  "joinDateTime": "xyz789",
  "lastVisitedDateTime": "abc123",
  "lastReadDateTime": "abc123",
  "roomType": "ONE_ON_ONE",
  "readOnlyDateTime": "abc123",
  "readOnly": true,
  "blockDateTime": "xyz789",
  "blockedBy": RoomUser,
  "hidden": true,
  "muted": true,
  "contractId": 4,
  "contract": Contract,
  "vendorProposal": VendorProposal,
  "roomNote": "abc123",
  "roomNotePresent": true,
  "offerIds": [4],
  "recruiters": [GenericUser],
  "latestStory": RoomStory,
  "story": RoomStory,
  "stories": RoomStoryConnection,
  "latestStoryPreRendered": RoomStory
}
Other

RoomCategoryFilter

Values
Enum Value Description

FAVORITES

PEOPLE

INTERVIEW

GROUP

Example
"FAVORITES"
Other

RoomConnection

Fields
Field Name Description
totalCount - Int
edges - [RoomEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 123,
  "edges": [RoomEdge],
  "pageInfo": PageInfo
}
Other

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

RoomEdge

Fields
Field Name Description
node - Room
Example
{"node": Room}
Other

RoomFilter

Fields
Input Field Description
roomType_eq - RoomTypeFilter Specifies a filter by type for the list of rooms
roomPrivacy_eq - RoomPrivacyFilter Specifies a filter by the privacy of the room
subscribed_eq - Boolean If specified, only the rooms that the user is (or is not) subscribed to will be returned. Default: true
activeSince_eq - String Return only the rooms that have had new activity since the given time.
includeFavorites_eq - Boolean Include all favorite rooms, regardless of when the last activity in those rooms took place. Ignored if 'activeSince' is not set.
includeUnreadIfActive_eq - Boolean Include all rooms having unread stories, regardless of when the last activity in those rooms took place. Ignored if 'activeSince' is not set.
unreadRoomsOnly_eq - Boolean Filteres rooms that has unread stories if set to true. Note: This is mutually exclusive with 'activeSince'
local_eq - String The locale to use when stories are returned with the room
includeHidden_eq - Boolean If false filters rooms which are not hidden, otherwise return all the rooms. Default: true
objectReferenceId_eq - ID If specified, returns only rooms associated with that referenceId. If there are no rooms with that associated object reference and 'roomName' and 'roomType' are provided, creates a new room with those values and the associated object reference
roomCategory_eq - RoomCategoryFilter Filters rooms by given category
Example
{
  "roomType_eq": "ALL",
  "roomPrivacy_eq": "ALL",
  "subscribed_eq": true,
  "activeSince_eq": "xyz789",
  "includeFavorites_eq": false,
  "includeUnreadIfActive_eq": false,
  "unreadRoomsOnly_eq": true,
  "local_eq": "xyz789",
  "includeHidden_eq": false,
  "objectReferenceId_eq": 4,
  "roomCategory_eq": "FAVORITES"
}
Other

RoomPrivacyFilter

Values
Enum Value Description

ALL

PRIVATE

PUBLIC

Example
"ALL"
Other

RoomStory

Fields
Field Name Description
id - ID! ID of the story
room - Room! Information about the associated room
createdDateTime - String! Date time when the story has been created
updatedDateTime - String! Date time when the story has been last updated
user - GenericUser! Room user who created this story
message - String Message associated with the story
organization - GenericOrganization Organization context which the story was posted under.
roomStoryNote - RoomStoryNote Returns any notes or flags attached to the story, e.g. if it's marked as favorite
Example
{
  "id": 4,
  "room": Room,
  "createdDateTime": "xyz789",
  "updatedDateTime": "xyz789",
  "user": GenericUser,
  "message": "abc123",
  "organization": GenericOrganization,
  "roomStoryNote": RoomStoryNote
}
Other

RoomStoryAbuseType

Values
Enum Value Description

NONE

ABUSE

THIRDPARTY

DISINTERMEDIATION

OTHER

MESSAGE_IS_THREATENING

SPAM

BUY_UPWORK_ACCOUNT

MISREPRESENTING_IDENTITY

MISREPRESENTING_SKILLS

Example
"NONE"
Other

RoomStoryConnection

Fields
Field Name Description
totalCount - Int
edges - [RoomStoryEdge]
pageInfo - PageInfo
Example
{
  "totalCount": 987,
  "edges": [RoomStoryEdge],
  "pageInfo": PageInfo
}
Other

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

RoomStoryEdge

Fields
Field Name Description
cursor - String
node - RoomStory
Example
{
  "cursor": "abc123",
  "node": RoomStory
}
Other

RoomStoryFilter

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

RoomStoryNote

Description

Notes/Flags attached to the story by the user

Fields
Field Name Description
favorite - Boolean!
abuseType - RoomStoryAbuseType
whitelisted - Boolean!
abuseDetails - String
Example
{
  "favorite": false,
  "abuseType": "NONE",
  "whitelisted": true,
  "abuseDetails": "abc123"
}
Other

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

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

RoomTypeFilter

Values
Enum Value Description

ALL

GROUP

ONE_ON_ONE

INTERVIEW

Example
"ALL"
Other

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

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": "abc123",
  "topic": "abc123",
  "reason": "xyz789",
  "readOnly": false
}
Other

RoomUser

Fields
Field Name Description
user - GenericUser
organization - GenericOrganization
role - String
Example
{
  "user": GenericUser,
  "organization": GenericOrganization,
  "role": "abc123"
}
Other

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

SemSearchV2DoubleRange

Fields
Input Field Description
min - Float
max - Float
Example
{"min": 987.65, "max": 987.65}
Other

SemSearchV2IntRange

Fields
Input Field Description
min - Int
max - Int
Example
{"min": 987, "max": 123}
Other

SemSearchV2Profile

Fields
Field Name Description
profile - TalentProfile
Example
{"profile": TalentProfile}
Other

SemSearchV2Request

Fields
Input Field Description
paging - Paging
userQuery - String
occupationUid - String
title - String
countries - [String!]
states - [String!]
cities - [String!]
hourlyRate - SemSearchV2DoubleRange
jobSuccessScore - SemSearchV2DoubleRange
totalJobs - SemSearchV2IntRange
topRated - Boolean
risingTalent - Boolean
hasPortrait100 - Boolean
skillsNames - [String!]
skillsUids - [String!]
vemSkills - [VemSkill!]
type - FreelancerType
addAgencyPreview - Boolean
agencySearch - Boolean
publicVisibilityOnly - Boolean
Example
{
  "paging": Paging,
  "userQuery": "xyz789",
  "occupationUid": "xyz789",
  "title": "xyz789",
  "countries": ["abc123"],
  "states": ["xyz789"],
  "cities": ["xyz789"],
  "hourlyRate": SemSearchV2DoubleRange,
  "jobSuccessScore": SemSearchV2DoubleRange,
  "totalJobs": SemSearchV2IntRange,
  "topRated": true,
  "risingTalent": false,
  "hasPortrait100": true,
  "skillsNames": ["xyz789"],
  "skillsUids": ["xyz789"],
  "vemSkills": [VemSkill],
  "type": "Agency",
  "addAgencyPreview": false,
  "agencySearch": true,
  "publicVisibilityOnly": true
}
Other

SemSearchV2Response

Fields
Field Name Description
pagingInfo - PagingInfo!
profiles - [SemSearchV2Profile]!
Example
{
  "pagingInfo": PagingInfo,
  "profiles": [SemSearchV2Profile]
}
Other

Snapshot

Fields
Field Name Description
id - ID Unique identifier for the Snapshot
time - Int Time of the snapshot
contractId - String Identifier for the contract
mouseEventsCount - Int Number of mouse events
keyboardEventsCount - Int Number of keyboard events
teamName - String Team name associated with the Snapshot
status - String Status of the Snapshot
activeWindowTitle - String Title of the active window during the Snapshot
memo - String Memo associated with the Snapshot
companyId - String Company identifier associated with the Snapshot
hasScreenshot - Boolean Indicates whether the Snapshot has a screenshot
screenshotUrl - String URL of the screenshot
screenshotImage - String Path to the screenshot image
screenshotImageLarge - String Path to the large version of the screenshot image
screenshotImageMedium - String Path to the medium version of the screenshot image
screenshotImageThumbnail - String Path to the thumbnail version of the screenshot image
hasWebcam - Boolean Indicates whether the Snapshot has webcam data
webcamUrl - String URL of the webcam data
webcamImage - String Path to the webcam image
webcamImageThumbnail - String Path to the thumbnail version of the webcam image
task - String Task associated with the Snapshot
minutes - SnapshotMinutes List of events per minute for a Snapshot
Example
{
  "id": "4",
  "time": 987,
  "contractId": "xyz789",
  "mouseEventsCount": 123,
  "keyboardEventsCount": 987,
  "teamName": "xyz789",
  "status": "abc123",
  "activeWindowTitle": "abc123",
  "memo": "xyz789",
  "companyId": "abc123",
  "hasScreenshot": true,
  "screenshotUrl": "xyz789",
  "screenshotImage": "xyz789",
  "screenshotImageLarge": "abc123",
  "screenshotImageMedium": "abc123",
  "screenshotImageThumbnail": "xyz789",
  "hasWebcam": true,
  "webcamUrl": "abc123",
  "webcamImage": "xyz789",
  "webcamImageThumbnail": "xyz789",
  "task": "xyz789",
  "minutes": SnapshotMinutes
}
Other

SnapshotMinute

Fields
Field Name Description
time - Int Timestamp of event
mouse - Int Number of mouse events
keyboard - Int Number of keyboard events
Example
{"time": 123, "mouse": 123, "keyboard": 123}
Other

SnapshotMinutes

Fields
Field Name Description
minute - [SnapshotMinute]
Example
{"minute": [SnapshotMinute]}
Other

SnapshotsByContractIdInput

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

SortAttribute

Fields
Input Field Description
field - String!
sortOrder - SortOrder!
Example
{"field": "xyz789", "sortOrder": "ASC"}
Other

SortOrder

Values
Enum Value Description

ASC

DESC

Example
"ASC"
Other

SourceTypeInput

Values
Enum Value Description

JobPosting

JobApplication

Direct

Example
"JobPosting"
Other

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

String

Description

Built-in String

Example
"abc123"
Other

StringMapElement

Fields
Field Name Description
key - String!
value - String!
Example
{
  "key": "xyz789",
  "value": "xyz789"
}
Other

StringMapElementInput

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

TalentAdjustedCategoryScore

Fields
Field Name Description
averageCategoryScore - Float
Example
{"averageCategoryScore": 123.45}
Other

TalentCloudFreelancerTaskStatus

Values
Enum Value Description

NOT_STARTED

IN_PROGRESS

COMPLETE

OVERDUE

FLAGGED

WAIVED

NOT_REQUIRED

Example
"NOT_STARTED"
Other

TalentCloudSection

Fields
Field Name Description
id - ID!
talentCloud - PrivateTalentCloud
name - String
description - String
type - TalentCloudTaskSectionType
attachmentIds - [ID]
active - Boolean
orderIndex - Int
Example
{
  "id": "4",
  "talentCloud": PrivateTalentCloud,
  "name": "xyz789",
  "description": "xyz789",
  "type": "ONBOARDING",
  "attachmentIds": [4],
  "active": true,
  "orderIndex": 987
}
Other

TalentCloudTask

Fields
Field Name Description
talentCloud - PrivateTalentCloud
taskSections - [TalentCloudTaskSection]
Example
{
  "talentCloud": PrivateTalentCloud,
  "taskSections": [TalentCloudTaskSection]
}
Other

TalentCloudTaskOverview

Fields
Field Name Description
id - ID!
taskSectionIds - [ID]
name - String
completionRequired - Boolean
active - Boolean
permissions - [TalentCloudTaskOverviewPermission]
primaryTaskOwner - TalentCloudTaskRole
Example
{
  "id": "4",
  "taskSectionIds": ["4"],
  "name": "abc123",
  "completionRequired": true,
  "active": false,
  "permissions": [TalentCloudTaskOverviewPermission],
  "primaryTaskOwner": "FREELANCER"
}
Other

TalentCloudTaskOverviewPermission

Fields
Field Name Description
role - TalentCloudTaskRole
permission - TalentCloudTaskPermission
Example
{"role": "FREELANCER", "permission": "NO"}
Other

TalentCloudTaskPermission

Values
Enum Value Description

NO

VIEW

WRITE

Example
"NO"
Other

TalentCloudTaskRole

Values
Enum Value Description

FREELANCER

HIRING_MANAGER

ADMINISTRATOR

COMPLIANCE_FUNCTIONS

Example
"FREELANCER"
Other

TalentCloudTaskSection

Fields
Field Name Description
taskSectionDetails - TalentCloudSection
tasks - [TalentCloudTaskOverview]
Example
{
  "taskSectionDetails": TalentCloudSection,
  "tasks": [TalentCloudTaskOverview]
}
Other

TalentCloudTaskSectionType

Values
Enum Value Description

ONBOARDING

OFFBOARDING

FOR_PAYROLLED_EMPLOYEES

Example
"ONBOARDING"
Other

TalentCloudTasksInputFilter

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

TalentCommunityCertificate

Fields
Field Name Description
name - String
description - String
logoUrl - String
verificationMethod - String
provider - String
providerLink - String
duration - Int
classifications - [TalentDiversityCertificateClassification]
status - TalentCommunityCertificateStatus
Example
{
  "name": "xyz789",
  "description": "xyz789",
  "logoUrl": "xyz789",
  "verificationMethod": "abc123",
  "provider": "abc123",
  "providerLink": "abc123",
  "duration": 123,
  "classifications": [
    TalentDiversityCertificateClassification
  ],
  "status": "PENDING"
}
Other

TalentCommunityCertificateStatus

Values
Enum Value Description

PENDING

VERIFIED

REJECTED

EXPIRED

SELF_REPORTED

AWAITING_CONFIRMATION

Example
"PENDING"
Other

TalentCommunityCertificateVisibility

Values
Enum Value Description

PUBLIC

ENTERPRISE_CLIENTS_ONLY

PRIVATE

Example
"PUBLIC"
Other

TalentDiversityCertificateClassification

Fields
Field Name Description
id - String
name - String
Example
{
  "id": "xyz789",
  "name": "abc123"
}
Other

TalentEducationRecord

Description

deprecated: use TalentProfileEducationRecord

Fields
Field Name Description
id - String
personId - String
institutionName - String
standardizedInstitutionId - String
areaOfStudy - String
standardizedAreaOfStudyId - String
degree - String
standardizedDegreeId - String
startDateTime - String
endDateTime - String
comment - String
Example
{
  "id": "abc123",
  "personId": "xyz789",
  "institutionName": "xyz789",
  "standardizedInstitutionId": "xyz789",
  "areaOfStudy": "xyz789",
  "standardizedAreaOfStudyId": "xyz789",
  "degree": "abc123",
  "standardizedDegreeId": "abc123",
  "startDateTime": "abc123",
  "endDateTime": "abc123",
  "comment": "abc123"
}
Other

TalentJobCategory

Fields
Field Name Description
id - String
name - String
Example
{
  "id": "abc123",
  "name": "xyz789"
}
Other

TalentJobCategoryGroup

Fields
Field Name Description
id - String
name - String
selectedCategories - [TalentJobCategory]
Example
{
  "id": "abc123",
  "name": "abc123",
  "selectedCategories": [TalentJobCategory]
}
Other

TalentPersonAvailability

Fields
Field Name Description
personId - String
capacity - FreelancerProfileAvailabilityCapacity
createdDateTime - String
availabilityDateTime - String
updatedDateTime - String
purchasedInvitationBadge - TalentPurchasedInvitationBadge
minHours - Int
maxHours - Int
availableDays - [Day]!
Example
{
  "personId": "abc123",
  "capacity": "fullTime",
  "createdDateTime": "xyz789",
  "availabilityDateTime": "abc123",
  "updatedDateTime": "xyz789",
  "purchasedInvitationBadge": TalentPurchasedInvitationBadge,
  "minHours": 987,
  "maxHours": 123,
  "availableDays": ["MONDAY"]
}
Other

TalentProfile

Fields
Field Name Description
personId - ID! person id added for sbe batch loader
identity - TalentProfileIdentity profile parts
personalData - TalentProfilePersonalData
preferences - TalentProfileUserPreferences
settings - TalentProfileSettings
personAvailability - TalentPersonAvailability
projectList - TalentProjectList
communityCertificates - [TalentProfileCommunityCertificate]
profileCompleteness - TalentProfileCompletenessSummary
otherExperiences - [TalentProfileOtherExperience]
educationRecords - [TalentEducationRecord]
employmentRecords - [TalentProfileEmploymentRecord]
skills - [TalentProfilePersonSkill]
jobCategories - [TalentJobCategoryGroup]
profileAggregates - TalentProfileAggregate
specializedProfiles - [TalentSpecializedProfile!]
specializedProfilesSkills - [TalentSpecializedProfileSkill!]
specializedProfilesProjects - [TalentSpecializedProfilesProject!]
Example
{
  "personId": 4,
  "identity": TalentProfileIdentity,
  "personalData": TalentProfilePersonalData,
  "preferences": TalentProfileUserPreferences,
  "settings": TalentProfileSettings,
  "personAvailability": TalentPersonAvailability,
  "projectList": TalentProjectList,
  "communityCertificates": [
    TalentProfileCommunityCertificate
  ],
  "profileCompleteness": TalentProfileCompletenessSummary,
  "otherExperiences": [TalentProfileOtherExperience],
  "educationRecords": [TalentEducationRecord],
  "employmentRecords": [TalentProfileEmploymentRecord],
  "skills": [TalentProfilePersonSkill],
  "jobCategories": [TalentJobCategoryGroup],
  "profileAggregates": TalentProfileAggregate,
  "specializedProfiles": [TalentSpecializedProfile],
  "specializedProfilesSkills": [
    TalentSpecializedProfileSkill
  ],
  "specializedProfilesProjects": [
    TalentSpecializedProfilesProject
  ]
}
Other

TalentProfileAggregate

Fields
Field Name Description
lastWorkedOn - String
totalHourlyJobs - Int
totalFixedJobs - Int
topRatedStatus - String
totalFeedback - Float
totalEarnings - Float
adjustedCategoryScores - [TalentAdjustedCategoryScore]
totalJobs - Int
Example
{
  "lastWorkedOn": "xyz789",
  "totalHourlyJobs": 123,
  "totalFixedJobs": 987,
  "topRatedStatus": "xyz789",
  "totalFeedback": 123.45,
  "totalEarnings": 123.45,
  "adjustedCategoryScores": [TalentAdjustedCategoryScore],
  "totalJobs": 123
}
Other

TalentProfileCommunityCertificate

Fields
Field Name Description
personId - String
certificateAttachmentId - String
certificationNumber - String
expirationDate - String
businessName - String
visibility - TalentCommunityCertificateVisibility
certificate - TalentCommunityCertificate
Example
{
  "personId": "xyz789",
  "certificateAttachmentId": "abc123",
  "certificationNumber": "abc123",
  "expirationDate": "xyz789",
  "businessName": "abc123",
  "visibility": "PUBLIC",
  "certificate": TalentCommunityCertificate
}
Other

TalentProfileCompletenessSummary

Fields
Field Name Description
personId - String
pciActual - Int pci stands for profile completeness index
pciDisplay - Int
pciAction - String
pciActionCredit - Int
pciDateTime - String
actionForEmptySection - String
skillsCount - Int
employmentRecordCount - Int
portraitExists - Boolean
overviewExists - Boolean
passedTestsCount - Int
educationRecordCount - Int
certificatesCount - Int
otherExperiencesCount - Int
portfolioCount - Int
esnCount - Int
updatedDateTime - String
Example
{
  "personId": "abc123",
  "pciActual": 987,
  "pciDisplay": 123,
  "pciAction": "xyz789",
  "pciActionCredit": 987,
  "pciDateTime": "abc123",
  "actionForEmptySection": "abc123",
  "skillsCount": 987,
  "employmentRecordCount": 123,
  "portraitExists": true,
  "overviewExists": true,
  "passedTestsCount": 123,
  "educationRecordCount": 123,
  "certificatesCount": 123,
  "otherExperiencesCount": 123,
  "portfolioCount": 987,
  "esnCount": 123,
  "updatedDateTime": "xyz789"
}
Other

TalentProfileEmploymentRecord

Description

deprecated: use TalentProfileEmploymentHistoryRecord

Fields
Field Name Description
id - String
personId - String
companyName - String
jobTitle - String
standardizedCompanyId - String
standardizedJobTitleId - String
role - String
startDateTime - String
endDateTime - String
description - String
city - String
country - String
Example
{
  "id": "xyz789",
  "personId": "abc123",
  "companyName": "abc123",
  "jobTitle": "abc123",
  "standardizedCompanyId": "xyz789",
  "standardizedJobTitleId": "xyz789",
  "role": "xyz789",
  "startDateTime": "xyz789",
  "endDateTime": "abc123",
  "description": "xyz789",
  "city": "xyz789",
  "country": "abc123"
}
Other

TalentProfileIdentity

Fields
Field Name Description
id - String
ciphertext - String
Example
{
  "id": "xyz789",
  "ciphertext": "xyz789"
}
Other

TalentProfileOtherExperience

Fields
Field Name Description
id - ID!
personId - ID
subject - String
description - String
active - Boolean
Example
{
  "id": 4,
  "personId": "4",
  "subject": "abc123",
  "description": "abc123",
  "active": true
}
Other

TalentProfilePersonalData

Fields
Field Name Description
firstName - String!
lastName - String!
portrait - Portrait
title - String Profile Title
description - String Profile Description
chargeRate - Money! Freelancer's typical billing rate
profileUrl - String link to the freelancer's profile
profileState - PersonalDataProfileState under Review, auto rejected, rejected, accepted etc.
location - PersonalDataLocation Personal Data location
Example
{
  "firstName": "xyz789",
  "lastName": "xyz789",
  "portrait": Portrait,
  "title": "abc123",
  "description": "xyz789",
  "chargeRate": Money,
  "profileUrl": "xyz789",
  "profileState": "IN_PROGRESS",
  "location": PersonalDataLocation
}
Other

TalentProfilePersonSkill

Fields
Field Name Description
id - ID
skill - String
prettyName - String
status - String
description - String
externalLink - String
wikipediaPageId - String
freebaseMachineId - String
migrateTo - String
ctime - String
mtime - String
rank - String
ontologySkill - Skill applicable fields of ontology skill in talent profile id, ontologyId, preferredLabel, entityStatus, allowMultipleClient, allowMultipleFreelancer, allowOther, advancedClient, client, freelancer, requiredClient, requiredFreelancer, priority, legacySkillNid, legacySkillId
parentOntologySkill - Skill
Example
{
  "id": "4",
  "skill": "xyz789",
  "prettyName": "abc123",
  "status": "abc123",
  "description": "abc123",
  "externalLink": "xyz789",
  "wikipediaPageId": "xyz789",
  "freebaseMachineId": "xyz789",
  "migrateTo": "abc123",
  "ctime": "xyz789",
  "mtime": "xyz789",
  "rank": "abc123",
  "ontologySkill": Skill,
  "parentOntologySkill": Skill
}
Other

TalentProfileProject

Fields
Field Name Description
id - ID!
title - String
description - String
projectContractLink - TalentProjectContractLink
thumbnail - String
thumbnailOriginal - String
projectUrl - String
completionDateTime - String
public - Boolean
rank - Int
attachments - [TalentProfileProjectAttachment]
skills - [String]
creationDateTime - String
categoryId - ID
videoUrl - String
occupationId - String
projectType - FreelancerProfileProjectType
role - String
projectGoal - String
solution - String
primaryImageId - String
tags - [TalentProfileProjectTag]
modificationDateTime - String
developerId - String
thumbnailId - String
thumbnailOriginalId - String
category - String
subCategory - String
Example
{
  "id": "4",
  "title": "xyz789",
  "description": "abc123",
  "projectContractLink": TalentProjectContractLink,
  "thumbnail": "abc123",
  "thumbnailOriginal": "xyz789",
  "projectUrl": "xyz789",
  "completionDateTime": "abc123",
  "public": true,
  "rank": 123,
  "attachments": [TalentProfileProjectAttachment],
  "skills": ["xyz789"],
  "creationDateTime": "xyz789",
  "categoryId": "4",
  "videoUrl": "xyz789",
  "occupationId": "abc123",
  "projectType": "CLASSIC_VIEW",
  "role": "abc123",
  "projectGoal": "abc123",
  "solution": "xyz789",
  "primaryImageId": "abc123",
  "tags": [TalentProfileProjectTag],
  "modificationDateTime": "xyz789",
  "developerId": "abc123",
  "thumbnailId": "xyz789",
  "thumbnailOriginalId": "abc123",
  "category": "xyz789",
  "subCategory": "abc123"
}
Other

TalentProfileProjectAttachment

Fields
Field Name Description
id - ID
type - String
title - String
attachmentName - String
attachmentSize - Int
originalAttachment - String
imageSmall - String
imageMiddle - String
imageLarge - String
rank - Int
creationDateTime - String
description - String
videoUrl - String
imageFixedWidth - String
group - String
Example
{
  "id": 4,
  "type": "abc123",
  "title": "xyz789",
  "attachmentName": "xyz789",
  "attachmentSize": 987,
  "originalAttachment": "abc123",
  "imageSmall": "abc123",
  "imageMiddle": "abc123",
  "imageLarge": "abc123",
  "rank": 123,
  "creationDateTime": "abc123",
  "description": "xyz789",
  "videoUrl": "xyz789",
  "imageFixedWidth": "xyz789",
  "group": "abc123"
}
Other

TalentProfileProjectTag

Fields
Field Name Description
id - ID
skill - Skill
parentSkill - Skill
Example
{
  "id": 4,
  "skill": Skill,
  "parentSkill": Skill
}
Other

TalentProfileSettings

Fields
Field Name Description
provider - Boolean
suspended - Boolean
disabled - Boolean
status - String
updatedDateTime - String
Example
{
  "provider": true,
  "suspended": false,
  "disabled": true,
  "status": "abc123",
  "updatedDateTime": "xyz789"
}
Other

TalentProfileSpecializedProject

Fields
Field Name Description
id - ID!
title - String
description - String
projectContractLink - TalentProjectContractLink
thumbnail - String
thumbnailOriginal - String
projectUrl - String
completionDateTime - String
public - Boolean
rank - Int
attachments - [TalentProfileProjectAttachment]
creationDateTime - String
categoryId - ID
videoUrl - String
occupationId - String
projectType - FreelancerProfileProjectType
role - String
projectGoal - String
solution - String
primaryImageId - String
modificationDateTime - String
thumbnailId - String
thumbnailOriginalId - String
category - String
subCategory - String
Example
{
  "id": "4",
  "title": "abc123",
  "description": "xyz789",
  "projectContractLink": TalentProjectContractLink,
  "thumbnail": "xyz789",
  "thumbnailOriginal": "abc123",
  "projectUrl": "abc123",
  "completionDateTime": "xyz789",
  "public": true,
  "rank": 987,
  "attachments": [TalentProfileProjectAttachment],
  "creationDateTime": "abc123",
  "categoryId": "4",
  "videoUrl": "abc123",
  "occupationId": "xyz789",
  "projectType": "CLASSIC_VIEW",
  "role": "xyz789",
  "projectGoal": "xyz789",
  "solution": "xyz789",
  "primaryImageId": "xyz789",
  "modificationDateTime": "xyz789",
  "thumbnailId": "xyz789",
  "thumbnailOriginalId": "xyz789",
  "category": "xyz789",
  "subCategory": "xyz789"
}
Other

TalentProfileStatus

Values
Enum Value Description

DRAFT

PUBLISHED

Example
"DRAFT"
Other

TalentProfileUserPreferences

Fields
Field Name Description
visibilityLevel - FreelancerProfileVisibility
hideAgencyEarnings - Boolean
hideEarnings - Boolean
exposeFullName - Boolean
clientFeedbackOptional - Boolean
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
}
Other

TalentProjectList

Fields
Field Name Description
projects - [TalentProfileProject]
totalProjects - Int
updatedDateTime - String
Example
{
  "projects": [TalentProfileProject],
  "totalProjects": 987,
  "updatedDateTime": "abc123"
}
Other

TalentPurchasedInvitationBadge

Fields
Field Name Description
active - Boolean
maxPrice - Int
nextRenewalAt - String
Example
{
  "active": true,
  "maxPrice": 123,
  "nextRenewalAt": "xyz789"
}
Other

TalentSkillNodeEdge

Fields
Field Name Description
skill - Skill
Example
{"skill": Skill}
Other

TalentSpecializedProfile

Fields
Field Name Description
personId - String
profileId - String
occupationId - String
status - TalentProfileStatus
rank - Int
occupations - [String]
primary - Boolean
title - String
description - String
hourlyRate - Money
weblink - String
Example
{
  "personId": "abc123",
  "profileId": "abc123",
  "occupationId": "xyz789",
  "status": "DRAFT",
  "rank": 123,
  "occupations": ["xyz789"],
  "primary": true,
  "title": "abc123",
  "description": "xyz789",
  "hourlyRate": Money,
  "weblink": "abc123"
}
Other

TalentSpecializedProfileSkill

Fields
Field Name Description
skills - [TalentSpecializedProfileSkillNode]
Example
{"skills": [TalentSpecializedProfileSkillNode]}
Other

TalentSpecializedProfileSkillNode

Fields
Field Name Description
ontologySkill - TalentSkillNodeEdge
parentOntologySkill - TalentSkillNodeEdge
Example
{
  "ontologySkill": TalentSkillNodeEdge,
  "parentOntologySkill": TalentSkillNodeEdge
}
Other

TalentSpecializedProfilesProject

Fields
Field Name Description
personId - ID
profileId - ID
project - TalentProfileSpecializedProject
Example
{
  "personId": "4",
  "profileId": 4,
  "project": TalentProfileSpecializedProject
}
Other

UpdateRoomStoryResponse

Fields
Field Name Description
status - String!
Example
{"status": "abc123"}
Other

UpdateTaskStatus

Fields
Input Field Description
taskId - ID!
talentCloudId - ID!
freelancerId - ID!
taskUpdateComment - String
attachmentIds - [ID!]
taskStatus - TalentCloudFreelancerTaskStatus
Example
{
  "taskId": "4",
  "talentCloudId": 4,
  "freelancerId": 4,
  "taskUpdateComment": "abc123",
  "attachmentIds": [4],
  "taskStatus": "NOT_STARTED"
}
Other

UpdateTeamActivityRequest

Fields
Input Field Description
code - String! An activity tracking code (this defines the activity tracking code)
description - String! The description of the code being added
url - String The location where more info on the code can be found (the URL can be used to direct the user to more info about the code being entered)
contractIds - [ID!] List of associated contracts
budget - Float Budget for the activity
batchAssignment - BatchAssignmentOptions The assignment level of the activity
Example
{
  "code": "abc123",
  "description": "abc123",
  "url": "xyz789",
  "contractIds": ["4"],
  "budget": 123.45,
  "batchAssignment": "selectedContracts"
}
Other

UpdateWorkflowTaskDetailsInput

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

UpdateWorkflowTaskResult

Fields
Field Name Description
workflowId - ID
updatedTaskView - WorkflowTaskView
Example
{"workflowId": 4, "updatedTaskView": WorkflowTaskView}
Other

VemSkill

Fields
Input Field Description
skill - String
weight - Float
Example
{"skill": "abc123", "weight": 987.65}
Other

VendorUserInput

Description

User info associated with the offer

Fields
Input Field Description
userId - ID!
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"
}
Other

WithdrawOfferInput

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

WithdrawReason

Values
Enum Value Description

OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER

OFFER_WITHDRAW_REASON_NO_LONGER_HIRING_FOR_THE_JOB

OFFER_WITHDRAW_REASON_NEED_TO_MODIFY

OFFER_WITHDRAW_REASON_FREELANCER_UNRESPONSIVE

OFFER_WITHDRAW_REASON_SENT_BY_ACCIDENT

OFFER_WITHDRAW_REASON_FREELANCER_VIOLATED_TERMS_OF_SERVICE

OFFER_WITHDRAW_REASON_OTHER_L1

OFFER_WITHDRAW_REASON_NOT_AGREE_ON_THE_TERMS

API_REAS_JOB_EXPIRED

API_REAS_JOB_INAPPROPRIATE

Example
"OFFER_WITHDRAW_REASON_HIRED_DIFFERENT_FREELANCER"
Other

WorkdayResult

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

WorkdaysInput

Fields
Input Field Description
contractIds - [ID!]!
timeRange - DateTimeRange!
offsetInSeconds - Int
Example
{
  "contractIds": [4],
  "timeRange": DateTimeRange,
  "offsetInSeconds": 987
}
Other

WorkDiaryCellActivityByMinute

Description

Activity events per minute for a particular WorkDiary timecell

Fields
Field Name Description
timeStamp - Int! timestamp of the snapshot
mouseEvents - Int! The number of mouse events during the snapshot
keyboardEvents - Int! The number of keyboard during the snapshot
active - Boolean! Should this snapshot be considered as active
Example
{"timeStamp": 123, "mouseEvents": 987, "keyboardEvents": 123, "active": false}
Other

WorkDiaryCellActivityByMinuteResult

Fields
Field Name Description
activities - [WorkDiaryCellActivityByMinute!]!
Example
{"activities": [WorkDiaryCellActivityByMinute]}
Other

WorkDiaryCompany

Fields
Field Name Description
total - Int
snapshots - [WorkDiaryCompanySnapshot]
Example
{"total": 123, "snapshots": [WorkDiaryCompanySnapshot]}
Other

WorkDiaryCompanyContract

Fields
Field Name Description
id - ID
userId - String
contractTitle - String
Example
{
  "id": "4",
  "userId": "abc123",
  "contractTitle": "xyz789"
}
Other

WorkDiaryCompanyInput

Fields
Input Field Description
companyId - ID!
date - String!
Example
{"companyId": 4, "date": "xyz789"}
Other

WorkDiaryCompanySnapshot

Fields
Field Name Description
contract - WorkDiaryCompanyContract
user - WorkDiaryCompanyUser
duration - String
durationInt - Int
task - WorkDiaryCompanySnapshotTask
time - WorkDiaryCompanyTime
screenshots - [WorkDiaryCompanySnapshotScreenshot]
Example
{
  "contract": WorkDiaryCompanyContract,
  "user": WorkDiaryCompanyUser,
  "duration": "abc123",
  "durationInt": 123,
  "task": WorkDiaryCompanySnapshotTask,
  "time": WorkDiaryCompanyTime,
  "screenshots": [WorkDiaryCompanySnapshotScreenshot]
}
Other

WorkDiaryCompanySnapshotScreenshot

Fields
Field Name Description
activity - Int
screenshotUrl - String
screenshotImage - String
screenshotImageLarge - String
screenshotImageMedium - String
screenshotImageThumbnail - String
hasScreenshot - Boolean
hasWebcam - Boolean
webcamUrl - String
webcamImage - String
webcamImageThumbnail - String
flags - WorkDiaryCompanySnapshotScreenshotFlag
Example
{
  "activity": 987,
  "screenshotUrl": "abc123",
  "screenshotImage": "xyz789",
  "screenshotImageLarge": "xyz789",
  "screenshotImageMedium": "abc123",
  "screenshotImageThumbnail": "xyz789",
  "hasScreenshot": false,
  "hasWebcam": false,
  "webcamUrl": "abc123",
  "webcamImage": "xyz789",
  "webcamImageThumbnail": "abc123",
  "flags": WorkDiaryCompanySnapshotScreenshotFlag
}
Other

WorkDiaryCompanySnapshotScreenshotFlag

Fields
Field Name Description
hideScreenshot - Boolean
downSampleScreenshots - Boolean
Example
{"hideScreenshot": false, "downSampleScreenshots": false}
Other

WorkDiaryCompanySnapshotTask

Fields
Field Name Description
id - String
code - String
description - String
memo - String
Example
{
  "id": "xyz789",
  "code": "abc123",
  "description": "abc123",
  "memo": "xyz789"
}
Other

WorkDiaryCompanyTime

Fields
Field Name Description
trackedTime - String
manualTime - String
overtime - String
firstWorked - String
lastWorked - String
firstWorkedInt - Int
lastWorkedInt - Int
lastScreenshot - String
Example
{
  "trackedTime": "abc123",
  "manualTime": "xyz789",
  "overtime": "abc123",
  "firstWorked": "abc123",
  "lastWorked": "abc123",
  "firstWorkedInt": 987,
  "lastWorkedInt": 123,
  "lastScreenshot": "abc123"
}
Other

WorkDiaryCompanyUser

Fields
Field Name Description
id - ID
name - String
portraitUrl - String
Example
{
  "id": "4",
  "name": "xyz789",
  "portraitUrl": "abc123"
}
Other

WorkDiaryContract

Fields
Field Name Description
workDiaryMetadata - WorkDiaryMetadata
workDiaryTimeCells - [WorkDiaryTimeCell!]
Example
{
  "workDiaryMetadata": WorkDiaryMetadata,
  "workDiaryTimeCells": [WorkDiaryTimeCell]
}
Other

WorkDiaryContractInput

Fields
Input Field Description
contractId - ID!
date - String!
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
}
Other

WorkDiaryMetadata

Fields
Field Name Description
timezoneOffset - String!
archivingDateTime - String!
Example
{
  "timezoneOffset": "xyz789",
  "archivingDateTime": "xyz789"
}
Other

WorkDiaryTask

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

WorkDiaryTimeCell

Description

Timecell is the time period or the duration of time which is billable by the contractor. Typically each workDiary timecell consists of 10 billable minutes.

Fields
Field Name Description
cellDateTime - DateTime the timestamp that denotes the beginning of timecell
snapshotDateTime - DateTime the timestamp at which the snapshot has been taken during the timecell
overtime - Boolean Should this timelog entry be considered overtime, this is available only if "useLegacyEndpoint" is not set to true
manual - Boolean True if the contractor has entered manual time for this timecell
activityLevel - Int Activity level that is a measure (derived out of) keyboard events and mouse events during this timecell
memo - String Memo of the work done during this timecell
task - WorkDiaryTask The task eg: Jira Task associated with this timecell
mouseEventsCount - Int The number of mouse events during this timecell
keyboardEventsCount - Int The number of keyboard events during this timecell
activeWindowTitle - String What is the title of the window, which was active during the screen capture
hideScreenshots - Boolean should this screenshot be hidden
hasScreenshot - Boolean is there a screenshot associated with this timecell
screenshotImageUrl - String The image url of the screenshot associated with this timecell
screenshotImageUrlMedium - String The image url (medium size) of the screenshot associated with this timecell
screenshotImageThumbnail - String The thumbnail of the screenshot associated with this timecell
webcamEnabled - Boolean Was there a webcam associated with this timecell
webcamImageUrl - String The webcam image associated with this timecell
webcamImageThumbnail - String The thumbnail url of the webcam image associated with this timecell
snapshotExpired - Boolean Has the snapshot associated expired
Example
{
  "cellDateTime": DateTime,
  "snapshotDateTime": DateTime,
  "overtime": false,
  "manual": true,
  "activityLevel": 987,
  "memo": "xyz789",
  "task": WorkDiaryTask,
  "mouseEventsCount": 123,
  "keyboardEventsCount": 123,
  "activeWindowTitle": "abc123",
  "hideScreenshots": true,
  "hasScreenshot": false,
  "screenshotImageUrl": "abc123",
  "screenshotImageUrlMedium": "xyz789",
  "screenshotImageThumbnail": "xyz789",
  "webcamEnabled": true,
  "webcamImageUrl": "xyz789",
  "webcamImageThumbnail": "abc123",
  "snapshotExpired": true
}
Other

WorkflowAssociationView

Fields
Field Name Description
entityType - String
entityValue - String
Example
{
  "entityType": "xyz789",
  "entityValue": "xyz789"
}
Other

WorkflowOnboardingStatus

Values
Enum Value Description

NOT_STARTED

IN_PROGRESS

COMPLETED

CONTINGENT_START

WITHDRAWN

WAIVED

Example
"NOT_STARTED"
Other

WorkflowTaskAssigneeView

Fields
Field Name Description
entityType - String
entityId - ID
Example
{"entityType": "abc123", "entityId": 4}
Other

WorkflowTaskComment

Fields
Field Name Description
id - ID
message - String
createdDateTime - String
createdBy - String
visibleToClient - Boolean
attachments - [WorkflowTaskCommentAttachments]
Example
{
  "id": "4",
  "message": "abc123",
  "createdDateTime": "xyz789",
  "createdBy": "abc123",
  "visibleToClient": false,
  "attachments": [WorkflowTaskCommentAttachments]
}
Other

WorkflowTaskCommentAttachments

Fields
Field Name Description
id - ID
name - String
type - String
Example
{
  "id": "4",
  "name": "abc123",
  "type": "abc123"
}
Other

WorkflowTaskCustomAttribute

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

WorkflowTaskLabel

Values
Enum Value Description

FLAGGED

OVERDUE

Example
"FLAGGED"
Other

WorkflowTaskPatchLabelInput

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

WorkflowTaskStatus

Values
Enum Value Description

NOT_OPEN

OPEN

IN_PROGRESS

COMPLETED

WAIVED

PAUSED

PENDING

Example
"NOT_OPEN"
Other

WorkflowTaskView

Fields
Field Name Description
id - ID
type - String
title - String
description - String
status - WorkflowTaskStatus!
assignee - WorkflowTaskAssigneeView
comments - [WorkflowTaskComment!]
createdDateTime - String
finishedDateTime - String
dueDate - String
modifiedDateTime - String
createdBy - String
modifiedBy - String
labels - [WorkflowTaskLabel!]
active - Boolean
notRequired - Boolean
dependsOn - String
externalTaskId - String
delayReasons - String
customAttributes - [WorkflowTaskCustomAttribute!]
order - Int
canEdit - Boolean
owner - Boolean Provides a possibility for the user to filter on UI it's own tasks .
Example
{
  "id": 4,
  "type": "xyz789",
  "title": "xyz789",
  "description": "xyz789",
  "status": "NOT_OPEN",
  "assignee": WorkflowTaskAssigneeView,
  "comments": [WorkflowTaskComment],
  "createdDateTime": "abc123",
  "finishedDateTime": "xyz789",
  "dueDate": "abc123",
  "modifiedDateTime": "abc123",
  "createdBy": "xyz789",
  "modifiedBy": "abc123",
  "labels": ["FLAGGED"],
  "active": true,
  "notRequired": true,
  "dependsOn": "abc123",
  "externalTaskId": "xyz789",
  "delayReasons": "xyz789",
  "customAttributes": [WorkflowTaskCustomAttribute],
  "order": 987,
  "canEdit": false,
  "owner": true
}
Other

WorkflowView

Fields
Field Name Description
id - ID
type - String
onboardedStatus - WorkflowOnboardingStatus
totalTasks - Int
notStartedTasksCount - Int
inProgressTasksCount - Int
completedTasksCount - Int
tasksOverdue - Int
percentComplete - Int
startDateTime - String
completionDateTime - String
associations - [WorkflowAssociationView!]
tasks - [WorkflowTaskView!]
createdDateTime - String
modifiedDateTime - String
createdBy - String
modifiedBy - String
Example
{
  "id": "4",
  "type": "abc123",
  "onboardedStatus": "NOT_STARTED",
  "totalTasks": 987,
  "notStartedTasksCount": 123,
  "inProgressTasksCount": 123,
  "completedTasksCount": 987,
  "tasksOverdue": 123,
  "percentComplete": 987,
  "startDateTime": "xyz789",
  "completionDateTime": "xyz789",
  "associations": [WorkflowAssociationView],
  "tasks": [WorkflowTaskView],
  "createdDateTime": "xyz789",
  "modifiedDateTime": "xyz789",
  "createdBy": "abc123",
  "modifiedBy": "xyz789"
}