Skip to main content

Issues Subgraph Reference

The su-issues subgraph provides comprehensive issue tracking, task management, and data collection capabilities.

Subgraph Information

  • Name: su-issues
  • Routing URL: https://6vapx1z4c0.execute-api.us-west-2.amazonaws.com/poc/graphql
  • Last Updated: 2025-11-03
  • SDL: View Schema

Overview

This subgraph owns:
  • Issue creation and management
  • Task and multi-task coordination
  • Issue templates
  • Data collection forms (XForms integration)
  • Annotations and comments
  • Issue-asset relationships

Root Query Fields

extend type Query {
  # Issue Management
  issues: Issues
  allIssues(after: String, first: Int, status: IssueStatus, severity: Int, subjectReference: ID, triggerReference: ID): IssuesConnection
  openIssueBySubjectAndReference(subjectReference: ID!, triggerReference: ID!): Issue

  # Issue Types
  issueMultitask: IssueMultitask
  issueTask: IssueTask
  issueSeverityTypes: [IssueSeverityDisplay!]

  # Forms & Datasets
  issueDataCollectionFormReferences: [IssueDataCollectionForm!] @deprecated
  formDatasets(group: ID!): [CamEngineDataset!]!
  issuesDatasets(group: ID!): [CamEngineDataset]!
}

Root Mutation Fields

extend type Mutation {
  # Issue Lifecycle
  triggerIssue(input: TriggerIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  updateIssue(input: UpdateIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  deleteIssue(input: DeleteIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  undeleteIssue(input: UndeleteIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  transitionIssueState(input: TransitionIssueStateInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  closeIssue(input: CloseIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult! @deprecated
  reopenIssue(input: ReopenIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult! @deprecated

  # Multitask & Subtasks
  triggerIssueMultitask(input: TriggerIssueMultitaskInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  triggerIssueSubTask(input: TriggerIssueSubTaskInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  createMultitaskProcedure(input: CreateMultitaskProcedureInput!): IssueMultitaskProcedureMutationResult!
  triggerIssueTask(input: TriggerIssueTaskInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!

  # Assignment & Comments
  assignIssueToUser(input: AssignIssueToUserInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  acknowledgeAssignment(input: AcknowledgeAssignment!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  commentIssue(input: CommentIssueInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  deleteIssueComment(input: DeleteIssueCommentInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!
  modifyIssueComment(input: ModifyIssueCommentInput!, delayed: DelayedIssueMutationInput): IssueMutationResult!

  # State & Data
  updateIssueStateData(input: UpdateIssueStateDataInput, delayed: DelayedIssueMutationInput): IssueMutationResult!
  bulkUpdateIssues(input: BulkUpdateIssuesInput!, delayed: DelayedIssueMutationInput): BulkIssuesMutationResult!

  # Data Collection Forms
  createIssueTaskDataCollectionForm(input: CreateIssueTaskDataCollectionFormInput!): IssueTaskDataCollectionFormMutationResult!
  updateIssueTaskDataCollectionForm(input: UpdateIssueTaskDataCollectionFormInput!): IssueTaskDataCollectionFormMutationResult!
  deleteIssueTaskDataCollectionForm(input: DeleteIssueTaskDataCollectionFormInput!): IssueTaskDataCollectionFormMutationResult!
  activateIssueTaskDataCollectionForm(id: ID!, subjectAssetProfile: ID): IssueTaskDataCollectionFormMutationResult!
  deactivateIssueTaskDataCollectionForm(id: ID!): IssueTaskDataCollectionFormMutationResult!
  cloneIssueTaskDataCollectionForm(input: CloneIssueTaskDataCollectionFormInput!): IssueTaskDataCollectionFormMutationResult!

  # Datasets
  reloadFormDatasets(group: ID): [CamEngineDataset!]!
  generateFormResponseDataset(async: Boolean! = true, formReference: String!): FormResponseCamDatasetGenerateResults!
  generateFormResponseDatasets(async: Boolean! = true): FormResponseCamDatasetGenerateResults!
}

Core Types

Issue

Main issue/task type.
type Issue implements Node @key(fields: "id") {
  id: ID!
  type: IssueType!          # ISSUE, TASK, MULTITASK, SUBTASK
  taskType: IssueTaskType
  title: String!
  description: String
  status: IssueStatus!      # OPEN, IN_PROGRESS, RESOLVED, CLOSED
  severity: Int!
  openedAt: DateTime!
  closedAt: DateTime
  dueAt: DateTime
  pastDue: Boolean
  subject: IssueSubject!
  trigger: IssueTrigger!
  annotations: [Annotation]
  assignee: IssueAssignee
  watchers: [IssueWatcher!]
  currentState: IssueState!
  auditHistory: [IssueAuditEntry!]!
  parentIssue: IssueReference
}

IssueTemplate

Reusable issue definition.
type IssueTemplate @key(fields: "id") {
  id: ID!
  title: String!
  description: String
  type: IssueType!
  defaultSeverity: Int
  defaultDueInDays: Int
  formReference: XFormReference
}

XForms Integration

Issues can include data collection forms:
type XFormDetails {
  model: XFormXMLNode!
  binds: [XFormBind!]
  body: [XFormBodyNode!]
}

type XFormBind {
  nodeset: String!
  type: XFormDataType!    # string, int, decimal, date, geopoint, etc.
  required: XFormXPath
  constraint: XFormXPath
}

Entity Extensions

Asset

Extends Asset with issue subject information.
type Asset @key(fields: "profile id") @extends {
  profile: ID! @external
  id: ID! @external
  issueSubject: IssueSubject!
}