directive @goField( forceResolver: Boolean name: String omittable: Boolean ) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION scalar CursorKey scalar Void scalar Datetime scalar Upload interface Node { id: ID! } enum ControlState { NOT_STARTED IN_PROGRESS NOT_APPLICABLE IMPLEMENTED } enum TaskState { TODO DONE } enum EvidenceState { VALID INVALID EXPIRED } type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: CursorKey endCursor: CursorKey } type Organization implements Node { id: ID! name: String! frameworks( first: Int after: CursorKey last: Int before: CursorKey ): FrameworkConnection! @goField(forceResolver: true) vendors( first: Int after: CursorKey last: Int before: CursorKey ): VendorConnection! @goField(forceResolver: true) peoples( first: Int after: CursorKey last: Int before: CursorKey ): PeopleConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type PeopleConnection { edges: [PeopleEdge!]! pageInfo: PageInfo! } type PeopleEdge { cursor: CursorKey! node: People! } type People implements Node { id: ID! fullName: String! primaryEmailAddress: String! additionalEmailAddresses: [String!]! createdAt: Datetime! updatedAt: Datetime! } type VendorConnection { edges: [VendorEdge!]! pageInfo: PageInfo! } type VendorEdge { cursor: CursorKey! node: Vendor! } type Vendor implements Node { id: ID! name: String! createdAt: Datetime! updatedAt: Datetime! } type FrameworkConnection { edges: [FrameworkEdge!]! pageInfo: PageInfo! } type FrameworkEdge { cursor: CursorKey! node: Framework! } type Framework implements Node { id: ID! name: String! description: String! controls( first: Int after: CursorKey last: Int before: CursorKey ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type ControlConnection { edges: [ControlEdge!]! pageInfo: PageInfo! } type ControlEdge { cursor: CursorKey! node: Control! } type Control implements Node { id: ID! name: String! description: String! state: ControlState! stateTransisions( first: Int after: CursorKey last: Int before: CursorKey ): ControlStateTransitionConnection! @goField(forceResolver: true) tasks( first: Int after: CursorKey last: Int before: CursorKey ): TaskConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type ControlStateTransitionConnection { edges: [ControlStateTransitionEdge!]! pageInfo: PageInfo! } type ControlStateTransitionEdge { cursor: CursorKey! node: ControlStateTransition! } type ControlStateTransition { id: ID! fromState: ControlState toState: ControlState! reason: String createdAt: Datetime! updatedAt: Datetime! } type TaskConnection { edges: [TaskEdge!]! pageInfo: PageInfo! } type TaskEdge { cursor: CursorKey! node: Task! } type Task implements Node { id: ID! name: String! description: String! state: TaskState! stateTransisions( first: Int after: CursorKey last: Int before: CursorKey ): TaskStateTransitionConnection! @goField(forceResolver: true) evidences( first: Int after: CursorKey last: Int before: CursorKey ): EvidenceConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type TaskStateTransitionConnection { edges: [TaskStateTransitionEdge!]! pageInfo: PageInfo! } type TaskStateTransitionEdge { cursor: CursorKey! node: TaskStateTransition! } type TaskStateTransition { id: ID! fromState: TaskState toState: TaskState! reason: String createdAt: Datetime! updatedAt: Datetime! } type EvidenceConnection { edges: [EvidenceEdge!]! pageInfo: PageInfo! } type EvidenceEdge { cursor: CursorKey! node: Evidence! } type Evidence implements Node { id: ID! fileUrl: String! mimeType: String! size: Int! state: EvidenceState! stateTransisions( first: Int after: CursorKey last: Int before: CursorKey ): EvidenceStateTransitionConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type EvidenceStateTransitionConnection { edges: [EvidenceStateTransitionEdge!]! pageInfo: PageInfo! } type EvidenceStateTransitionEdge { cursor: CursorKey! node: EvidenceStateTransition! } type EvidenceStateTransition { id: ID! fromState: EvidenceState toState: EvidenceState! reason: String createdAt: Datetime! updatedAt: Datetime! } type Query { node(id: ID!): Node! }