Skip to content

Instantly share code, notes, and snippets.

@wKich
Created December 26, 2022 15:00
Show Gist options
  • Save wKich/2301a8a2110104b03f6e31a31f0f8279 to your computer and use it in GitHub Desktop.
Save wKich/2301a8a2110104b03f6e31a31f0f8279 to your computer and use it in GitHub Desktop.
directive @extend(generatedTypeName: String, interface: String, is: ExtendIsArgument, when: ExtendWhenArgument) on INTERFACE
directive @field(at: FieldAtArgument!, default: FieldDefaultArgument) on FIELD_DEFINITION
directive @relation(kind: String, name: String, nodeType: String) on FIELD_DEFINITION
type API implements IAPI & IEntity & Node & Ownable {
consumers(after: String, before: String, first: Int, last: Int): ComponentConnection
definition: String!
description: String!
id: ID!
kind: String!
lifecycle: Lifecycle!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
providers(after: String, before: String, first: Int, last: Int): ComponentConnection
system: ISystem
tags: [String]
title: String!
}
type APIConnection implements Connection {
count: Int
edges: [APIEdge!]!
pageInfo: PageInfo!
}
type APIEdge implements Edge {
cursor: String!
node: IAPI!
}
type Component implements Dependency & IComponent & IEntity & Node & Ownable {
component: IComponent
consumesApi(after: String, before: String, first: Int, last: Int): APIConnection
dependencies(after: String, before: String, first: Int, last: Int): DependencyConnection
description: String!
id: ID!
kind: String!
lifecycle: Lifecycle!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
providesApi(after: String, before: String, first: Int, last: Int): APIConnection
subComponents(after: String, before: String, first: Int, last: Int): ComponentConnection
system: ISystem
tags: [String]
title: String!
}
type ComponentConnection implements Connection {
count: Int
edges: [ComponentEdge!]!
pageInfo: PageInfo!
}
type ComponentEdge implements Edge {
cursor: String!
node: IComponent!
}
interface Connection {
count: Int
edges: [Edge!]!
pageInfo: PageInfo!
}
interface Dependency implements Node {
id: ID!
}
type DependencyConnection implements Connection {
count: Int
edges: [DependencyEdge!]!
pageInfo: PageInfo!
}
type DependencyEdge implements Edge {
cursor: String!
node: Dependency!
}
type Domain implements IDomain & IEntity & Node & Ownable {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
systems(after: String, before: String, first: Int, last: Int): SystemConnection
tags: [String]
title: String!
}
interface Edge {
cursor: String!
node: Node!
}
type Entity implements IEntity & Node {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
tags: [String]
title: String!
}
type EntityLink {
icon: String
title: String
url: String!
}
scalar ExtendIsArgument
scalar ExtendWhenArgument
scalar FieldAtArgument
scalar FieldDefaultArgument
type Group implements IEntity & IGroup & Node {
children(after: String, before: String, first: Int, last: Int): GroupConnection
description: String!
displayName: String
email: String
id: ID!
kind: String!
links: [EntityLink]
members(after: String, before: String, first: Int, last: Int): UserConnection
name: String!
namespace: String!
ownerOf(after: String, before: String, first: Int, last: Int): OwnableConnection
parent: IGroup
picture: String
tags: [String]
title: String!
}
type GroupConnection implements Connection {
count: Int
edges: [GroupEdge!]!
pageInfo: PageInfo!
}
type GroupEdge implements Edge {
cursor: String!
node: IGroup!
}
interface IAPI implements IEntity & Node & Ownable {
consumers(after: String, before: String, first: Int, last: Int): ComponentConnection
definition: String!
description: String!
id: ID!
kind: String!
lifecycle: Lifecycle!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
providers(after: String, before: String, first: Int, last: Int): ComponentConnection
system: ISystem
tags: [String]
title: String!
}
interface IComponent implements Dependency & IEntity & Node & Ownable {
component: IComponent
consumesApi(after: String, before: String, first: Int, last: Int): APIConnection
dependencies(after: String, before: String, first: Int, last: Int): DependencyConnection
description: String!
id: ID!
kind: String!
lifecycle: Lifecycle!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
providesApi(after: String, before: String, first: Int, last: Int): APIConnection
subComponents(after: String, before: String, first: Int, last: Int): ComponentConnection
system: ISystem
tags: [String]
title: String!
}
interface IDomain implements IEntity & Node & Ownable {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
systems(after: String, before: String, first: Int, last: Int): SystemConnection
tags: [String]
title: String!
}
interface IEntity implements Node {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
tags: [String]
title: String!
}
interface IGroup implements IEntity & Node {
children(after: String, before: String, first: Int, last: Int): GroupConnection
description: String!
displayName: String
email: String
id: ID!
kind: String!
links: [EntityLink]
members(after: String, before: String, first: Int, last: Int): UserConnection
name: String!
namespace: String!
ownerOf(after: String, before: String, first: Int, last: Int): OwnableConnection
parent: IGroup
picture: String
tags: [String]
title: String!
}
interface ILocation implements IEntity & Node {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
tags: [String]
target: String
targets: [String]
title: String!
type: String
}
interface IResource implements Dependency & IEntity & Node & Ownable {
dependencies(after: String, before: String, first: Int, last: Int): DependencyConnection
dependents(after: String, before: String, first: Int, last: Int): DependencyConnection
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
system: ISystem
tags: [String]
title: String!
}
interface ISystem implements IEntity & Node & Ownable {
components(after: String, before: String, first: Int, last: Int): ComponentConnection
description: String!
domain: IDomain
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
resources(after: String, before: String, first: Int, last: Int): ResourceConnection
tags: [String]
title: String!
}
interface ITemplate implements IEntity & Node & Ownable {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
output: JSONObject
owner: Owner
parameters: JSONObject
steps: [Step]!
tags: [String]
title: String!
}
interface IUser implements IEntity & Node {
description: String!
displayName: String
email: String
id: ID!
kind: String!
links: [EntityLink]
memberOf(after: String, before: String, first: Int, last: Int): GroupConnection
name: String!
namespace: String!
ownerOf(after: String, before: String, first: Int, last: Int): OwnableConnection
picture: String
tags: [String]
title: String!
}
scalar JSON
scalar JSONObject
enum Lifecycle {
DEPRECATED
EXPERIMENTAL
PRODUCTION
}
type Location implements IEntity & ILocation & Node {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
tags: [String]
target: String
targets: [String]
title: String!
type: String
}
interface Node {
id: ID!
}
type NodeConnection implements Connection {
count: Int
edges: [Edge!]!
pageInfo: PageInfo!
}
type NodeEdge implements Edge {
cursor: String!
node: Node!
}
interface Ownable implements Node {
id: ID!
}
type OwnableConnection implements Connection {
count: Int
edges: [OwnableEdge!]!
pageInfo: PageInfo!
}
type OwnableEdge implements Edge {
cursor: String!
node: Ownable!
}
union Owner = Group | User
type PageInfo {
endCursor: String
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
}
type Query {
entity(kind: String!, name: String!, namespace: String): IEntity
node(id: ID!): Node
}
type Resource implements Dependency & IEntity & IResource & Node & Ownable {
dependencies(after: String, before: String, first: Int, last: Int): DependencyConnection
dependents(after: String, before: String, first: Int, last: Int): DependencyConnection
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
system: ISystem
tags: [String]
title: String!
}
type ResourceConnection implements Connection {
count: Int
edges: [ResourceEdge!]!
pageInfo: PageInfo!
}
type ResourceEdge implements Edge {
cursor: String!
node: IResource!
}
type Step {
action: String!
id: String
if: JSON
input: JSONObject
name: String
}
type System implements IEntity & ISystem & Node & Ownable {
components(after: String, before: String, first: Int, last: Int): ComponentConnection
description: String!
domain: IDomain
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
owner: Owner!
resources(after: String, before: String, first: Int, last: Int): ResourceConnection
tags: [String]
title: String!
}
type SystemConnection implements Connection {
count: Int
edges: [SystemEdge!]!
pageInfo: PageInfo!
}
type SystemEdge implements Edge {
cursor: String!
node: ISystem!
}
type Template implements IEntity & ITemplate & Node & Ownable {
description: String!
id: ID!
kind: String!
links: [EntityLink]
name: String!
namespace: String!
output: JSONObject
owner: Owner
parameters: JSONObject
steps: [Step]!
tags: [String]
title: String!
}
type User implements IEntity & IUser & Node {
description: String!
displayName: String
email: String
id: ID!
kind: String!
links: [EntityLink]
memberOf(after: String, before: String, first: Int, last: Int): GroupConnection
name: String!
namespace: String!
ownerOf(after: String, before: String, first: Int, last: Int): OwnableConnection
picture: String
tags: [String]
title: String!
}
type UserConnection implements Connection {
count: Int
edges: [UserEdge!]!
pageInfo: PageInfo!
}
type UserEdge implements Edge {
cursor: String!
node: IUser!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment