---
title: entities.project
description: Read project records with the project repository, and change them with the project mutations. Same records as the REST Projects entity.
canonical: https://developers.coevera.com/reference/graphql/project/
section: graphql
verification: schema
generatedFrom: schema f155746 (2026-10-20)
publisher: Coevera
---

# entities.project

Read project records with the project repository, and change them with the project mutations. Same records as the REST Projects entity.

REST: [Projects](https://developers.coevera.com/reference/rest/projects.md).

## Queries

- `getById(entityId: ID!): ProjectEntity` Returns the record with the given id, or null when there is none. Deleted records are returned as well.
- `getByIds(entityIds: [ID!]!): [ProjectEntity!]!` Returns the records with the given ids; ids without a record are left out. Deleted records are returned as well.
- `getAll(limit: Int, offset: Int, filter: ProjectFilterInput, orderBy: [ProjectOrderByInput!], includeDeleted: Boolean): [ProjectEntity!]!` Returns the records that match the filter, paged with limit and offset.
- `getByCriteria(filter: ProjectFilterInput, orderBy: [ProjectOrderByInput!], includeDeleted: Boolean, before: String, after: String, first: Int, last: Int): ProjectEntityConnection` Returns the records that match the filter as a cursor-paginated connection.
- `getChangedFieldsSinceRevision(id: UUID!, revision: Int!): [UUID!]!` Returns the ids of the fields of a record that changed after the given revision. Returns an empty list for entities without change tracking.
- `getBySession(includedIds: [UUID!]!, excludedIds: [UUID!]!, sessionId: String!, before: String, after: String, first: Int, last: Int): ProjectEntityConnection` Returns a page of records selected in a list or report: all records of the given result plus the explicitly included ids, minus the excluded ids.
- `getByIdFormatted(id: UUID!, fieldIds: [UUID!]): JSONString` Returns the values of a record's fields formatted for display, keyed by field id.
- `autoPrefill(mappingId: UUID!, entityId: UUID!, targetEntityTypeId: UUID): ProjectEntity!` Returns a new, unsaved record pre-filled from a source record according to a field mapping. Nothing is saved; the returned values can be used as input for create.

## Mutations

- `changeOwnershipProject(input: ChangeOwnershipProjectInput!): ChangeOwnershipProjectPayload` Change owner. GraphQL only.
- `manageSharingProject(input: ManageSharingProjectInput!): ManageSharingProjectPayload` Change who it is shared with. GraphQL only.
- `completeTasksProject(input: CompleteTasksProjectInput!): BulkUpdateEntitiesPayload` Marks as completed every unfinished task of the project that belongs to the given objective. Without an objective, completes the project's tasks that are not assigned to any objective. GraphQL only.
- `completeProject(input: CompleteProjectInput!): BulkUpdateEntitiesPayload` Marks the project as completed. Without new dates, a project that is in progress gets today as its end date; completing an already completed project fails. GraphQL only.
- `reopenProject(input: ReopenProjectInput!): ReopenProjectPayload` Reopens a completed project with a new period. A project counts as completed when it was completed explicitly or its end date has passed. GraphQL only.
- `restoreProject(input: RestoreProjectInput!): RestoreProjectPayload` Restore a deleted record.
- `createProject(input: CreateProjectInput!, validationLevel: [ValidationLevel!]): CreateProjectPayload` Create one record.
- `updateProject(input: UpdateProjectInput!, validationLevel: [ValidationLevel!], sessionIdToUpdate: String): UpdateProjectPayload` Update fields.
- `bulkUpdateProject(input: [CreateOrUpdateProjectInput!]!, deleteInput: [DeleteProjectInput!], validationLevel: [ValidationLevel!], rollbackMethod: RollbackMethod, match: MatchingInput): BulkUpdateProjectPayload` Create or update many; per-item results.
- `deleteProject(input: DeleteProjectInput!): DeleteProjectPayload` Soft-delete.
- `convertProject(input: CreateProjectInput!, sourceEntity: EntityNameEnum!, sourceEntityId: UUID!, operation: RecordConversionOperationEnum!, options: RecordConversionOptions!, sourceEntityApiName: String, validationLevel: [ValidationLevel!]): ConvertProjectPayload` Create from another record. GraphQL only.

## Types

### ProjectEntity (object)

Project delivered for an account or run internally, with its objectives, activities and progress.

- `customFields: JSONString! (1 args)` Values of the record's custom fields as a JSON object keyed by custom field apiName (camelCase).
- `pendingScheduledActions: Int` Filled only when a single record is read by its id; otherwise null or an empty list.
- `isDeleteProtected: Boolean!` True when the record is protected against deletion because it must always exist in the space. Deleting a record that is not protected can still fail on other checks. Read-only.
- `id: ID!` Unique identifier of entity.
- `isDeleted: Boolean` Specifies if the entity is considered deleted.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `account: AccountEntity` Account this project is delivered for, or empty for internal projects without an external account.
- `currencyExchangeRatesList: CurrencyExchangeRatesListEntity` Currency exchange rate list used to convert monetary fields linked to this project. Empty to inherit the team space default.
- `owner: ClientEntity` Sales user who owns this project.
- `projectType: ProjectTypeEntity` Project type that classifies this project. Project types are configurable per team space and drive which form, fields and objectives apply.
- `unit: SalesUnitEntity` Sales unit this project is assigned to. Determines which team members can see the record under unit-based sharing.
- `accountId: ID` Id of the related account.
- `currencyExchangeRatesListId: ID` Id of the currency exchange rate list applied to this project.
- `description: String` Free-form description of the project.
- `endDate: Date!` Planned end date of the project. Must be on or after startDate when both are set.
- `name: String!` Name of the entity and its default text representation.
- `ownerId: ID!` Id of the project owner.
- `projectTypeId: ID` Id of the project type that classifies this project.
- `shareMode: ShareModeEnum` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `startDate: Date` Date when the project starts.
- `unitId: ID` Id of the sales unit.
- `revision: Int` Revision when entity was lastly changed.
- `revenueGoal: CurrencyForeignField` Target revenue of the project, stored in the team space base currency with the foreign value and currency code preserved alongside.
- `documents: CloudObjectRelationEntityConnection (8 args)` Documents linked to this project.
- `sharingUnits: ProjectSharingSalesUnitRelationEntityConnection (8 args)` Sales units that have been granted shared access to this project. Editable only when shareMode allows unit sharing.
- `sharingClients: ProjectSharingClientRelationEntityConnection (8 args)` Users that have been granted shared access to this project. Editable only when shareMode allows user sharing.
- `primaryContact: ContactEntity` Primary contact of this project. Set automatically from the contact relation marked as primary.
- `contactRelations: ProjectContactRelationEntityConnection (8 args)` Contacts linked to this project, including the primary-contact flag.
- `tags: TagRelationEntityConnection (8 args)` Tag labels applied to this project.
- `staticProfiles: ProfileRelationEntityConnection (8 args)` Saved view profiles this project currently matches.
- `enrolledEmailSequences: Int!` Number of email sequences this record is currently actively enrolled in (soft-deleted or ended enrollments are not counted).
- `objectives: [ProjectObjectiveEntity!]` Objectives defined for this project, sorted by display order.
- `isFavorite: Boolean!` True when the current authenticated user has marked this project as favorite. Per-user.
- `status: ProjectStatusEnum!` Current status of the project (NotStarted, InProgress, Completed). Read-only; derived from is_completed and the underlying activity progress.
- `viewerIdsPerSalesUnit: [UUID!]!` Filled only when a single record is read by its id; otherwise null or an empty list.
- `completionRate: Float` Percentage of activities (tasks and appointments) on this project that are completed. Read-only; computed by Coevera.
- `activitiesTotal: Float` Total number of activities (tasks and appointments) linked to this project. Read-only; computed by Coevera.
- `activitiesCompleted: Float` Number of completed activities on this project. Read-only; computed by Coevera.
- `formattedName: String!` Display version of the project name, used in lists and references.
- `modifiedByUser: DateTime` Timestamp of the most recent modification made by an end user (excluding system changes). Read-only; computed by Coevera.
- `instancePermissions: [EntityPermsEnum!]! (1 args)` Permissions the current user has on this record, out of the requested ones.
- `relatedEntitiesDrilldown: CompactViewDrilldownModel! (1 args)` Records of the given entity type that are related to this record, as a drilldown list.
- `charts: [DashboardChartData!] (1 args)` Data of the given preview pane charts and lists, computed for this record.
- `chartsDrilldown: CompactViewDrilldownModel! (3 args)` Records behind one preview pane chart of this record: all records of a list chart, or the records of a single data point of a report chart.
- `fields: [InterfaceFieldData]! (2 args)` Values of the fields shown in the record's preview pane, as configured for the record's type.
- `projectObjectiveActivitiesDrilldown: CompactViewDrilldownModel! (1 args)` Activities of this project linked to the given project objective.

### ProjectEntityConnection (object)

Paginated list of Project records.

- `pageInfo: PageInfo!` Pagination data for this connection.
- `edges: [ProjectEntityEdge]!` Contains the nodes in this connection.
- `totalCount: Int` Total number of items in the connection.

### ProjectEntityEdge (object)

A Relay edge containing a `ProjectEntity` and its cursor.

- `node: ProjectEntity` The item at the end of the edge
- `cursor: String!` A cursor for use in pagination

### ProjectFilterInput (input)

Filter conditions for Project records. Conditions on different fields are combined with AND; use OR, AND and NOT for other combinations.

- `OR: [ProjectFilterInput!]` Matches records that meet at least one of the listed filters.
- `AND: [ProjectFilterInput!]` Matches records that meet all of the listed filters.
- `NOT: ProjectFilterInput` Matches records that do not meet this filter.
- `globalSearchQuery: String` Search term matched against the fields that the global search covers for this entity.
- `id: EntityFilterStringField` Unique identifier of entity.
- `isDeleted: Boolean` Specifies if the entity is considered deleted.
- `modified: EntityFilterDateTimeField` Last modification time.
- `created: EntityFilterDateTimeField` Creation time.
- `accountId: EntityFilterStringField` Id of the related account.
- `currencyExchangeRatesListId: EntityFilterStringField` Id of the currency exchange rate list applied to this project.
- `description: EntityFilterStringField` Free-form description of the project.
- `name: EntityFilterStringField` Name of the entity and its default text representation.
- `ownerId: EntityFilterStringField` Id of the project owner.
- `projectTypeId: EntityFilterStringField` Id of the project type that classifies this project.
- `shareMode: ShareModeEnumFilterInput` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `unitId: EntityFilterStringField` Id of the sales unit.
- `revision: EntityFilterNumberField` Revision when entity was lastly changed.
- `enrolledEmailSequences: Int` Number of email sequences this record is currently actively enrolled in (soft-deleted or ended enrollments are not counted).
- `status: ProjectStatusEnumFilterInput` Current status of the project (NotStarted, InProgress, Completed). Read-only; derived from is_completed and the underlying activity progress.
- `withCustom: [CustomField!]` Conditions on custom fields, each identified by its api name. All listed conditions must match.
- `account: AccountFilterInput` Account this project is delivered for, or empty for internal projects without an external account. Matches records where a related record meets these conditions.
- `currencyExchangeRatesList: CurrencyExchangeRatesListFilterInput` Currency exchange rate list used to convert monetary fields linked to this project. Empty to inherit the team space default. Matches records where a related record meets these conditions.
- `owner: ClientFilterInput` Sales user who owns this project. Matches records where a related record meets these conditions.
- `projectType: ProjectTypeFilterInput` Project type that classifies this project. Project types are configurable per team space and drive which form, fields and objectives apply. Matches records where a related record meets these conditions.
- `unit: SalesUnitFilterInput` Sales unit this project is assigned to. Determines which team members can see the record under unit-based sharing. Matches records where a related record meets these conditions.
- `documents: CloudObjectRelationFilterInput` Documents linked to this project. Matches records where a related record meets these conditions.
- `sharingUnits: ProjectSharingSalesUnitRelationFilterInput` Sales units that have been granted shared access to this project. Editable only when shareMode allows unit sharing. Matches records where a related record meets these conditions.
- `sharingClients: ProjectSharingClientRelationFilterInput` Users that have been granted shared access to this project. Editable only when shareMode allows user sharing. Matches records where a related record meets these conditions.
- `primaryContact: ContactFilterInput` Primary contact of this project. Set automatically from the contact relation marked as primary. Matches records where a related record meets these conditions.
- `contactRelations: ProjectContactRelationFilterInput` Contacts linked to this project, including the primary-contact flag. Matches records where a related record meets these conditions.
- `tags: TagRelationFilterInput` Tag labels applied to this project. Matches records where a related record meets these conditions.
- `staticProfiles: ProfileRelationFilterInput` Saved view profiles this project currently matches. Matches records where a related record meets these conditions.

### ProjectOrderByInput (input)

Sorting of Project records. Set exactly one field in each item; list several items to sort by more fields, in order of priority.

- `id: OrderByEnum` Unique identifier of entity.
- `isDeleted: OrderByEnum` Specifies if the entity is considered deleted.
- `modified: OrderByEnum` Last modification time.
- `created: OrderByEnum` Creation time.
- `account: [AccountOrderByNestedInput!]` Account this project is delivered for, or empty for internal projects without an external account. Sorts by fields of the related record, listed in order of priority.
- `currencyExchangeRatesList: [CurrencyExchangeRatesListOrderByNestedInput!]` Currency exchange rate list used to convert monetary fields linked to this project. Empty to inherit the team space default. Sorts by fields of the related record, listed in order of priority.
- `owner: [ClientOrderByNestedInput!]` Sales user who owns this project. Sorts by fields of the related record, listed in order of priority.
- `projectType: [ProjectTypeOrderByNestedInput!]` Project type that classifies this project. Project types are configurable per team space and drive which form, fields and objectives apply. Sorts by fields of the related record, listed in order of priority.
- `unit: [SalesUnitOrderByNestedInput!]` Sales unit this project is assigned to. Determines which team members can see the record under unit-based sharing. Sorts by fields of the related record, listed in order of priority.
- `accountId: OrderByEnum` Id of the related account.
- `currencyExchangeRatesListId: OrderByEnum` Id of the currency exchange rate list applied to this project.
- `description: OrderByEnum` Free-form description of the project.
- `endDate: OrderByEnum` Planned end date of the project. Must be on or after startDate when both are set.
- `name: OrderByEnum` Name of the entity and its default text representation.
- `ownerId: OrderByEnum` Id of the project owner.
- `projectTypeId: OrderByEnum` Id of the project type that classifies this project.
- `shareMode: OrderByEnum` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `startDate: OrderByEnum` Date when the project starts.
- `unitId: OrderByEnum` Id of the sales unit.
- `revision: OrderByEnum` Revision when entity was lastly changed.
- `revenueGoal: OrderByEnum` Target revenue of the project, stored in the team space base currency with the foreign value and currency code preserved alongside.
- `enrolledEmailSequences: OrderByEnum` Number of email sequences this record is currently actively enrolled in (soft-deleted or ended enrollments are not counted).
- `status: OrderByEnum` Current status of the project (NotStarted, InProgress, Completed). Read-only; derived from is_completed and the underlying activity progress.
- `withCustom: CommonEntityRepositoryOrderByCustomField` Sorts by a custom field.

### ProjectStatusEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [ProjectStatusEnum!]` Matches any of the listed values.
- `NOT: ProjectStatusEnumFilterInput` Matches values that do not meet this condition.

### ChangeOwnershipProjectInput (input)

Parameters of the changeOwnershipProject mutation.

- `ownerId: ID!` User who becomes the new owner of the record.
- `unitId: ID!` Sales unit the record is assigned to.
- `keepOwnerAsEditor: Boolean!` When true, the previous owner (if still an active user) stays on the record as a shared user with the Editor role, and a Private sharing mode is switched to Standard.
- `transferLinkedRecords: Boolean!` When true, the new owner and sales unit are also applied to the record's open tasks and appointments and its notes. Linked records that cannot be transferred are skipped without failing the mutation.
- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### CompleteProjectInput (input)

Parameters of the completeProject mutation.

- `completeTasks: Boolean!` When true, every unfinished task linked to the project is marked as completed.
- `deleteUnstartedAppointments: Boolean!` When true, appointments linked to the project that have not started yet are deleted.
- `newStartDate: Date` New start date of the project period; must be sent together with newEndDate.
- `newEndDate: Date` New end date of the project period; must be sent together with newStartDate and must not be before it.
- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### CompleteTasksProjectInput (input)

Parameters of the completeTasksProject mutation.

- `projectObjectiveId: UUID` Objective whose tasks are completed; leave empty for the tasks without an objective.
- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### CreateOrUpdateProjectInput (input)

Field values of a Project record to create, or to update when its id is set.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID` Unique identifier of entity.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `accountId: ID` Id of the related account.
- `currencyExchangeRatesListId: ID` Id of the currency exchange rate list applied to this project.
- `description: String` Free-form description of the project.
- `endDate: Date` Planned end date of the project. Must be on or after startDate when both are set.
- `name: String` Name of the entity and its default text representation.
- `ownerId: ID` Id of the project owner.
- `projectTypeId: ID` Id of the project type that classifies this project.
- `shareMode: ShareModeEnum` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `startDate: Date` Date when the project starts.
- `unitId: ID` Id of the sales unit.
- `customFields: JSONString` Custom field values to set, as a JSON object keyed by custom field API name, e.g. {"cfBudget": 1000}. Only the custom fields included are changed; each value uses the format of that field.
- `revision: Int` Revision when entity was lastly changed.
- `revenueGoal: CurrencyForeignFieldInput` Target revenue of the project, stored in the team space base currency with the foreign value and currency code preserved alongside.
- `documents: [CreateCloudObjectRelationNoBackrefInput!]` Documents linked to this project.
- `sharingUnits: [CreateProjectSharingSalesUnitRelationNoProjectBackrefInput!]` Sales units that have been granted shared access to this project. Editable only when shareMode allows unit sharing.
- `sharingClients: [CreateProjectSharingClientRelationNoProjectBackrefInput!]` Users that have been granted shared access to this project. Editable only when shareMode allows user sharing.
- `contactRelations: [CreateProjectContactRelationNoProjectBackrefInput!]` Contacts linked to this project, including the primary-contact flag.
- `tags: [CreateTagRelationNoProjectBackrefInput!]` Tag labels applied to this project.
- `staticProfiles: [CreateProfileRelationNoProjectBackrefInput!]` Saved view profiles this project currently matches.

### CreateProfileRelationNoProjectBackrefInput (input)

Field values of a new ProfileRelation record, created together with the record it belongs to.

- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `accountId: ID` Id of the linked account.
- `contactId: ID` Id of the linked contact.
- `customEntityId: ID` Id of the linked custom entity record.
- `leadOpptyId: ID` Id of the linked lead or opportunity, or empty when not pointing to one.
- `profileId: ID!` Id of the screen profile.
- `quoteId: ID` Id of the linked quote.

### CreateProjectContactRelationNoProjectBackrefInput (input)

Field values of a new ProjectContactRelation record, created together with the record it belongs to.

- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `contactId: ID!` Id of the contact linked to the project.
- `isPrimary: Boolean!` True for the row that represents the primary related entity for this record. Setting isPrimary to true on a row automatically clears it on any other primary row.
- `revision: Int` Revision when entity was lastly changed.

### CreateProjectInput (input)

Field values of a new Project record.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `accountId: ID` Id of the related account.
- `currencyExchangeRatesListId: ID` Id of the currency exchange rate list applied to this project.
- `description: String` Free-form description of the project.
- `endDate: Date!` Planned end date of the project. Must be on or after startDate when both are set.
- `name: String!` Name of the entity and its default text representation.
- `ownerId: ID!` Id of the project owner.
- `projectTypeId: ID` Id of the project type that classifies this project.
- `shareMode: ShareModeEnum` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `startDate: Date` Date when the project starts.
- `unitId: ID` Id of the sales unit.
- `customFields: JSONString` Custom field values to set, as a JSON object keyed by custom field API name, e.g. {"cfBudget": 1000}. Only the custom fields included are changed; each value uses the format of that field.
- `revision: Int` Revision when entity was lastly changed.
- `revenueGoal: CurrencyForeignFieldInput` Target revenue of the project, stored in the team space base currency with the foreign value and currency code preserved alongside.
- `documents: [CreateCloudObjectRelationNoBackrefInput!]` Documents linked to this project.
- `sharingUnits: [CreateProjectSharingSalesUnitRelationNoProjectBackrefInput!]` Sales units that have been granted shared access to this project. Editable only when shareMode allows unit sharing.
- `sharingClients: [CreateProjectSharingClientRelationNoProjectBackrefInput!]` Users that have been granted shared access to this project. Editable only when shareMode allows user sharing.
- `contactRelations: [CreateProjectContactRelationNoProjectBackrefInput!]` Contacts linked to this project, including the primary-contact flag.
- `tags: [CreateTagRelationNoProjectBackrefInput!]` Tag labels applied to this project.
- `staticProfiles: [CreateProfileRelationNoProjectBackrefInput!]` Saved view profiles this project currently matches.

### CreateProjectSharingClientRelationNoProjectBackrefInput (input)

Field values of a new ProjectSharingClientRelation record, created together with the record it belongs to.

- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `clientId: ID!` Id of the user.
- `role: SharingRoleEnum` Access the sharing gives the user on the project: Watcher can view it, Editor can view and edit it.
- `revision: Int` Revision when entity was lastly changed.

### CreateProjectSharingSalesUnitRelationNoProjectBackrefInput (input)

Field values of a new ProjectSharingSalesUnitRelation record, created together with the record it belongs to.

- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `role: SharingRoleEnum` Access the sharing gives the sales unit on the project: Watcher can view it, Editor can view and edit it.
- `unitId: ID!` Id of the sales unit.
- `revision: Int` Revision when entity was lastly changed.

### CreateTagRelationNoProjectBackrefInput (input)

Field values of a new TagRelation record, created together with the record it belongs to.

- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `accountId: ID` Id of the linked account.
- `appointmentId: ID` Id of the linked appointment.
- `contactId: ID` Id of the linked contact.
- `customEntityId: ID` Id of the linked custom entity record.
- `emailId: ID` Id of the linked email.
- `leadId: ID` Id of the linked lead.
- `opptyId: ID` Id of the linked opportunity.
- `processId: ID` Id of the linked sales process.
- `quoteId: ID` Id of the linked quote.
- `solutionId: ID` Id of the linked solution.
- `tagId: ID!` Id of the tag attached to the record.
- `taskId: ID` Id of the linked task.
- `revision: Int` Revision when entity was lastly changed.

### DeleteProjectInput (input)

Id of the Project record to delete.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID!` Unique identifier of entity.

### ManageSharingProjectInput (input)

Parameters of the manageSharingProject mutation.

- `shareMode: ShareModeEnum!` Sharing mode of the record: Standard, Private, AllView or AllEdit.
- `sharingClients: [CreateProjectSharingClientRelationNoProjectBackrefInput!]` Users the record is shared with, each with the Watcher (view) or Editor (edit) role. Send an empty list to remove all shared users.
- `sharingUnits: [CreateProjectSharingSalesUnitRelationNoProjectBackrefInput!]` Sales units the record is shared with, each with the Watcher or Editor role. Send an empty list to remove all shared units.
- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### ReopenProjectInput (input)

Parameters of the reopenProject mutation.

- `startDate: Date!` New start date of the project.
- `endDate: Date!` New end date of the project; must not be before startDate or in the past.
- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### RestoreProjectInput (input)

Parameters of the restoreProject mutation.

- `id: ID!` Identifier of the ProjectEntity to perform the action on.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### UpdateProjectInput (input)

Id of a Project record and the field values to change.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID!` Unique identifier of entity.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `accountId: ID` Id of the related account.
- `currencyExchangeRatesListId: ID` Id of the currency exchange rate list applied to this project.
- `description: String` Free-form description of the project.
- `endDate: Date` Planned end date of the project. Must be on or after startDate when both are set.
- `name: String` Name of the entity and its default text representation.
- `ownerId: ID` Id of the project owner.
- `projectTypeId: ID` Id of the project type that classifies this project.
- `shareMode: ShareModeEnum` Sharing model applied on top of the owner/unit visibility (e.g. shared with selected sales units or selected users).
- `startDate: Date` Date when the project starts.
- `unitId: ID` Id of the sales unit.
- `customFields: JSONString` Custom field values to set, as a JSON object keyed by custom field API name, e.g. {"cfBudget": 1000}. Only the custom fields included are changed; each value uses the format of that field.
- `revision: Int` Revision when entity was lastly changed.
- `revenueGoal: CurrencyForeignFieldInput` Target revenue of the project, stored in the team space base currency with the foreign value and currency code preserved alongside.
- `documents: [CreateCloudObjectRelationNoBackrefInput!]` Documents linked to this project.
- `sharingUnits: [CreateProjectSharingSalesUnitRelationNoProjectBackrefInput!]` Sales units that have been granted shared access to this project. Editable only when shareMode allows unit sharing.
- `sharingClients: [CreateProjectSharingClientRelationNoProjectBackrefInput!]` Users that have been granted shared access to this project. Editable only when shareMode allows user sharing.
- `contactRelations: [CreateProjectContactRelationNoProjectBackrefInput!]` Contacts linked to this project, including the primary-contact flag.
- `tags: [CreateTagRelationNoProjectBackrefInput!]` Tag labels applied to this project.
- `staticProfiles: [CreateProfileRelationNoProjectBackrefInput!]` Saved view profiles this project currently matches.

### BulkUpdateEntitiesPayload (object)

Result of the completeTasksProject mutation.

- `result: BulkUpdatePayload!` Numbers of updated, failed and skipped records, each with a session for listing them.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### BulkUpdatePayload (object)

Outcome of a bulk change of records: the records that were changed, skipped and failed.

- `errors: BulkUpdateResult!` Records that could not be changed. Also includes the skipped records when errorsIncludeSkippedRecords is true.
- `skipped: BulkUpdateResult!` Records left unchanged because the user is not allowed to change them, or that are no longer available.
- `updated: BulkUpdateResult!` Records that were changed.

### BulkUpdateProjectPayload (object)

Result of the bulkUpdateProject mutation.

- `result: BulkUpdateResults!` Ids of the created, updated and deleted records, and the items that failed.

### ChangeOwnershipProjectPayload (object)

Result of the changeOwnershipProject mutation.

- `result: ProjectEntity` The record with its new owner.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### ConvertProjectPayload (object)

Result of the convertProject mutation.

- `project: ProjectEntity!` The created record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### CreateProjectPayload (object)

Result of the createProject mutation.

- `project: ProjectEntity` The created record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### DeleteProjectPayload (object)

Result of the deleteProject mutation.

- `project: ProjectEntity` The deleted record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### ManageSharingProjectPayload (object)

Result of the manageSharingProject mutation.

- `result: ProjectEntity` The record with its updated sharing.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### ReopenProjectPayload (object)

Result of the reopenProject mutation.

- `result: ProjectEntity` The reopened project.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### RestoreProjectPayload (object)

Result of the restoreProject mutation.

- `result: ProjectEntity` The restored record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### UpdateProjectPayload (object)

Result of the updateProject mutation.

- `project: ProjectEntity` The updated record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### BulkUpdateResult (object)

Group of records in the outcome of a bulk change, with their count and a session to list them.

- `count: Int!` Number of records in this group.
- `notAvailableCount: Int!` How many of these records the user can no longer see, e.g. because they were deleted; they are left out of sessionId.
- `sessionId: String` Session that identifies consistent snapshot of the view data used for scrolling
- `firstEntityId: ID` First entity id from session.

### ProjectStatusEnum (enum)

Status of a project, derived from its dates and completion.

- `NotStarted` The project's start date is in the future.
- `InProgress` The project is running.
- `Completed` The project is marked completed or its end date has passed.

Types several repositories share, such as `PageInfo` and the filter fields, are in the [types index](https://developers.coevera.com/reference/graphql/types.md). The [SDL](https://developers.coevera.com/graphql/schema.graphql) has the whole schema in one file.

## Example

```graphql
query FirstProjects {
  entities {
    project {
      getByCriteria(first: 3, orderBy: [{ modified: Desc }]) {
        totalCount
        edges { node { id name formattedName modified } }
      }
    }
  }
}
```

```bash
curl 'https://{region}.api.coevera.com/api/v100/app/space/{space_id}/graphql/public' \
  --user "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
  --header 'Content-Type: application/json' \
  --data '{"query":"query FirstProjects { entities { project { getByCriteria(first: 3, orderBy: [{ modified: Desc }]) { totalCount edges { node { id name formattedName modified } } } } } }"}'
```
