Architecture

GraphQL Schema

See More

schema {
  query: Query
  mutation: Mutation
  subscription: Subscription
}

"""

Indicates that an Input Object is a OneOf Input Object (and thus requires
exactly one of its field be provided)
"""
directive @oneOf on INPUT_OBJECT

union CollectionItem = Collection | Metadata

union ContentItem = Collection | Metadata | Profile

union WorkflowExecution = WorkflowExecutionPlan | WorkflowJob

type Activities {
  activity(id: String!): Activity
  all: [Activity!]!
}

type ActivitiesMutation {
  add(activity: ActivityInput!): Activity
  delete(activityId: String!): Boolean!
  edit(activity: ActivityInput!): Activity
}

type Activity {
  childWorkflowId: String
  configuration: JSON
  description: String!
  id: String!
  inputs: [ActivityParameter!]!
  name: String!
  outputs: [ActivityParameter!]!
}

type ActivityParameter {
  name: String!
  type: ActivityParameterType!
}

type Bible {
  abbreviation: String!
  abbreviationLocal: String!
  book(usfm: String!): BibleBook
  books: [BibleBook!]!
  chapter(usfm: String!): BibleChapter
  description: String!
  find(human: String!): [FindBibleResult!]!
  languages: [BibleLanguage!]!
  name: String!
  nameLocal: String!
  styles: JSON!
  systemId: String!
}

type BibleBook {
  abbreviation: String!
  chapters: [BibleChapter!]!
  human: String!
  nameLong: String!
  nameShort: String!
  usfm: String!
}

type BibleChapter {
  component: JSON!
  human: String!
  reference: BibleReference!
  usfm: String!
  verses: [BibleReference!]!
}

type BibleLanguage {
  iso: String!
  name: String!
  nameLocal: String!
  script: String!
  scriptCode: String!
  scriptDirection: String!
}

type BibleReference {
  human: String!
  usfm: String!
}

type CacheObject {
  keys: [String!]!
  name: String!
}

type CachesObject {
  caches: [CacheObject!]!
}

type Categories {
  all: [Category!]!
}

type Category {
  id: String!
  name: String!
}

type CategoryMutation {
  add(category: CategoryInput!): Category!
  delete(id: String!): Boolean!
  edit(category: CategoryInput!, id: String!): Category!
}

type Collection {
  attributes(filter: AttributesFilterInput): JSON
  categories: [Category!]!
  collections(limit: Int!, offset: Int!): [Collection!]!
  collectionsCount: Int!
  created: DateTime!
  deleted: Boolean!
  description: String
  etag(addHeader: Boolean!): String
  id: String!
  itemAttributes: JSON
  items(limit: Int!, offset: Int!): [CollectionItem!]!
  itemsCount: Int!
  labels: [String!]!
  metadata(limit: Int!, offset: Int!): [Metadata!]!
  metadataCount: Int!
  metadataRelationships: [CollectionMetadataRelationship!]!
  modified: DateTime!
  name: String!
  ordering: [Ordering!]
  parentCollections(limit: Int!, offset: Int!): [Collection!]!
  permissions: [Permission!]!
  public: Boolean!
  publicList: Boolean!
  publicSupplementary: Boolean!
  ready: DateTime
  slug: String
  supplementary(key: String, planId: String): [CollectionSupplementary!]!
  systemAttributes: JSON
  templateMetadata: Metadata
  traitIds: [String!]!
  type: CollectionType!
  workflow: CollectionWorkflow!
}

type CollectionMetadataRelationship {
  attributes: JSON
  metadata: Metadata!
  relationship: String
}

type CollectionMutation {
  add(collection: CollectionInput!, collectionItemAttributes: JSON): Collection!
  addBulk(collections: [CollectionChildInput!]!): [Collection!]!
  addChildCollection(attributes: JSON, collectionId: String!, id: String!): Collection!
  addChildMetadata(attributes: JSON, id: String!, metadataId: String!): Collection!
  addMetadataRelationship(relationship: CollectionMetadataRelationshipInput!): CollectionMetadataRelationship!
  addPermission(permission: PermissionInput!): Permission!
  addSupplementary(supplementary: CollectionSupplementaryInput!): CollectionSupplementary!
  delete(id: String!, recursive: Boolean): Boolean!
  deleteMetadataRelationship(id: String!, metadataId: String!, relationship: String!): Boolean!
  deletePermission(permission: PermissionInput!): Permission!
  deleteSupplementary(id: String!): Boolean!
  edit(collection: CollectionInput!, id: String!): Collection!
  editMetadataRelationship(relationship: CollectionMetadataRelationshipInput!): Boolean!
  mergeCollectionAttributes(attributes: JSON!, id: String!): Boolean!
  mergeCollectionItemAttributes(attributes: JSON!, id: String!, itemId: String!): Boolean!
  mergeMetadataItemAttributes(attributes: JSON!, id: String!, itemId: String!): Boolean!
  mergeMetadataRelationshipAttributes(attributes: JSON!, collectionId: String!, metadataId: String!, relationship: String!): Boolean!
  permanentlyDelete(collectionId: String!, recursive: Boolean): Boolean!
  removeChildCollection(collectionId: String!, id: String!): Collection!
  removeChildMetadata(id: String!, metadataId: String!): Collection!
  setChildItemAttributes(attributes: JSON, childCollectionId: String, childMetadataId: String, id: String!): Collection!
  setCollectionAttributes(attributes: JSON!, id: String!): Boolean!
  setCollectionOrdering(id: String!, ordering: JSON!): Boolean!
  setCollectionSystemAttributes(attributes: JSON!, id: String!): Boolean!
  setPublic(id: String!, public: Boolean!): Collection!
  setPublicList(id: String!, public: Boolean!): Collection!
  setPublicSupplementary(id: String!, public: Boolean!): Collection!
  setReady(id: String!): Boolean!
  setSupplementaryContents(contentType: String!, file: Upload!, supplementaryId: String!): Boolean!
  setSupplementaryTextContents(content: String!, contentType: String!, supplementaryId: String!): Boolean!
  setSupplementaryUploaded(contentType: String!, len: Int!, supplementaryId: String!): Boolean!
  setWorkflowState(state: CollectionWorkflowState!): Boolean!
  setWorkflowStateComplete(state: CollectionWorkflowCompleteState!): Boolean!
}

type CollectionSupplementary {
  attributes: JSON
  collectionId: String!
  content: CollectionSupplementaryContent!
  created: String!
  id: String!
  key: String!
  modified: String!
  name: String!
  planId: String
  source: CollectionSupplementarySource!
  uploaded: String
}

type CollectionSupplementaryContent {
  json: JSON!
  length: Int
  text: String!
  type: String!
  urls: CollectionSupplementaryContentUrls!
}

type CollectionSupplementaryContentUrls {
  download: SignedUrl!
  upload: SignedUrl!
}

type CollectionSupplementarySource {
  id: String!
  identifier: String
}

type CollectionTemplate {
  attributes: [TemplateAttribute!]!
  configuration: JSON
  defaultAttributes: JSON
  filters: CollectionTemplateFilters
  metadata: Metadata
  ordering: [Ordering!]
}

type CollectionTemplateFilter {
  filter: String!
  name: String!
}

type CollectionTemplateFilters {
  filters: [CollectionTemplateFilter!]!
}

type CollectionTemplates {
  all: [CollectionTemplate!]!
}

type CollectionWorkflow {
  deleteWorkflow: String
  pending: String
  plans: [WorkflowExecutionPlan!]!
  running: Int!
  state: String!
  stateValid: DateTime
}

type Configuration {
  description: String!
  id: String!
  key: String!
  permissions: [ConfigurationPermission!]!
  public: Boolean!
  value: JSON
}

type ConfigurationPermission {
  action: PermissionAction!
  group: Group!
}

type Configurations {
  all: [Configuration!]!
  configuration(key: String!): Configuration
}

type ConfigurationsMutation {
  deleteConfiguration(key: String!): String
  setConfiguration(configuration: ConfigurationInput!): Configuration
}

type Content {
  categories: Categories!
  collection(id: String): Collection
  collectionSupplementary(supplementaryId: String!): CollectionSupplementary
  collectionTemplates: CollectionTemplates!
  documentTemplates: DocumentTemplates!
  findCollections(query: FindQueryInput!): [Collection!]!
  findCollectionsCount(query: FindQueryInput!): Int!
  findMetadata(query: FindQueryInput!): [Metadata!]!
  findMetadataCount(query: FindQueryInput!): Int!
  guideTemplates: GuideTemplates!
  metadata(id: String!, version: Int): Metadata
  metadataSupplementary(supplementaryId: String!): MetadataSupplementary
  slug(slug: String!): ContentItem
  sources: Sources!
}

type ContentMutation {
  category: CategoryMutation!
  collection: CollectionMutation!
  metadata: MetadataMutation!
  rebuildStorageSystemContent: Boolean!
  sources: SourceMutation!
}

type Document {
  content: JSON!
  template: Metadata
  title: String!
}

type DocumentTemplate {
  attributes: [TemplateAttribute!]!
  configuration: JSON
  containers: [DocumentTemplateContainer!]!
  content: JSON!
  defaultAttributes: JSON
  metadata: Metadata
  schema: JSON
}

type DocumentTemplateContainer {
  description: String!
  id: String!
  name: String!
  supplementaryKey: String
  type: DocumentTemplateContainerType!
  workflows: [TemplateWorkflow!]!
}

type DocumentTemplates {
  all: [DocumentTemplate!]!
}

type FilteredComponent {
  content: JSON!
}

type FindBibleResult {
  book: BibleBook!
  chapter: BibleChapter
  component: FilteredComponent
  human: String!
  usfm: String!
}

type Group {
  id: String!
  name: String!
  type: GroupType!
}

type Groups {
  all(limit: Int!, offset: Int!): [Group!]!
}

type GroupsMutation {
  addGroup(description: String!, groupType: GroupType!, name: String!): Group!
}

type Guide {
  recurrences: [DateTime!]
  rrule: String
  step(date: DateTime, stepId: Int): GuideStep
  stepCount: Int!
  steps(limit: Int, offset: Int): [GuideStep!]!
  template: Metadata
  type: GuideType!
}

type GuideStep {
  date: DateTime
  id: Int!
  metadata: Metadata
  modules: [GuideStepModule!]!
}

type GuideStepModule {
  id: Int!
  metadata: Metadata
}

type GuideTemplate {
  rrule: String
  steps: [GuideTemplateStep!]!
  type: GuideType!
}

type GuideTemplateStep {
  id: Int!
  metadata: Metadata
  modules: [GuideTemplateStepModule!]!
}

type GuideTemplateStepModule {
  id: Int!
  metadata: Metadata
}

type GuideTemplates {
  all: [GuideTemplate!]!
}

type Login {
  password(identifier: String!, password: String!): LoginResponse!
}

type LoginMutation {
  password(identifier: String!, password: String!): LoginResponse!
  refreshToken(refreshToken: String!): LoginResponse!
}

type LoginResponse {
  principal: Principal!
  profile: Profile
  refreshToken: String!
  token: Token!
}

type Metadata {
  attributes(filter: AttributesFilterInput): JSON
  bible: Bible
  categories: [Category!]!
  collectionTemplate: CollectionTemplate
  content: MetadataContent!
  created: DateTime!
  deleted: Boolean!
  document: Document
  documentTemplate: DocumentTemplate
  etag(addHeader: Boolean!): String
  guide: Guide
  guideTemplate: GuideTemplate
  id: String!
  itemAttributes: JSON
  labels: [String!]!
  languageTag: String!
  modified: DateTime!
  name: String!
  parentCollections(limit: Int!, offset: Int!): [Collection!]!
  parentId: String
  permissions: [Permission!]!
  profiles: [MetadataProfile!]!
  public: Boolean!
  publicContent: Boolean!
  publicSupplementary: Boolean!
  ready: DateTime
  relationships(filter: [String!], inverse: Boolean): [MetadataRelationship!]!
  slug: String
  source: MetadataSource!
  supplementary(key: String, planId: String): [MetadataSupplementary!]!
  systemAttributes: JSON
  traitIds: [String!]!
  type: MetadataType!
  uploaded: DateTime
  version: Int!
  workflow: MetadataWorkflow!
}

type MetadataContent {
  json: JSON!
  length: Int
  text: String!
  type: String!
  urls: MetadataContentUrls!
}

type MetadataContentUrls {
  download: SignedUrl!
  upload: SignedUrl!
}

type MetadataMutation {
  add(collectionItemAttributes: JSON, metadata: MetadataInput!): Metadata!
  addBulk(metadatas: [MetadataChildInput!]!): [Metadata!]!
  addCategory(categoryId: String!, metadataId: String!): Boolean!
  addDocument(parentCollectionId: String!, templateId: String!, templateVersion: Int!): Metadata
  addGuide(parentCollectionId: String!, templateId: String!, templateVersion: Int!): Metadata
  addGuideStep(metadataId: String!, metadataVersion: Int!, sort: Int!, templateId: String!, templateStepId: Int!, templateVersion: Int!): GuideStep!
  addGuideStepModule(metadataId: String!, metadataVersion: Int!, sort: Int!, stepId: Int!, templateId: String!, templateModuleId: Int!, templateStepId: Int!, templateVersion: Int!): GuideStepModule!
  addPermission(permission: PermissionInput!): Permission!
  addRelationship(relationship: MetadataRelationshipInput!): MetadataRelationship!
  addSupplementary(supplementary: MetadataSupplementaryInput!): MetadataSupplementary!
  addTrait(metadataId: String!, traitId: String!): [WorkflowExecutionPlan!]!
  delete(metadataId: String!): Boolean!
  deleteCategory(categoryId: String!, metadataId: String!): Boolean!
  deleteContent(metadataId: String!): Boolean!
  deleteGuide(metadataId: String!, metadataVersion: Int!): Boolean!
  deleteGuideStep(metadataId: String!, metadataVersion: Int!, stepId: Int!): Boolean!
  deletePermission(permission: PermissionInput!): Permission!
  deleteRelationship(id1: String!, id2: String!, relationship: String!): Boolean!
  deleteSupplementary(id: String!): Boolean!
  deleteTrait(metadataId: String!, traitId: String!): [WorkflowExecutionPlan!]!
  detachSupplementary(id: String!): Boolean!
  edit(id: String!, metadata: MetadataInput!): Metadata!
  editRelationship(relationship: MetadataRelationshipInput!): Boolean!
  mergeMetadataAttributes(attributes: JSON!, id: String!): Boolean!
  mergeMetadataRelationshipAttributes(attributes: JSON!, metadata1Id: String!, metadata2Id: String!, relationship: String!): Boolean!
  permanentlyDelete(metadataId: String!): Boolean!
  setGuideStartDate(date: DateTime!, metadataId: String!, metadataVersion: Int!): Metadata
  setMetadataAttributes(attributes: JSON!, id: String!): Boolean!
  setMetadataBible(bible: BibleInput!, id: String!, version: Int!): Boolean!
  setMetadataContents(contentType: String, file: Upload!, id: String!): Boolean!
  setMetadataDocument(document: DocumentInput!, id: String!, version: Int!): Boolean!
  setMetadataJsonContents(content: JSON!, contentType: String, id: String!): Boolean!
  setMetadataReady(configurations: [WorkflowConfigurationInput!], id: String!): Boolean!
  setMetadataSystemAttributes(attributes: JSON!, id: String!): Boolean!
  setMetadataTextContents(content: String!, contentType: String, id: String!): Boolean!
  setMetadataUploaded(configurations: [WorkflowConfigurationInput!], contentType: String, id: String!, len: Int!, ready: Boolean): Boolean!
  setPublic(id: String!, public: Boolean!): Metadata!
  setPublicContent(id: String!, public: Boolean!): Metadata!
  setPublicSupplementary(id: String!, public: Boolean!): Metadata!
  setSupplementaryContents(contentType: String!, file: Upload!, supplementaryId: String!): Boolean!
  setSupplementaryTextContents(content: String!, contentType: String!, supplementaryId: String!): Boolean!
  setSupplementaryUploaded(contentType: String!, len: Int!, supplementaryId: String!): Boolean!
  setWorkflowState(state: MetadataWorkflowState!): Boolean!
  setWorkflowStateComplete(state: MetadataWorkflowCompleteState!): Boolean!
}

type MetadataProfile {
  profile: Profile
  relationship: String!
}

type MetadataRelationship {
  attributes: JSON
  id: String!
  metadata: Metadata!
  relationship: String!
}

type MetadataSource {
  id: String
  identifier: String
  sourceUrl: String
}

type MetadataSupplementary {
  attributes: JSON
  content: MetadataSupplementaryContent!
  created: String!
  id: String!
  key: String!
  metadataId: String!
  modified: String!
  name: String!
  planId: String
  source: MetadataSupplementarySource!
  uploaded: String
}

type MetadataSupplementaryContent {
  json: JSON!
  length: Int
  text: String!
  type: String!
  urls: MetadataSupplementaryContentUrls!
}

type MetadataSupplementaryContentUrls {
  download: SignedUrl!
  upload: SignedUrl!
}

type MetadataSupplementarySource {
  id: String!
  identifier: String
}

type MetadataWorkflow {
  deleteWorkflow: String
  pending: String
  plans: [WorkflowExecutionPlan!]!
  running: Int!
  state: String!
  stateValid: DateTime
}

type Model {
  configuration: JSON!
  description: String!
  id: String!
  name: String!
  type: String!
}

type Models {
  all: [Model!]!
  model(id: String!): Model
}

type ModelsMutation {
  add(model: ModelInput!): Model
  delete(id: String!): Boolean!
  edit(id: String!, model: ModelInput!): Model
}

type Mutation {
  clearCache: Boolean!
  configurations: ConfigurationsMutation!
  content: ContentMutation!
  persistedQueries: PersistedQueriesMutation!
  profiles: ProfilesMutation!
  security: SecurityMutation!
  workflows: WorkflowsMutation!
}

type Ordering {
  field: String
  location: AttributeLocation
  order: Order!
  path: [String!]
  type: AttributeType
}

type Permission {
  action: PermissionAction!
  group: Group!
  groupId: String!
}

type PersistedQueriesMutation {
  add(application: String!, query: String!, sha256: String!): Boolean!
  addAll(application: String!, queries: [PersistedQueryInput!]!): Boolean!
  delete(application: String!, sha256: String!): Boolean!
  deleteAll: Boolean!
}

type PersistedQueriesObject {
  all: [PersistedQuery!]!
  query(sha256: String!): PersistedQuery
}

type PersistedQuery {
  application: String!
  query: String!
  sha256: String!
}

type Principal {
  credentials: [PrincipalCredential!]!
  groups: [Group!]!
  id: String!
  verified: Boolean!
}

type PrincipalCredential {
  identifier: String!
  type: CredentialType!
}

type PrincipalMutation {
  identifier(identifier: String!): Boolean!
  password(identifier: String, newPassword: String!, oldPassword: String!): Boolean!
}

type Principals {
  all(limit: Int!, offset: Int!): [Principal!]!
  current: Principal!
}

type Profile {
  attributes: [ProfileAttribute!]!
  collection: Collection
  id: String!
  name: String!
  principal: Principal
  slug: String
  visibility: ProfileVisibility!
}

type ProfileAttribute {
  attributes: JSON
  confidence: Int!
  expires: DateTime
  id: String!
  metadata: Metadata
  priority: Int!
  source: String!
  typeId: String!
  visibility: ProfileVisibility!
}

type ProfileAttributeType {
  description: String!
  id: String!
  name: String!
  visibility: ProfileVisibility!
}

type ProfileAttributeTypes {
  all: [ProfileAttributeType!]!
}

type Profiles {
  all(limit: Int!, offset: Int!): [Profile!]!
  attributeTypes: ProfileAttributeTypes!
  current: Profile
  profile(id: String!): Profile
}

type ProfilesMutation {
  add(profile: ProfileInput!): Profile
  addAttributeType(attribute: ProfileAttributeTypeInput!): Boolean!
  deleteAttribute(attributeId: String!, id: String): Boolean!
  deleteAttributeType(attributeId: String!): Boolean!
  edit(id: String, profile: ProfileInput!): Profile
  editAttributeType(attribute: ProfileAttributeTypeInput!): Boolean!
}

type Prompt {
  description: String!
  id: String!
  inputType: String!
  name: String!
  outputType: String!
  schema: JSON
  systemPrompt: String!
  userPrompt: String!
}

type Prompts {
  all: [Prompt!]!
  prompt(id: String!): Prompt
}

type PromptsMutation {
  add(prompt: PromptInput!): Prompt
  delete(id: String!): Boolean!
  edit(id: String!, prompt: PromptInput!): Prompt
}

type Query {
  caches: CachesObject!
  configurations: Configurations!
  content: Content!
  persistedQueries: PersistedQueriesObject!
  profiles: Profiles!
  search(query: SearchQuery!): SearchResultObject!
  security: Security!
  server: Server!
  workflows: Workflows!
}

type SearchDocument {
  collection: Collection
  metadata: Metadata
  profile: Profile
}

type SearchResultFacet {
  count: Int!
  field: String!
  value: String!
}

type SearchResultObject {
  documents: [SearchDocument!]!
  estimatedHits: Int!
  facets: [SearchResultFacet!]!
}

type Security {
  actions: [String!]!
  groups: Groups!
  login: Login!
  principal: Principal!
  principals: Principals!
}

type SecurityMutation {
  addPrincipalGroup(groupId: String!, principalId: String!): Boolean!
  expireRefreshTokens: Boolean!
  groups: GroupsMutation!
  login: LoginMutation!
  principal(id: String): PrincipalMutation!
  removePrincipalGroup(groupId: String!, principalId: String!): Boolean!
  signup: SignupMutation!
}

type Server {
  now: DateTime!
}

type SignedUrl {
  headers: [SignedUrlHeader!]!
  url: String!
}

type SignedUrlHeader {
  name: String!
  value: String!
}

type SignupMutation {
  password(identifier: String!, password: String!, profile: ProfileInput!): Principal!
  passwordVerify(verificationToken: String!): Boolean!
}

type Source {
  configuration: JSON!
  description: String!
  id: String!
  name: String!
}

type SourceMutation {
  add(source: SourceInput!): Source
}

type Sources {
  all: [Source!]!
  source(id: String!): Source
}

type StorageSystem {
  configuration: JSON
  description: String!
  id: String!
  models: [StorageSystemModel!]!
  name: String!
  type: StorageSystemType!
}

type StorageSystemModel {
  configuration: JSON!
  model: Model
  modelId: String!
}

type StorageSystems {
  all: [StorageSystem!]!
  storageSystem(id: String!): StorageSystem
}

type StorageSystemsMutation {
  add(storageSystem: StorageSystemInput!): StorageSystem
  delete(id: String!): Boolean!
  edit(id: String!, storageSystem: StorageSystemInput!): StorageSystem
}

type Subscription {
  activity: String!
  category: String!
  collection: String!
  collectionSupplementary: SupplementaryIdObject!
  configuration: String!
  metadata: String!
  metadataSupplementary: SupplementaryIdObject!
  model: String!
  prompt: String!
  state: String!
  storageSystem: String!
  trait: String!
  transition: TransitionIdObject!
  workflow: String!
  workflowPlanFailed: WorkflowExecutionId!
  workflowPlanFinished: WorkflowExecutionId!
  workflowSchedule: String!
}

type SupplementaryIdObject {
  contentId: String!
  id: String!
  key: String!
  planId: String
}

type TemplateAttribute {
  configuration: JSON
  description: String!
  key: String!
  list: Boolean!
  location: AttributeLocation!
  name: String!
  supplementaryKey: String
  type: AttributeType!
  ui: AttributeUiType!
  workflows: [TemplateWorkflow!]!
}

type TemplateWorkflow {
  autoRun: Boolean!
  workflow: Workflow
}

type Token {
  expiresAt: Int!
  issuedAt: Int!
  token: String!
}

type Trait {
  contentTypes: [String!]!
  deleteWorkflowId: String
  description: String!
  id: String!
  name: String!
  workflowIds: [String!]!
  workflows: [Workflow!]!
}

type Traits {
  all: [Trait!]!
  trait(id: String!): Trait
}

type TraitsMutation {
  add(model: TraitInput!): Trait
  delete(id: String!): Boolean!
  edit(model: TraitInput!): Trait
}

type Transition {
  description: String!
  fromStateId: String!
  toStateId: String!
}

type TransitionIdObject {
  fromStateId: String!
  toStateId: String!
}

type Transitions {
  all: [Transition!]!
  transition(fromStateId: String!, toStateId: String!): Transition
}

type TransitionsMutation {
  add(transition: TransitionInput!): Transition
  delete(fromStateId: String!, toStateId: String!): Boolean!
  edit(transition: TransitionInput!): Transition
}

type Workflow {
  activities: [WorkflowActivity!]!
  configuration: JSON!
  description: String!
  id: String!
  name: String!
  queue: String!
}

type WorkflowActivity {
  activityId: String!
  configuration: JSON
  executionGroup: Int!
  id: Int!
  inputs: [WorkflowActivityParameter!]!
  models: [WorkflowActivityModel!]!
  outputs: [WorkflowActivityParameter!]!
  prompts: [WorkflowActivityPrompt!]!
  queue: String!
  storageSystems: [WorkflowActivityStorageSystem!]!
}

type WorkflowActivityModel {
  configuration: JSON
  model: Model!
}

type WorkflowActivityParameter {
  name: String!
  value: String!
}

type WorkflowActivityPrompt {
  configuration: JSON
  prompt: Prompt!
}

type WorkflowActivityStorageSystem {
  configuration: JSON
  system: StorageSystem!
}

type WorkflowExecutionId {
  id: String!
  queue: String!
}

type WorkflowExecutionPlan {
  active: [Int!]!
  cancelled: Boolean!
  collectionId: String
  complete: [Int!]!
  context: JSON
  error: String
  failed: [Int!]!
  id: WorkflowExecutionId!
  jobs: [WorkflowJob!]!
  metadata: Metadata
  metadataId: String
  metadataVersion: Int
  parent: WorkflowJobId
  supplementaryId: String
  workflow: Workflow!
}

type WorkflowJob {
  activity: Activity!
  children: [WorkflowExecutionId!]!
  collection: Collection
  collectionId: String
  completedChildren: [WorkflowExecutionId!]!
  context: JSON
  error: String
  failedChildren: [WorkflowExecutionId!]!
  id: WorkflowJobId!
  metadata: Metadata
  metadataVersion: Int
  models: [WorkflowActivityModel!]!
  parent: WorkflowJobId
  planId: WorkflowExecutionId!
  profile: Profile
  prompts: [WorkflowActivityPrompt!]!
  storageSystems: [WorkflowActivityStorageSystem!]!
  supplementaryId: String
  workflow: Workflow!
  workflowActivity: WorkflowActivity!
}

type WorkflowJobId {
  id: String!
  index: Int!
  queue: String!
}

type WorkflowSchedule {
  attributes: JSON
  collection: Collection
  configuration: JSON
  enabled: Boolean!
  ends: DateTime
  id: String!
  lastRun: DateTime
  lastScheduled: DateTime
  metadata: Metadata
  nextRun: DateTime
  rrule: String!
  starts: DateTime!
  workflow: Workflow
}

type WorkflowSchedules {
  all: [WorkflowSchedule!]!
}

type WorkflowSchedulesMutation {
  add(collectionId: String, metadataId: String, schedule: WorkflowScheduleInput!): WorkflowSchedule
  delete(id: String!): Boolean!
}

type WorkflowState {
  configuration: JSON
  description: String!
  entryWorkflowId: String
  exitWorkflowId: String
  id: String!
  name: String!
  type: WorkflowStateType!
  workflowId: String
}

type WorkflowStates {
  all: [WorkflowState!]!
  state(id: String!): WorkflowState
}

type WorkflowStatesMutation {
  add(state: WorkflowStateInput!): WorkflowState
  delete(id: String!): Boolean!
  edit(state: WorkflowStateInput!): WorkflowState
}

type Workflows {
  activities: Activities!
  all: [Workflow!]!
  executionPlan(id: String!, queue: String!): WorkflowExecutionPlan
  executions(limit: Int!, offset: Int!, queue: String!): [WorkflowExecution!]!
  models: Models!
  nextJob(queue: String!): WorkflowJob
  prompts: Prompts!
  schedules: WorkflowSchedules!
  states: WorkflowStates!
  storageSystems: StorageSystems!
  testPlan(collectionId: String, configurations: [WorkflowConfigurationInput!], delayUntil: DateTime, metadataId: String, metadataVersion: Int, profileId: String, storageSystemIds: [String!], traitId: String, workflowId: String): WorkflowExecutionPlan
  traits: Traits!
  transitions: Transitions!
  workflow(id: String!): Workflow
  workflowActivity(id: Int!): WorkflowActivity
}

type WorkflowsMutation {
  activities: ActivitiesMutation!
  add(workflow: WorkflowInput!): Workflow!
  beginTransition(configurations: [WorkflowConfigurationInput!], request: BeginTransitionInput!): Boolean!
  cancelTransition(collectionId: String, metadataId: String, metadataVersion: Int): Boolean!
  cancelWorkflows(collectionId: String, metadataId: String, metadataVersion: Int, workflowId: String!): Boolean!
  delete(id: String!): Boolean!
  edit(workflow: WorkflowInput!): Workflow!
  enqueueChildWorkflow(configurations: [WorkflowConfigurationInput!], delayUntil: DateTime, jobId: WorkflowJobIdInput!, workflowId: String!): WorkflowExecutionId!
  enqueueChildWorkflows(delayUntil: DateTime, jobId: WorkflowJobIdInput!, workflowIds: [String!]!): [WorkflowExecutionId!]!
  enqueueWorkflow(collectionId: String, configurations: [WorkflowConfigurationInput!], delayUntil: DateTime, metadataId: String, profileId: String, version: Int, workflowId: String!): WorkflowExecutionId!
  expireAll: Boolean!
  findAndEnqueueWorkflow(configurations: [WorkflowConfigurationInput!], delayUntil: DateTime, query: FindQueryInput!, workflowId: String!): [WorkflowExecutionId!]!
  models: ModelsMutation!
  prompts: PromptsMutation!
  retryAllFailed: Boolean!
  schedules: WorkflowSchedulesMutation!
  setExecutionPlanContext(context: JSON!, planId: WorkflowExecutionIdInput!): Boolean!
  setExecutionPlanJobCheckin(jobId: WorkflowJobIdInput!): Boolean!
  setExecutionPlanJobComplete(jobId: WorkflowJobIdInput!): Boolean!
  setExecutionPlanJobContext(context: JSON!, jobId: WorkflowJobIdInput!): Boolean!
  setExecutionPlanJobDelayed(delayedUntil: DateTime!, jobId: WorkflowJobIdInput!): Boolean!
  setExecutionPlanJobFailed(error: String!, jobId: WorkflowJobIdInput!, tryAgain: Boolean!): Boolean!
  states: WorkflowStatesMutation!
  storageSystems: StorageSystemsMutation!
  traits: TraitsMutation!
  transitions: TransitionsMutation!
}

enum ActivityParameterType {
  CONTEXT
  SUPPLEMENTARY
  SUPPLEMENTARY_ARRAY
}

enum AttributeLocation {
  ITEM
  RELATIONSHIP
}

enum AttributeType {
  COLLECTION
  DATE
  DATE_TIME
  FLOAT
  INT
  METADATA
  PROFILE
  STRING
}

enum AttributeUiType {
  COLLECTION
  FILE
  IMAGE
  INPUT
  METADATA
  PROFILE
  TEXTAREA
}

enum CollectionType {
  FOLDER
  QUEUE
  ROOT
  STANDARD
  SYSTEM
}

enum ContainerType {
  COLUMN
  DIV
  PARAGRAPH
  ROW
  SPAN
  TABLE
}

enum CredentialType {
  OAUTH_2
  PASSWORD
}

enum DocumentTemplateContainerType {
  BIBLE
  STANDARD
}

enum ExtensionFilterType {
  COLLECTION_TEMPLATE
  DOCUMENT
  DOCUMENT_TEMPLATE
  GUIDE
  GUIDE_TEMPLATE
}

enum GroupType {
  PRINCIPAL
  SYSTEM
}

enum GuideType {
  CALENDAR
  CALENDAR_PROGRESS
  LINEAR
  LINEAR_PROGRESS
}

enum MetadataType {
  STANDARD
  VARIANT
}

enum Order {
  ASCENDING
  DESCENDING
}

enum PermissionAction {
  DELETE
  EDIT
  EXECUTE
  IMPERSONATE
  LIST
  MANAGE
  VIEW
}

enum ProfileVisibility {
  FRIENDS
  FRIENDS_OF_FRIENDS
  PUBLIC
  SYSTEM
  USER
}

enum StorageSystemType {
  SEARCH
  SUPPLEMENTARY
  VECTOR
}

enum WorkflowStateType {
  APPROVAL
  APPROVED
  DRAFT
  FAILURE
  PENDING
  PROCESSING
  PUBLISHED
}

"""

Implement the DateTime<Utc> scalar

The input/output is a string in RFC3339 format.
"""
scalar DateTime

"A scalar that can represent any JSON value."
scalar JSON

scalar Upload

input ActivityInput {
  childWorkflowId: String
  configuration: JSON
  description: String!
  id: String!
  inputs: [ActivityParameterInput!]!
  name: String!
  outputs: [ActivityParameterInput!]!
}

input ActivityParameterInput {
  name: String!
  type: ActivityParameterType!
}

input AttributesFilterInput {
  attributes: [String!]!
  childAttributes: AttributesFilterInput
}

input BeginTransitionInput {
  collectionId: String
  metadataId: String
  restart: Boolean
  stateId: String!
  stateValid: DateTime
  status: String!
  supplementaryId: String
  version: Int
  waitForCompletion: Boolean
}

input BibleInput {
  abbreviation: String!
  abbreviationLocal: String!
  books: [BookInput!]!
  description: String!
  language: BibleLanguageInput!
  name: String!
  nameLocal: String!
  styles: [StyleInput!]!
  systemId: String!
}

input BibleLanguageInput {
  iso: String!
  name: String!
  nameLocal: String!
  script: String!
  scriptCode: String!
  scriptDirection: String!
}

input BookInput {
  abbreviation: String!
  chapters: [ChapterInput!]!
  nameLong: String!
  nameShort: String!
  reference: ReferenceInput!
}

input BreakInput {
  style: StyleInput
}

input CategoryInput {
  name: String!
}

input ChapterInput {
  component: ComponentInput!
  reference: ReferenceInput!
}

input CollectionChildInput {
  attributes: JSON
  collection: CollectionInput!
}

input CollectionInput {
  attributes: JSON
  categoryIds: [String!]
  collectionType: CollectionType
  collections: [CollectionChildInput!]
  description: String
  labels: [String!]
  metadata: [MetadataChildInput!]
  name: String!
  ordering: [OrderingInput!]
  parentCollectionId: String
  slug: String
  state: CollectionWorkflowInput
  templateMetadataId: String
  templateMetadataVersion: Int
  traitIds: [String!]
}

input CollectionMetadataRelationshipInput {
  attributes: JSON
  id: String!
  metadataId: String!
  relationship: String
}

input CollectionSupplementaryInput {
  attributes: JSON
  collectionId: String!
  contentLength: Int
  contentType: String!
  key: String!
  name: String!
  planId: String!
  sourceId: String
  sourceIdentifier: String
}

input CollectionTemplateFilterInput {
  filter: String!
  name: String!
}

input CollectionTemplateFiltersInput {
  filters: [CollectionTemplateFilterInput!]!
}

input CollectionTemplateInput {
  attributes: [TemplateAttributeInput!]!
  configuration: JSON
  defaultAttributes: JSON
  filters: CollectionTemplateFiltersInput
  ordering: [OrderingInput!]
}

input CollectionWorkflowCompleteState {
  collectionId: String!
  status: String!
}

input CollectionWorkflowInput {
  deleteWorkflowId: String
  state: String!
}

input CollectionWorkflowState {
  collectionId: String!
  immediate: Boolean!
  stateId: String!
  status: String!
}

input ComponentContainerInput {
  components: [ComponentInput!]!
  style: StyleInput
  type: ContainerType!
}

input ComponentInput {
  break: BreakInput
  container: ComponentContainerInput
  end: VerseEndInput
  start: VerseStartInput
  text: TextInput
}

input ConfigurationInput {
  description: String!
  key: String!
  permissions: [PermissionInput!]!
  public: Boolean!
  value: JSON!
}

input DocumentInput {
  content: JSON!
  templateMetadataId: String
  templateMetadataVersion: Int
  title: String!
}

input DocumentTemplateContainerInput {
  containerType: DocumentTemplateContainerType
  description: String!
  id: String!
  name: String!
  supplementaryKey: String
  workflows: [TemplateWorkflowInput!]!
}

input DocumentTemplateInput {
  attributes: [TemplateAttributeInput!]!
  configuration: JSON
  containers: [DocumentTemplateContainerInput!]
  content: JSON!
  defaultAttributes: JSON
  schema: JSON
}

input FindAttributeInput {
  key: String!
  value: String!
}

input FindAttributesInput {
  attributes: [FindAttributeInput!]!
}

input FindQueryInput {
  attributes: [FindAttributesInput!]!
  categoryIds: [String!]
  collectionType: CollectionType
  contentTypes: [String!]
  extensionFilter: ExtensionFilterType
  limit: Int
  offset: Int
  ordering: [OrderingInput!]
}

input GuideInput {
  guideType: GuideType!
  rrule: String
  steps: [GuideStepInput!]!
  templateMetadataId: String
  templateMetadataVersion: Int
}

input GuideStepInput {
  metadata: MetadataInput
  modules: [GuideStepModuleInput!]!
  stepMetadataId: String
  stepMetadataVersion: Int
}

input GuideStepModuleInput {
  metadata: MetadataInput
  moduleMetadataId: String
  moduleMetadataVersion: Int
}

input GuideTemplateInput {
  rrule: String!
  steps: [GuideTemplateStepInput!]!
  type: GuideType!
}

input GuideTemplateStepInput {
  modules: [GuideTemplateStepModuleInput!]!
  templateMetadataId: String!
  templateMetadataVersion: Int!
}

input GuideTemplateStepModuleInput {
  templateMetadataId: String!
  templateMetadataVersion: Int!
}

input MetadataChildInput {
  attributes: JSON
  metadata: MetadataInput!
}

input MetadataInput {
  attributes: JSON
  categoryIds: [String!]
  collectionTemplate: CollectionTemplateInput
  contentLength: Int
  contentType: String!
  document: DocumentInput
  documentTemplate: DocumentTemplateInput
  guide: GuideInput
  guideTemplate: GuideTemplateInput
  labels: [String!]
  languageTag: String!
  metadataType: MetadataType
  name: String!
  parentCollectionId: String
  parentId: String
  profiles: [MetadataProfileInput!]
  slug: String
  source: MetadataSourceInput
  state: MetadataWorkflowInput
  traitIds: [String!]
  version: Int
}

input MetadataProfileInput {
  profileId: String!
  relationship: String!
}

input MetadataRelationshipInput {
  attributes: JSON
  id1: String!
  id2: String!
  relationship: String
}

input MetadataSourceInput {
  id: String
  identifier: String
  sourceUrl: String
}

input MetadataSupplementaryInput {
  attributes: JSON
  contentLength: Int
  contentType: String!
  key: String!
  metadataId: String!
  name: String!
  planId: String!
  sourceId: String
  sourceIdentifier: String
}

input MetadataWorkflowCompleteState {
  metadataId: String!
  status: String!
}

input MetadataWorkflowInput {
  deleteWorkflowId: String
  state: String!
}

input MetadataWorkflowState {
  immediate: Boolean!
  metadataId: String!
  stateId: String!
  status: String!
}

input ModelInput {
  configuration: JSON!
  description: String!
  name: String!
  type: String!
}

input OrderingInput {
  field: String
  location: AttributeLocation
  order: Order!
  path: [String!]
  type: AttributeType
}

input PermissionInput {
  action: PermissionAction!
  entityId: String!
  groupId: String!
}

input PersistedQueryInput {
  query: String!
  sha256: String!
}

input ProfileAttributeInput {
  attributes: JSON
  confidence: Int!
  expiration: DateTime
  id: String
  metadataId: String
  metadataSupplementary: String
  priority: Int!
  source: String!
  typeId: String!
  visibility: ProfileVisibility!
}

input ProfileAttributeTypeInput {
  description: String!
  id: String!
  name: String!
  visibility: ProfileVisibility!
}

input ProfileInput {
  attributes: [ProfileAttributeInput!]!
  name: String!
  slug: String
  visibility: ProfileVisibility!
}

input PromptInput {
  description: String!
  inputType: String!
  name: String!
  outputType: String!
  schema: JSON
  systemPrompt: String!
  userPrompt: String!
}

input ReferenceInput {
  usfm: String!
}

input SearchQuery {
  facets: [String!]
  filter: String
  limit: Int
  offset: Int
  query: String!
  sort: [String!]
  storageSystemId: String
  storageSystemName: String
}

input SourceInput {
  configuration: JSON!
  description: String!
  name: String!
}

input StorageSystemInput {
  configuration: JSON
  description: String!
  models: [StorageSystemModelInput!]!
  name: String!
  type: StorageSystemType!
}

input StorageSystemModelInput {
  configuration: JSON!
  modelId: String!
}

input StyleInput {
  align: String
  fontWeight: String
  id: String!
  reference: Boolean!
  textIndent: TextIndentInput
}

input TemplateAttributeInput {
  configuration: JSON
  description: String!
  key: String!
  list: Boolean!
  location: AttributeLocation
  name: String!
  supplementaryKey: String
  type: AttributeType!
  ui: AttributeUiType!
  workflows: [TemplateWorkflowInput!]!
}

input TemplateWorkflowInput {
  autoRun: Boolean!
  workflowId: String!
}

input TextIndentInput {
  size: Float!
  unit: String!
}

input TextInput {
  style: StyleInput
  text: String!
}

input TraitInput {
  contentTypes: [String!]!
  deleteWorkflowId: String
  description: String!
  id: String!
  name: String!
  workflowIds: [String!]!
}

input TransitionInput {
  description: String!
  fromStateId: String!
  toStateId: String!
}

input VerseEndInput {
  reference: ReferenceInput!
}

input VerseStartInput {
  reference: ReferenceInput!
}

input WorkflowActivityInput {
  activityId: String!
  configuration: JSON
  description: String!
  executionGroup: Int!
  inputs: [WorkflowActivityParameterInput!]!
  models: [WorkflowActivityModelInput!]!
  outputs: [WorkflowActivityParameterInput!]!
  prompts: [WorkflowActivityPromptInput!]!
  queue: String!
  storageSystems: [WorkflowActivityStorageSystemInput!]!
}

input WorkflowActivityModelInput {
  configuration: JSON
  modelId: String!
}

input WorkflowActivityParameterInput {
  name: String!
  value: String!
}

input WorkflowActivityPromptInput {
  configuration: JSON
  promptId: String!
}

input WorkflowActivityStorageSystemInput {
  configuration: JSON
  systemId: String!
}

input WorkflowConfigurationInput {
  activityId: String!
  configuration: JSON!
}

input WorkflowExecutionIdInput {
  id: String!
  queue: String!
}

input WorkflowInput {
  activities: [WorkflowActivityInput!]!
  configuration: JSON!
  description: String!
  id: String!
  name: String!
  queue: String!
}

input WorkflowJobIdInput {
  id: String!
  index: Int!
  queue: String!
}

input WorkflowScheduleInput {
  attributes: JSON
  configuration: JSON
  enabled: Boolean!
  ends: DateTime
  rrule: String!
  workflowId: String!
}

input WorkflowStateInput {
  configuration: JSON!
  description: String!
  entryWorkflowId: String
  exitWorkflowId: String
  id: String!
  name: String!
  type: WorkflowStateType!
  workflowId: String
}