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

# entities.solution

Read solution records with the solution repository, and change them with the solution mutations. Same records as the REST Solutions entity.

REST: [Solutions](https://developers.coevera.com/reference/rest/solutions.md).

## Queries

- `getById(entityId: ID!): SolutionEntity` Returns the record with the given id, or null when there is none. Deleted records are returned as well.
- `getByIds(entityIds: [ID!]!): [SolutionEntity!]!` 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: SolutionFilterInput, orderBy: [SolutionOrderByInput!], includeDeleted: Boolean): [SolutionEntity!]!` Returns the records that match the filter, paged with limit and offset.
- `getByCriteria(filter: SolutionFilterInput, orderBy: [SolutionOrderByInput!], includeDeleted: Boolean, before: String, after: String, first: Int, last: Int): SolutionEntityConnection` 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.
- `getBySolutionCriteria(listingOptions: SolutionTabDataGridViewOptionsParams!, filter: SolutionFilterInput, orderBy: [SolutionOrderByInput!], before: String, after: String, first: Int, last: Int): SolutionEntityConnection` Returns a page of solutions filtered by owner, status and tags, in addition to the regular filter.
- `nodeStatus(settings: SolutionSchemaJSONString!, nodeIds: [UUID!]!): [SolutionNodeStatusResult!]!` Returns the current status and name of the given nodes of a solution canvas, computed from the live state of the records and features they reference. Node ids not present on the canvas are left out of the result.
- `scan(settings: SolutionSchemaJSONString!, nodeId: UUID, addRecordIds: [UUID!], solutionId: UUID): SolutionScanResult!` Scans a solution canvas for related records and returns an updated canvas together with related records it did not add, so the user can choose which to add.

## Mutations

- `createSolution(input: CreateSolutionInput!, validationLevel: [ValidationLevel!]): CreateSolutionPayload` Create one record.
- `updateSolution(input: UpdateSolutionInput!, validationLevel: [ValidationLevel!], sessionIdToUpdate: String): UpdateSolutionPayload` Update fields.
- `bulkUpdateSolution(input: [CreateOrUpdateSolutionInput!]!, deleteInput: [DeleteSolutionInput!], validationLevel: [ValidationLevel!], rollbackMethod: RollbackMethod, match: MatchingInput): BulkUpdateSolutionPayload` Create or update many; per-item results.
- `deleteSolution(input: DeleteSolutionInput!): DeleteSolutionPayload` Soft-delete.

## Types

### SolutionEntity (object)

Canvas that groups related automation tools (Automatizer processes, email sequences, online forms) and tracks their status and activity.

- `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.
- `owner: ClientEntity` User who owns the solution.
- `solutionTemplate: SolutionTemplateEntity` Template this solution was created from, if any.
- `description: String` Free-text description of the solution.
- `name: String!` Name of the entity and its default text representation.
- `ownerId: ID!` Id of the owning user.
- `settings: SolutionSchema` Canvas of the solution as a JSON object conforming to the SolutionSchema type, with nodes, edges and groups. Validated on write; an invalid canvas is rejected. Full structure: https://developers.coevera.com/reference/graphql/types/s/#SolutionSchema
- `solutionTemplateId: ID` Template this solution was created from, if any.
- `nodeCount: Int` Number of nodes on the canvas.
- `status: SolutionStatusEnum` Live status derived from the activatable nodes (Automatizer, Email Sequence, Online Form): Active when all are enabled, Inactive when none are, Partial otherwise.
- `tags: TagRelationEntityConnection (8 args)` Tags attached to the solution for organisation/filtering.
- `instancePermissions: [EntityPermsEnum!]! (1 args)` Permissions the current user has on this record, out of the requested ones.
- `stats: SolutionStats! (1 args)` Activity statistics of the solution's tools for the selected period, computed from their activity logs on every read.
- `activityLogs: SolutionActivityLogConnection! (5 args)` Activity of the solution's tools, newest first: Automatizer process runs, email-sequence runs and online-form submissions. Paging is forward-only with first/after; first defaults to 50 and is capped at 200.

### SolutionActivityLogConnection (object)

Paged activity of a solution's tools, newest first. Paging is forward-only (first/after) and stays stable while new runs arrive.

- `pageInfo: PageInfo!` Pagination data for this connection.
- `edges: [SolutionActivityLogEdge]!` Contains the nodes in this connection.

### SolutionActivityLogEdge (object)

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

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

### SolutionEdge (object)

A directed, typed edge between two nodes.

- `id: ID!` Unique identifier of this edge within the canvas.
- `name: String` Custom name for the edge, if the user has set one.
- `color: Int` Custom color for the edge, if the user has set one.
- `sourceNodeId: ID!` Id of the node the edge starts from.
- `targetNodeId: ID!` Id of the node the edge points to.
- `type: SolutionEdgeType!` Type of connection the edge represents.

### SolutionEntityConnection (object)

Paginated list of Solution records.

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

### SolutionEntityEdge (object)

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

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

### SolutionFilterInput (input)

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

- `OR: [SolutionFilterInput!]` Matches records that meet at least one of the listed filters.
- `AND: [SolutionFilterInput!]` Matches records that meet all of the listed filters.
- `NOT: SolutionFilterInput` 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.
- `description: EntityFilterStringField` Free-text description of the solution.
- `name: EntityFilterStringField` Name of the entity and its default text representation.
- `ownerId: EntityFilterStringField` Id of the owning user.
- `solutionTemplateId: EntityFilterStringField` Template this solution was created from, if any.
- `nodeCount: Int` Number of nodes on the canvas.
- `status: SolutionStatusEnum` Live status derived from the activatable nodes (Automatizer, Email Sequence, Online Form): Active when all are enabled, Inactive when none are, Partial otherwise.
- `owner: ClientFilterInput` User who owns the solution. Matches records where a related record meets these conditions.
- `solutionTemplate: SolutionTemplateFilterInput` Template this solution was created from, if any. Matches records where a related record meets these conditions.
- `tags: TagRelationFilterInput` Tags attached to the solution for organisation/filtering. Matches records where a related record meets these conditions.

### SolutionOrderByInput (input)

Sorting of Solution 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.
- `owner: [ClientOrderByNestedInput!]` User who owns the solution. Sorts by fields of the related record, listed in order of priority.
- `solutionTemplate: [SolutionTemplateOrderByNestedInput!]` Template this solution was created from, if any. Sorts by fields of the related record, listed in order of priority.
- `description: OrderByEnum` Free-text description of the solution.
- `name: OrderByEnum` Name of the entity and its default text representation.
- `ownerId: OrderByEnum` Id of the owning user.
- `solutionTemplateId: OrderByEnum` Template this solution was created from, if any.
- `nodeCount: OrderByEnum` Number of nodes on the canvas.
- `status: OrderByEnum` Live status derived from the activatable nodes (Automatizer, Email Sequence, Online Form): Active when all are enabled, Inactive when none are, Partial otherwise.

### CreateOrUpdateSolutionInput (input)

Field values of a Solution 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.
- `description: String` Free-text description of the solution.
- `name: String` Name of the entity and its default text representation.
- `ownerId: ID` Id of the owning user.
- `settings: SolutionSchemaJSONString` Canvas of the solution as a JSON object conforming to the SolutionSchema type, with nodes, edges and groups. Validated on write; an invalid canvas is rejected. Full structure: https://developers.coevera.com/reference/graphql/types/s/#SolutionSchema
- `solutionTemplateId: ID` Template this solution was created from, if any.
- `tags: [CreateTagRelationNoSolutionBackrefInput!]` Tags attached to the solution for organisation/filtering.

### CreateSolutionInput (input)

Field values of a new Solution 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.
- `description: String` Free-text description of the solution.
- `name: String!` Name of the entity and its default text representation.
- `ownerId: ID!` Id of the owning user.
- `settings: SolutionSchemaJSONString` Canvas of the solution as a JSON object conforming to the SolutionSchema type, with nodes, edges and groups. Validated on write; an invalid canvas is rejected. Full structure: https://developers.coevera.com/reference/graphql/types/s/#SolutionSchema
- `solutionTemplateId: ID` Template this solution was created from, if any.
- `tags: [CreateTagRelationNoSolutionBackrefInput!]` Tags attached to the solution for organisation/filtering.

### CreateTagRelationNoSolutionBackrefInput (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.
- `projectId: ID` Id of the linked project.
- `quoteId: ID` Id of the linked quote.
- `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.

### DeleteSolutionInput (input)

Id of the Solution 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.

### SolutionTabDataGridViewOptionsParams (input)

Filters for listing solutions by owner, status and tags.

- `filterByOwnerId: [ID!]` Owner ids to include; NULL/omitted = no owner filter, empty list = none match.
- `filterByStatus: [SolutionStatusEnum!]` Solution statuses (Active/Partial/Inactive) to include.
- `filterByTagIds: [ID!]` Tag ids to include.

### SolutionTemplateOrderByNestedInput (input)

Sorting by a field of the related SolutionTemplate record. Set exactly one field in each item.

- `id: OrderByEnum` Unique identifier of entity.
- `isDeleted: OrderByEnum` Specifies if the entity is considered deleted.
- `modified: OrderByEnum` Last modification time.
- `created: OrderByEnum` Creation time.
- `description: OrderByEnum` Free-text description of what the template sets up.
- `name: OrderByEnum` Name of the entity and its default text representation.
- `previewImageUrl: OrderByEnum` URL of the template preview image shown in the template gallery.

### UpdateSolutionInput (input)

Id of a Solution 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.
- `description: String` Free-text description of the solution.
- `name: String` Name of the entity and its default text representation.
- `ownerId: ID` Id of the owning user.
- `settings: SolutionSchemaJSONString` Canvas of the solution as a JSON object conforming to the SolutionSchema type, with nodes, edges and groups. Validated on write; an invalid canvas is rejected. Full structure: https://developers.coevera.com/reference/graphql/types/s/#SolutionSchema
- `solutionTemplateId: ID` Template this solution was created from, if any.
- `tags: [CreateTagRelationNoSolutionBackrefInput!]` Tags attached to the solution for organisation/filtering.

### BulkUpdateSolutionPayload (object)

Result of the bulkUpdateSolution mutation.

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

### CreateSolutionPayload (object)

Result of the createSolution mutation.

- `solution: SolutionEntity` 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).

### DeleteSolutionPayload (object)

Result of the deleteSolution mutation.

- `solution: SolutionEntity` 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).

### UpdateSolutionPayload (object)

Result of the updateSolution mutation.

- `solution: SolutionEntity` 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).

### Size (object)

A width x height extent, without a position. Units are the consumer's (the Solution canvas stores node sizes in pixels).

- `width: Int!` Horizontal extent, in the units of the layout that uses it (pixels for Solution canvas nodes).
- `height: Int!` Vertical extent, in the units of the layout that uses it (pixels for Solution canvas nodes).

### SolutionActivityLogEntity (union)

One entry in a solution's activity log: an Automatizer process run, an email-sequence run or an online-form submission.

ProcessActivityLogEntity | EmailSequenceActivityLogEntity | OnlineFormEntity

### SolutionDirectCandidate (object)

A record directly connected to a canvas node (a TriggerExplicit, UsedIn or Reference connection) that the scan found but did not add to the canvas.

- `sourceNodeId: ID!` Canvas node the candidate connection belongs to.
- `recordId: ID!` Id of the candidate record.
- `recordType: SolutionRecordNodeType!` Type of the candidate record.
- `name: String` Current display name of the candidate record.
- `isRemoved: Boolean!` True when the record is in removedRecordIds — it is never auto-added, but picking it via scan addRecordIds restores it.
- `usedInSolutionsCount: Int!` Number of other solutions whose canvas already contains this record. Deleted solutions, solutions the caller cannot see and the solution passed as solutionId to scan are not counted.

### SolutionEntityFieldRef (object)

A custom field shown on an entity-settings node, together with the canvas nodes whose configuration uses it.

- `id: ID!` Id of the referenced custom field.
- `nodeIds: [ID!]!` Ids of the canvas nodes whose configuration uses this field. Updated when the canvas is scanned.

### SolutionEntityNode (object)

The grouped "Entity Settings" node: custom fields, custom entity and sales processes of one entity.

- `id: ID!` Unique identifier of this node within the canvas.
- `position: Position!` Node position on the canvas.
- `size: Size` Node size in pixels, set when the user resizes the node on the canvas. Null means the default size.
- `groupId: ID` Group this node belongs to, if any.
- `name: String` Custom name for the node, if the user has set one.
- `origin: SolutionNodeOrigin!` Whether the node was added manually or by the auto-add scan engine.
- `entityName: EntityNameEnum!` Entity this settings node represents.
- `entityApiName: String` API name of the custom entity, when the entity is a custom entity.
- `fieldIds: [SolutionEntityFieldRef!]!` Referenced custom fields, each with the canvas nodes using it.
- `leadProcessIds: [ID!]!` Referenced lead process ids.
- `pipelineIds: [ID!]!` Referenced pipeline ids.
- `quoteProcessIds: [ID!]!` Referenced quote process ids.

### SolutionGroup (object)

A labelled, coloured container bundling a set of nodes on the canvas.

- `id: ID!` Unique identifier of this group within the canvas.
- `position: Rectangle!` Group rectangle (position and size) on the canvas.
- `name: String!` Display label of the group.
- `color: Int!` Group color.

### SolutionIndirectCandidate (object)

A record indirectly connected to a canvas node (a TriggerImplicit connection) that the scan found but did not add to the canvas.

- `sourceNodeId: ID!` Canvas node the candidate connection belongs to.
- `recordId: ID!` Id of the candidate record.
- `recordType: SolutionRecordNodeType!` Type of the candidate record.
- `name: String` Current display name of the candidate record.
- `isRemoved: Boolean!` True when the record is in removedRecordIds — it is never auto-added, but picking it via scan addRecordIds restores it.
- `usedInSolutionsCount: Int!` Number of other solutions whose canvas already contains this record. Deleted solutions, solutions the caller cannot see and the solution passed as solutionId to scan are not counted.

### SolutionNodeInterface (interface)

Common shape of every node placed on the canvas.

- `id: ID!` Unique identifier of this node within the canvas.
- `position: Position!` Node position on the canvas.
- `size: Size` Node size in pixels, set when the user resizes the node on the canvas. Null means the default size.
- `groupId: ID` Group this node belongs to, if any.
- `name: String` Custom name for the node, if the user has set one.
- `origin: SolutionNodeOrigin!` Whether the node was added manually or by the auto-add scan engine.

### SolutionNodeOrigin (enum)

How a node came to be on a solution canvas.

- `Manual` Added by a user; kept when the solution is rescanned.
- `System` Added automatically by the solution scan; can be removed by a later rescan.

### SolutionNodeStats (object)

Activity counters of one canvas node for the selected period (0 when the counter does not apply to the node's type).

- `id: ID!` Canvas node id the counters belong to.
- `createRecordCount: Int!` Records created in the period by Automatizer create or copy actions, email-sequence steps (tasks, leads, text messages) or online-form submissions.
- `updateRecordCount: Int!` Records updated in the period by Automatizer update, unarchive or owner-change actions, or by online-form submissions.
- `linkRecordCount: Int!` Records linked in the period by Automatizer link actions.
- `archiveRecordCount: Int!` Records archived in the period by Automatizer archive actions.
- `sendEmailCount: Int!` Emails sent in the period by Automatizer send-email actions or email-sequence steps.
- `enrollCount: Int!` Records enrolled into the email sequence in the period.
- `unenrollCount: Int!` Enrollments that ended by unenrolling in the period.
- `createResponseCount: Int!` Online-form submissions received in the period.

### SolutionNodeStatus (enum)

Status of a canvas node, derived from the current state of the record it references.

- `Default` No special status; always used for entity-settings nodes and for record types that cannot be enabled.
- `Deleted` The referenced record is deleted or no longer exists.
- `Unavailable` The record exists but the caller cannot access it.
- `Upgrade` The feature behind the node is not included in the subscription.
- `Inactive` The referenced process, email sequence or online form is disabled.
- `Active` The referenced process, email sequence or online form is enabled.

### SolutionNodeStatusResult (object)

Current status of one canvas node, computed on every nodeStatus query from the live state of the record or feature it references.

- `id: ID!` Canvas node id the status belongs to.
- `status: SolutionNodeStatus!` Deleted (record deleted or missing), Upgrade (feature not in the subscription), Unavailable (caller cannot access the record), Active or Inactive (process, email sequence or online form enabled or disabled) or Default.
- `name: String` Current display name of the node's referenced record. Null when the node references no single record (e.g. an entity-settings node), the record no longer exists, or the caller cannot access it.

### SolutionRecordNode (object)

A node representing a single referenced CRM record.

- `id: ID!` Unique identifier of this node within the canvas.
- `position: Position!` Node position on the canvas.
- `size: Size` Node size in pixels, set when the user resizes the node on the canvas. Null means the default size.
- `groupId: ID` Group this node belongs to, if any.
- `name: String` Custom name for the node, if the user has set one.
- `origin: SolutionNodeOrigin!` Whether the node was added manually or by the auto-add scan engine.
- `recordId: ID!` Id of the referenced record.
- `recordType: SolutionRecordNodeType!` Type of the referenced record.

### SolutionRecordNodeType (enum)

Type of the record a solution canvas node references.

- `EmailTemplate` An email template.
- `Navigator` A Navigator screen profile.
- `Dashboard` A dashboard.
- `Profile` A saved view profile.
- `Report` A report.
- `OnlineForm` An online form.
- `Process` An Automatizer process.
- `EmailSequence` An email sequence.

### SolutionScanResult (object)

Result of a canvas scan: the updated canvas plus the connected records the scan found but did not add. A record appears in at most one of the two candidate lists; directCandidates takes precedence.

- `schema: SolutionSchema!` The canvas with the scan's changes applied. The scan does not save it; send it with updateSolution to keep the changes.
- `directCandidates: [SolutionDirectCandidate!]!` Records directly connected to a canvas node (TriggerExplicit, UsedIn or Reference) that are not on the canvas, one entry per source node and record. Pass chosen recordIds in addRecordIds of a node-scoped scan to add them; a record listed here is not repeated in indirectCandidates.
- `indirectCandidates: [SolutionIndirectCandidate!]!` Records indirectly connected to a canvas node (TriggerImplicit) that are not on the canvas, one entry per source node and record. Pass chosen recordIds in addRecordIds of a node-scoped scan to add them; records already in directCandidates are not repeated here.

### SolutionSchema (object)

Canvas of a solution: the nodes placed on it, the edges connecting them and the groups bundling them.

- `nodes: [SolutionNodeInterface!]!` Nodes placed on the canvas.
- `edges: [SolutionEdge!]!` Typed edges between nodes.
- `groups: [SolutionGroup!]!` Visual groups bundling nodes.
- `removedRecordIds: [UUID!]!` Records the user removed from the canvas. The scan never adds them back on its own; picking one through the addRecordIds argument of scan restores it and removes it from this list.

### SolutionStats (object)

Activity statistics of a solution for the selected period: counters per canvas node and their totals. Nodes whose record was deleted still count the activity recorded before deletion.

- `createRecordTotalCount: Int!` Sum of createRecordCount over all nodes.
- `updateRecordTotalCount: Int!` Sum of updateRecordCount over all nodes.
- `linkRecordTotalCount: Int!` Sum of linkRecordCount over all nodes.
- `archiveRecordTotalCount: Int!` Sum of archiveRecordCount over all nodes.
- `sendEmailTotalCount: Int!` Sum of sendEmailCount over all nodes.
- `createResponseTotalCount: Int!` Sum of createResponseCount over all nodes.
- `nodes: [SolutionNodeStats!]!` Counters of each canvas node, in canvas order.

### SolutionStatsPeriodEnum (enum)

Time window for solution statistics and activity logs.

- `All` The whole history.
- `Last7Days` The last 7 days.
- `Last30Days` The last 30 days.
- `Last90Days` The last 90 days.

### SolutionStatusEnum (enum)

Overall status of a solution, derived from its Automatizer processes, email sequences and online forms.

- `Active` All of them are enabled.
- `Partial` Some of them are enabled.
- `Inactive` None of them is enabled.

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 FirstSolutions {
  entities {
    solution {
      getByCriteria(first: 3, orderBy: [{ modified: Desc }]) {
        totalCount
        edges { node { id name 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 FirstSolutions { entities { solution { getByCriteria(first: 3, orderBy: [{ modified: Desc }]) { totalCount edges { node { id name modified } } } } } }"}'
```
