Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraphQL: Dynamic Graph: Generate SDL from Type System #52

Closed
12 tasks done
Tracked by #18
aschaeffer opened this issue Aug 27, 2022 · 2 comments
Closed
12 tasks done
Tracked by #18

GraphQL: Dynamic Graph: Generate SDL from Type System #52

aschaeffer opened this issue Aug 27, 2022 · 2 comments
Assignees
Labels
api Runtime API enhancement New feature or request graphql GraphQL related
Milestone

Comments

@aschaeffer
Copy link
Collaborator

aschaeffer commented Aug 27, 2022

Goal

Generate a GraphQL schema using Apollo Encoder from the RGF type system dynamically. This is the first step for the Dynamic Graph feature.

TODOs

  • Scalar UUID
  • Scalar JSON
  • Create types for Components
    • Create fields from the Component's properties
  • Create types for Entity Types
    • Create subtypes from the Component's which are defined by the Entity Type
      • Create fields from the Component's properties
    • Create fields for the inbound and outbound Relation Types. The name of the field is the relation type name. If inbound and outbound relations of the same relation type exists, the field name is prefixed.
  • Create types for Relation Types
    • Create subtypes from the Component's which are defined by the Relation Type
      • Create fields from the Component's properties
    • Create fields for the inbound and outbound Entity Types. The name of the field is the entity type name. If inbound and outbound types are the same, the field name is prefixed.
@aschaeffer aschaeffer added the graphql GraphQL related label Aug 27, 2022
@aschaeffer aschaeffer added this to the Backlog milestone Aug 27, 2022
@aschaeffer aschaeffer self-assigned this Aug 27, 2022
@aschaeffer aschaeffer changed the title GraphQL: Generate SDL from Type System GraphQL: Dynamic Graph: Generate SDL from Type System Aug 31, 2022
@aschaeffer aschaeffer added enhancement New feature or request api Runtime API labels Aug 31, 2022
@aschaeffer
Copy link
Collaborator Author

Using apollo encoder the following graphql schema has been created by live-introspection of the RGF type system:

schema {
  query: Query
}
scalar UUID @specifiedBy(url: "http://")
scalar JSON @specifiedBy(url: "http://")
"The label is an hierarchical path with static segments, named parameters and catch-all parameters."
type cLabeled {
  "The type is always component"
  _type: TypeType
  ""
  label: JSON
}
"This components spawns events."
type cEvent {
  "The type is always component"
  _type: TypeType
  ""
  event: JSON
}
""
type cColor {
  "The type is always component"
  _type: TypeType
  "Red"
  color_r: JSON
  "Green Channel"
  color_g: JSON
  "Blue Channel"
  color_b: JSON
  "Alpha-Channel"
  color_a: JSON
}
"The entity or relation has a description."
type cDescribable {
  "The type is always component"
  _type: TypeType
  "The description of an entity or a relation"
  description: JSON
}
"The position of the entity or relation on a two dimensional flow."
type cFlow2D {
  "The type is always component"
  _type: TypeType
  "The X position in a 2D flow"
  f2dx: JSON
  "The Y position in a 2D flow"
  f2dy: JSON
  "The width in a 2D flow"
  f2dw: JSON
  "The height in a 2D flow"
  f2dh: JSON
}
"The position of the entity or relation on a two dimensional flow."
type cFlow3D {
  "The type is always component"
  _type: TypeType
  "The X position in a 3D flow"
  f3dx: JSON
  "The Y position in a 3D flow"
  f3dy: JSON
  "The Z position in a 3D flow"
  f3dz: JSON
  "The width (x-axis) in a 3D flow"
  f3dw: JSON
  "The height (y-axis) in a 3D flow"
  f3dh: JSON
  "The depth (z-axis) in a 3D flow"
  f3dd: JSON
}
"The entity is licensed."
type cLicensed {
  "The type is always component"
  _type: TypeType
  "The SPDX license identifier. See: https://spdx.org/licenses/"
  license: JSON
  "Title, author, source and license. Best practices for attribution: https://wiki.creativecommons.org/wiki/best_practices_for_attribution"
  attribution: JSON
}
"The entity or relation has a name."
type cNamed {
  "The type is always component"
  _type: TypeType
  "The name of an entity or a relation"
  name: JSON
}
"The relations between two entities are ordered using a ordinal number associated with sibling relations"
type cOrdered {
  "The type is always component"
  _type: TypeType
  "The relation ordinal number associated with sibling relations"
  order: JSON
}
"The entity is versioned."
type cVersioned {
  "The type is always component"
  _type: TypeType
  "The version number. Use semantic versioning. See: https://semver.org/"
  version: JSON
}
""
type cDublinCore {
  "The type is always component"
  _type: TypeType
  "A language of the resource"
  dc_language: JSON
  "A name given to the resource"
  dc_title: JSON
  "The topic of the resource"
  dc_subject: JSON
  "The spatial or temporal topic of the resource, the spatial applicability of the resource, or the jurisdiction under which the resource is relevant"
  dc_coverage: JSON
  "An account of the resource"
  dc_description: JSON
  "An unambiguous reference to the resource within a given context"
  dc_identifier: JSON
  "The file format, physical medium, or dimensions of the resource"
  dc_format: JSON
  "The nature or genre of the resource"
  dc_type: JSON
  "An entity primarily responsible for making the resource"
  dc_creator: JSON
  "An entity responsible for making contributions to the resource."
  dc_contributor: JSON
  "A point or period of time associated with an event in the lifecycle of the resource"
  dc_date: JSON
  "An entity responsible for making the resource available"
  dc_publisher: JSON
  "A related resource"
  dc_relation: JSON
  "Information about rights held in and over the resource"
  dc_rights: JSON
  "A related resource from which the described resource is derived"
  dc_source: JSON
}
""
type cId3 {
  "The type is always component"
  _type: TypeType
  ""
  id3_talb: JSON
}
""
type cWeighted {
  "The type is always component"
  _type: TypeType
  ""
  weight: JSON
}
""
type cDebugValue {
  "The type is always component"
  _type: TypeType
}
""
type cConnector {
  "The type is always component"
  _type: TypeType
  ""
  outbound_property_name: JSON
  ""
  inbound_property_name: JSON
}
""
type cAction {
  "The type is always component"
  _type: TypeType
  ""
  trigger: JSON
  ""
  result: JSON
}
""
type cCondition {
  "The type is always component"
  _type: TypeType
  ""
  condition: JSON
  ""
  result: JSON
}
""
type cGenerator {
  "The type is always component"
  _type: TypeType
  ""
  trigger: JSON
}
""
type cLogicalGate {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
""
type cLogicalOperation {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  result: JSON
}
""
type cNumericGate {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
""
type cNumericOperation {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  result: JSON
}
"Arithmetic operation with two inputs and one result"
type cArithmeticGate {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
"Arithmetic operation with one input and one result"
type cArithmeticOperation {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  result: JSON
}
""
type cComparisonGate {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
""
type cStringComparison {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
""
type cStringGate {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  rhs: JSON
  ""
  result: JSON
}
""
type cStringOperation {
  "The type is always component"
  _type: TypeType
  ""
  lhs: JSON
  ""
  result: JSON
}
""
type cFile {
  "The type is always component"
  _type: TypeType
  "The filename"
  filename: JSON
}
""
type cFsNotify {
  "The type is always component"
  _type: TypeType
  ""
  filename: JSON
  ""
  trigger: JSON
}
"Loads a JSON file"
type cLoadJson {
  "The type is always component"
  _type: TypeType
  ""
  result: JSON
}
"Saves an object as JSON file"
type cSaveJson {
  "The type is always component"
  _type: TypeType
  ""
  payload: JSON
}
""
type cBinaryData {
  "The type is always component"
  _type: TypeType
  ""
  data_url: JSON
}
"Loads binary data"
type cLoadBinaryData {
  "The type is always component"
  _type: TypeType
  ""
  data_url: JSON
}
"Saves binary data"
type cSaveBinaryData {
  "The type is always component"
  _type: TypeType
  ""
  data_url: JSON
}
"Loads a configuration file"
type cConfigFile {
  "The type is always component"
  _type: TypeType
  ""
  result: JSON
}
""
type cMqttEndpoint {
  "The type is always component"
  _type: TypeType
  ""
  payload: JSON
}
""
type cMqttTopic {
  "The type is always component"
  _type: TypeType
  ""
  topic: JSON
  ""
  mode: JSON
}
"Sends HTTP request to a given URL"
type cHttp {
  "The type is always component"
  _type: TypeType
  ""
  method: JSON
  ""
  url: JSON
  ""
  request_headers: JSON
  ""
  payload: JSON
  ""
  response_headers: JSON
  ""
  result: JSON
  ""
  status: JSON
}
"Sends JSON-RPC request to a given URL"
type cJsonRpc {
  "The type is always component"
  _type: TypeType
  ""
  method: JSON
  ""
  url: JSON
  ""
  json_rpc_version: JSON
  ""
  params: JSON
  ""
  result: JSON
  ""
  error: JSON
}
"Executes a system command"
type cSystemCommand {
  "The type is always component"
  _type: TypeType
  ""
  current_dir: JSON
  ""
  command: JSON
  ""
  parameters: JSON
  ""
  stdin: JSON
  ""
  stdout: JSON
  ""
  stderr: JSON
}
"Tray Menu Item"
type cTrayMenuItem {
  "The type is always component"
  _type: TypeType
  ""
  title: JSON
}
"Crosshair Asset"
type cCrosshairAsset {
  "The type is always component"
  _type: TypeType
}
"Font Asset"
type cFontAsset {
  "The type is always component"
  _type: TypeType
}
"Icon Asset"
type cIconAsset {
  "The type is always component"
  _type: TypeType
}
"Image Asset"
type cImageAsset {
  "The type is always component"
  _type: TypeType
}
"Model Asset"
type cModelAsset {
  "The type is always component"
  _type: TypeType
}
"Skybox Asset"
type cSkyboxAsset {
  "The type is always component"
  _type: TypeType
  "The filename of the texture on the back side"
  back_side: JSON
  "The filename of the texture on the down side"
  down_side: JSON
  "The filename of the texture on the front side"
  front_side: JSON
  "The filename of the texture on the left side"
  left_side: JSON
  "The filename of the texture on the right side"
  right_side: JSON
  "The filename of the texture on the upper side"
  upper_side: JSON
}
"Sound Effect Asset"
type cSoundEffectAsset {
  "The type is always component"
  _type: TypeType
}
"Sound Track Asset"
type cSoundTrackAsset {
  "The type is always component"
  _type: TypeType
  "The filenames of the tracks"
  tracks: JSON
}
"Texture Asset"
type cTextureAsset {
  "The type is always component"
  _type: TypeType
  "The primary texture"
  primary_texture: JSON
  "The normal map"
  normal_map: JSON
  "The depth map"
  depth_map: JSON
  "The specularity map"
  specularity_map: JSON
  "The glow map"
  glow_map: JSON
}
"Generic flow without inputs and outputs"
type GenericFlow {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
}
"Events of the type system"
type SystemEvent {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
  "This components spawns events."
  event: cEvent
}
"A simple comment"
type Comment {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The entity or relation has a description."
  describable: cDescribable
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Category"
type Category {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The entity or relation has a description."
  describable: cDescribable
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Tag Name"
type Tag {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Value of type array"
type ArrayValue {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"Value of type numeric"
type NumericValue {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"Value of type object"
type ObjectValue {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"Value of type string"
type StringValue {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"Value of any type"
type Value {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"AND"
type And {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Each time it's triggered, either the then-payload or the else-payload gets propagated"
type IfThenElse {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  condition: cCondition
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  then_payload: JSON
  ""
  else_payload: JSON
}
"NAND"
type Nand {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"NOR"
type Nor {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"NOT"
type Not {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"OR"
type Or {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"If triggered the state will toggled"
type Toggle {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"If triggered the payload will be copied to the output"
type Trigger {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  payload: JSON
}
"XNOR"
type Xnor {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"XOR"
type Xor {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  logical_gate: cLogicalGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the absolute value"
type Abs {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the arccosine of a number"
type Acos {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Inverse hyperbolic cosine function"
type Acosh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the arcsine of a number"
type Asin {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Inverse hyperbolic sine function"
type Asinh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the arctangent of a number"
type Atan {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the four quadrant arctangent in radians"
type Atan2 {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_gate: cNumericGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Inverse hyperbolic tangent function"
type Atanh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the cube root of a number"
type Cbrt {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the smallest integer greater than or equal to a number"
type Ceil {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the cosine of a number (in radians)"
type Cos {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Hyperbolic cosine function"
type Cosh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns e^(input), (the exponential function)"
type Exp {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns 2^(input)"
type Exp2 {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the largest integer less than or equal to a number"
type Floor {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the fractional part of a number"
type Fract {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Calculates the length of the hypotenuse of a right-angle triangle given legs of length x and y"
type Hypot {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_gate: cNumericGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the natural logarithm of the number"
type Ln {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the logarithm of the number with respect to an arbitrary base"
type Log {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_gate: cNumericGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the base 10 logarithm of the number"
type Log10 {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the base 2 logarithm of the number"
type Log2 {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Raises a number to a power"
type Pow {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_gate: cNumericGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Takes the reciprocal (inverse) of a number, 1/x"
type Recip {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the nearest integer to a number. Round half-way cases away from 0.0"
type Round {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns a number that represents the sign of the input"
type Signum {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the sine of a number (in radians)"
type Sin {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Hyperbolic sine function"
type Sinh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the square root of a number"
type Sqrt {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Computes the tangent of a number (in radians)"
type Tan {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Hyperbolic tangent function"
type Tanh {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Converts radians to degrees"
type ToDegrees {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Converts degrees to radians"
type ToRadians {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the integer part of a number"
type Trunc {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  numeric_operation: cNumericOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Adds two integer numbers"
type Add {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"If triggered the counter will be increased"
type Counter {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Decrements a number"
type Decrement {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with one input and one result"
  arithmetic_operation: cArithmeticOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Divides two integer numbers"
type Div {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Increments a number"
type Increment {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with one input and one result"
  arithmetic_operation: cArithmeticOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the maximum value of two inputs"
type Max {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Returns the minimum value of two inputs"
type Min {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Modulo"
type Mod {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Multiply two integer numbers"
type Mul {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Subtract an integer number from another number"
type Sub {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "Arithmetic operation with two inputs and one result"
  arithmetic_gate: cArithmeticGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs is equal to rhs"
type Equals {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs is greater than rhs"
type GreaterThan {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs is greater than or equal to rhs"
type GreaterThanOrEquals {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs is lower than rhs"
type LowerThan {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs is lower than or equal to rhs"
type LowerThanOrEquals {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Checks if lhs not equal to rhs"
type NotEquals {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  comparison_gate: cComparisonGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Concat"
type Concat {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_gate: cStringGate
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Contains"
type Contains {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_comparison: cStringComparison
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Ends With"
type EndsWith {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_comparison: cStringComparison
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Lowercase"
type Lowercase {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_operation: cStringOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Starts With"
type StartsWith {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_comparison: cStringComparison
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Trim"
type Trim {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_operation: cStringOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Trim  End"
type TrimEnd {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_operation: cStringOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Trim  Start"
type TrimStart {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_operation: cStringOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Uppercase"
type Uppercase {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  string_operation: cStringOperation
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Array Contains"
type ArrayContains {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  search: JSON
  ""
  result: JSON
}
"Array Get By Index"
type ArrayGetByIndex {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  index: JSON
  ""
  result: JSON
}
"Array Length"
type ArrayLength {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  length: JSON
}
"Array Pop"
type ArrayPop {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  result: JSON
  ""
  value: JSON
}
"Array Push"
type ArrayPush {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  value: JSON
  ""
  result: JSON
}
"Array Reverse"
type ArrayReverse {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  array: JSON
  ""
  result: JSON
}
"Loads a JSON file"
type LoadJson {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  action: cAction
  ""
  file: cFile
  "Loads a JSON file"
  load_json: cLoadJson
}
"Object Get Property"
type ObjectGetProperty {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  object: JSON
  ""
  property_name: JSON
  ""
  result: JSON
}
"Object Keys"
type ObjectKeys {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  object: JSON
  ""
  keys: JSON
}
"Object Remove Property"
type ObjectRemoveProperty {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  object: JSON
  ""
  property_name: JSON
  ""
  result: JSON
}
"Object Set Property"
type ObjectSetProperty {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  object: JSON
  ""
  property_name: JSON
  ""
  value: JSON
  ""
  result: JSON
}
"Saves an object as JSON file"
type SaveJson {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  action: cAction
  ""
  file: cFile
  "Saves an object as JSON file"
  save_json: cSaveJson
}
"Loads binary data"
type LoadBinaryData {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  action: cAction
  ""
  file: cFile
  ""
  binary_data: cBinaryData
  "Loads binary data"
  load_binary_data: cLoadBinaryData
}
"Saves binary data"
type SaveBinaryData {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  action: cAction
  ""
  file: cFile
  ""
  binary_data: cBinaryData
  "Saves binary data"
  save_binary_data: cSaveBinaryData
}
"Pseudo Random Number"
type PseudoRandomNumber {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  seed: JSON
}
"Random Bool"
type RandomBool {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Random Integer Within Range"
type RandomIntegerWithinRange {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  low: JSON
  ""
  high: JSON
}
"Random Number"
type RandomNumber {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Random String"
type RandomString {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  length: JSON
}
"Random UUID"
type RandomUuid {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Loads a configuration file"
type ConfigFile {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  action: cAction
  ""
  file: cFile
  "Loads a configuration file"
  config_file: cConfigFile
}
"System Environment Variable"
type SystemEnv {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
  "The entity or relation has a name."
  named: cNamed
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  value: JSON
}
"MQTT Broker"
type MqttBroker {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  hostname: JSON
  ""
  port: JSON
  ""
  send_package: JSON
  ""
  received_package: JSON
}
"Publishes to a MQTT endpoint"
type MqttPublisher {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
  ""
  mqtt_endpoint: cMqttEndpoint
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Subscribes to a MQTT endpoint"
type MqttSubscriber {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The label is an hierarchical path with static segments, named parameters and catch-all parameters."
  labeled: cLabeled
  ""
  mqtt_endpoint: cMqttEndpoint
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
}
"Sends HTTP request to a given URL"
type Http {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "Sends HTTP request to a given URL"
  http: cHttp
}
"Sends JSON-RPC request to a given URL"
type JsonRpc {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  ""
  action: cAction
  "Sends JSON-RPC request to a given URL"
  json_rpc: cJsonRpc
}
"Executes a system command"
type SystemCommand {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "Executes a system command"
  system_command: cSystemCommand
  ""
  action: cAction
}
"Tray"
type Tray {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  title: JSON
  ""
  icon: JSON
}
"Tray Menu Item"
type TrayMenuItem {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  ""
  generator: cGenerator
  "Tray Menu Item"
  tray_menu_item: cTrayMenuItem
}
"Asset"
type Asset {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The entity or relation has a description."
  describable: cDescribable
  "The entity is versioned."
  versioned: cVersioned
  "The entity is licensed."
  licensed: cLicensed
  ""
  dublin_core: cDublinCore
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  path: JSON
}
"Asset Collection"
type AssetCollection {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The entity or relation has a description."
  describable: cDescribable
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  trigger: JSON
}
"Asset repository"
type AssetRepository {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
  "The entity or relation has a name."
  named: cNamed
  "The entity or relation has a description."
  describable: cDescribable
  "The position of the entity or relation on a two dimensional flow."
  flow_2d: cFlow2D
  "The position of the entity or relation on a two dimensional flow."
  flow_3d: cFlow3D
  ""
  source_url: JSON
  ""
  path: JSON
  ""
  trigger: JSON
}
""
type Shutdown {
  "The type is always entity_type"
  _type: TypeType
  "The unique identifier of the entity instance"
  _id: UUID
  "The label of the entity instance"
  _label: String
}
type Query {
  __schema: __Schema
  "Generic flow without inputs and outputs"
  generic_flow: [GenericFlow]
  "Events of the type system"
  system_event: [SystemEvent]
  "A simple comment"
  comment: [Comment]
  "Category"
  category: [Category]
  "Tag Name"
  tag: [Tag]
  "Value of type array"
  array_value: [ArrayValue]
  "Value of type numeric"
  numeric_value: [NumericValue]
  "Value of type object"
  object_value: [ObjectValue]
  "Value of type string"
  string_value: [StringValue]
  "Value of any type"
  value: [Value]
  "AND"
  and: [And]
  "Each time it's triggered, either the then-payload or the else-payload gets propagated"
  if_then_else: [IfThenElse]
  "NAND"
  nand: [Nand]
  "NOR"
  nor: [Nor]
  "NOT"
  not: [Not]
  "OR"
  or: [Or]
  "If triggered the state will toggled"
  toggle: [Toggle]
  "If triggered the payload will be copied to the output"
  trigger: [Trigger]
  "XNOR"
  xnor: [Xnor]
  "XOR"
  xor: [Xor]
  "Computes the absolute value"
  abs: [Abs]
  "Computes the arccosine of a number"
  acos: [Acos]
  "Inverse hyperbolic cosine function"
  acosh: [Acosh]
  "Computes the arcsine of a number"
  asin: [Asin]
  "Inverse hyperbolic sine function"
  asinh: [Asinh]
  "Computes the arctangent of a number"
  atan: [Atan]
  "Computes the four quadrant arctangent in radians"
  atan2: [Atan2]
  "Inverse hyperbolic tangent function"
  atanh: [Atanh]
  "Returns the cube root of a number"
  cbrt: [Cbrt]
  "Returns the smallest integer greater than or equal to a number"
  ceil: [Ceil]
  "Computes the cosine of a number (in radians)"
  cos: [Cos]
  "Hyperbolic cosine function"
  cosh: [Cosh]
  "Returns e^(input), (the exponential function)"
  exp: [Exp]
  "Returns 2^(input)"
  exp2: [Exp2]
  "Returns the largest integer less than or equal to a number"
  floor: [Floor]
  "Returns the fractional part of a number"
  fract: [Fract]
  "Calculates the length of the hypotenuse of a right-angle triangle given legs of length x and y"
  hypot: [Hypot]
  "Returns the natural logarithm of the number"
  ln: [Ln]
  "Returns the logarithm of the number with respect to an arbitrary base"
  log: [Log]
  "Returns the base 10 logarithm of the number"
  log10: [Log10]
  "Returns the base 2 logarithm of the number"
  log2: [Log2]
  "Raises a number to a power"
  pow: [Pow]
  "Takes the reciprocal (inverse) of a number, 1/x"
  recip: [Recip]
  "Returns the nearest integer to a number. Round half-way cases away from 0.0"
  round: [Round]
  "Returns a number that represents the sign of the input"
  signum: [Signum]
  "Computes the sine of a number (in radians)"
  sin: [Sin]
  "Hyperbolic sine function"
  sinh: [Sinh]
  "Returns the square root of a number"
  sqrt: [Sqrt]
  "Computes the tangent of a number (in radians)"
  tan: [Tan]
  "Hyperbolic tangent function"
  tanh: [Tanh]
  "Converts radians to degrees"
  to_degrees: [ToDegrees]
  "Converts degrees to radians"
  to_radians: [ToRadians]
  "Returns the integer part of a number"
  trunc: [Trunc]
  "Adds two integer numbers"
  add: [Add]
  "If triggered the counter will be increased"
  counter: [Counter]
  "Decrements a number"
  decrement: [Decrement]
  "Divides two integer numbers"
  div: [Div]
  "Increments a number"
  increment: [Increment]
  "Returns the maximum value of two inputs"
  max: [Max]
  "Returns the minimum value of two inputs"
  min: [Min]
  "Modulo"
  mod: [Mod]
  "Multiply two integer numbers"
  mul: [Mul]
  "Subtract an integer number from another number"
  sub: [Sub]
  "Checks if lhs is equal to rhs"
  equals: [Equals]
  "Checks if lhs is greater than rhs"
  greater_than: [GreaterThan]
  "Checks if lhs is greater than or equal to rhs"
  greater_than_or_equals: [GreaterThanOrEquals]
  "Checks if lhs is lower than rhs"
  lower_than: [LowerThan]
  "Checks if lhs is lower than or equal to rhs"
  lower_than_or_equals: [LowerThanOrEquals]
  "Checks if lhs not equal to rhs"
  not_equals: [NotEquals]
  "Concat"
  concat: [Concat]
  "Contains"
  contains: [Contains]
  "Ends With"
  ends_with: [EndsWith]
  "Lowercase"
  lowercase: [Lowercase]
  "Starts With"
  starts_with: [StartsWith]
  "Trim"
  trim: [Trim]
  "Trim  End"
  trim_end: [TrimEnd]
  "Trim  Start"
  trim_start: [TrimStart]
  "Uppercase"
  uppercase: [Uppercase]
  "Array Contains"
  array_contains: [ArrayContains]
  "Array Get By Index"
  array_get_by_index: [ArrayGetByIndex]
  "Array Length"
  array_length: [ArrayLength]
  "Array Pop"
  array_pop: [ArrayPop]
  "Array Push"
  array_push: [ArrayPush]
  "Array Reverse"
  array_reverse: [ArrayReverse]
  "Loads a JSON file"
  load_json: [LoadJson]
  "Object Get Property"
  object_get_property: [ObjectGetProperty]
  "Object Keys"
  object_keys: [ObjectKeys]
  "Object Remove Property"
  object_remove_property: [ObjectRemoveProperty]
  "Object Set Property"
  object_set_property: [ObjectSetProperty]
  "Saves an object as JSON file"
  save_json: [SaveJson]
  "Loads binary data"
  load_binary_data: [LoadBinaryData]
  "Saves binary data"
  save_binary_data: [SaveBinaryData]
  "Pseudo Random Number"
  pseudo_random_number: [PseudoRandomNumber]
  "Random Bool"
  random_bool: [RandomBool]
  "Random Integer Within Range"
  random_integer_within_range: [RandomIntegerWithinRange]
  "Random Number"
  random_number: [RandomNumber]
  "Random String"
  random_string: [RandomString]
  "Random UUID"
  random_uuid: [RandomUuid]
  "Loads a configuration file"
  config_file: [ConfigFile]
  "System Environment Variable"
  system_env: [SystemEnv]
  "MQTT Broker"
  mqtt_broker: [MqttBroker]
  "Publishes to a MQTT endpoint"
  mqtt_publisher: [MqttPublisher]
  "Subscribes to a MQTT endpoint"
  mqtt_subscriber: [MqttSubscriber]
  "Sends HTTP request to a given URL"
  http: [Http]
  "Sends JSON-RPC request to a given URL"
  json_rpc: [JsonRpc]
  "Executes a system command"
  system_command: [SystemCommand]
  "Tray"
  tray: [Tray]
  "Tray Menu Item"
  tray_menu_item: [TrayMenuItem]
  "Asset"
  asset: [Asset]
  "Asset Collection"
  asset_collection: [AssetCollection]
  "Asset repository"
  asset_repository: [AssetRepository]
  ""
  shutdown: [Shutdown]
}
enum TypeType {
  COMPONENT
  ENTITY_TYPE
}

@aschaeffer aschaeffer modified the milestones: Backlog, 0.8.0 Sep 3, 2022
@aschaeffer aschaeffer modified the milestones: 0.8.0, 0.9.0 Jan 8, 2023
@aschaeffer
Copy link
Collaborator Author

Done by using async-graphql 5.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Runtime API enhancement New feature or request graphql GraphQL related
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant