Type API Specs

BaseGNodeGt

{
  "gwapi": "001",
  "type_name": "base.g.node.gt",
  "version": "002",
  "owner": "gridworks@gridworks-consulting.com",
  "description": ". BaseGNode. Authority is GNodeFactory.",
  "formats": {
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    },
    "AlgoAddressStringFormat": {
      "type": "string",
      "description": "String of length 32, characters are all base32 digits.",
      "example": "RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI"
    }
  },
  "enums": {
    "CoreGNodeRole000": {
      "type": "string",
      "name": "core.g.node.role.000",
      "description": "CoreGNodeRole assigned by GNodeFactory",
      "url": "https://gridworks.readthedocs.io/en/latest/core-g-node-role.html",
      "oneOf": [
        {
          "const": "00000000",
          "title": "Other",
          "description": ""
        },
        {
          "const": "0f8872f7",
          "title": "TerminalAsset",
          "description": ""
        },
        {
          "const": "d9823442",
          "title": "AtomicTNode",
          "description": ""
        },
        {
          "const": "86f21dd2",
          "title": "MarketMaker",
          "description": ""
        },
        {
          "const": "9521af06",
          "title": "AtomicMeteringNode",
          "description": ""
        },
        {
          "const": "4502e355",
          "title": "ConductorTopologyNode",
          "description": ""
        },
        {
          "const": "d67e564e",
          "title": "InterconnectionComponent",
          "description": ""
        },
        {
          "const": "7a8e4046",
          "title": "Scada",
          "description": ""
        }
      ]
    },
    "GNodeStatus100": {
      "type": "string",
      "name": "g.node.status.100",
      "description": "Enum for managing GNode lifecycle",
      "url": "https://gridworks.readthedocs.io/en/latest/g-node-status.html",
      "oneOf": [
        {
          "const": "00000000",
          "title": "Unknown",
          "description": "Default value"
        },
        {
          "const": "153d3475",
          "title": "Pending",
          "description": "The GNode exists but cannot be used yet."
        },
        {
          "const": "a2cfc2f7",
          "title": "Active",
          "description": "The GNode can be used."
        },
        {
          "const": "839b38db",
          "title": "PermanentlyDeactivated",
          "description": "The GNode can no longer be used, now or in the future."
        },
        {
          "const": "f5831e1d",
          "title": "Suspended",
          "description": "The GNode cannot be used, but may become active in the future."
        }
      ]
    }
  },
  "properties": {
    "GNodeId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "",
      "required": true
    },
    "Alias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "",
      "required": true
    },
    "Status": {
      "type": "string",
      "format": "g.node.status.100",
      "title": "",
      "required": true
    },
    "Role": {
      "type": "string",
      "format": "core.g.node.role.000",
      "title": "",
      "required": true
    },
    "GNodeRegistryAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": true
    },
    "PrevAlias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "",
      "required": false
    },
    "GpsPointId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "",
      "required": false
    },
    "OwnershipDeedId": {
      "type": "integer",
      "minimum": 0,
      "title": "",
      "required": false
    },
    "OwnershipDeedValidatorAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": false
    },
    "OwnerAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": false
    },
    "DaemonAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": false
    },
    "TradingRightsId": {
      "type": "integer",
      "minimum": 0,
      "title": "",
      "required": false
    },
    "ScadaAlgoAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": false
    },
    "ScadaCertId": {
      "type": "integer",
      "minimum": 0,
      "title": "",
      "required": false
    },
    "TypeName": {
      "type": "string",
      "value": "base.g.node.gt",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "002",
      "required": true
    }
  }
}

GNodeGt

{
  "gwapi": "001",
  "type_name": "g.node.gt",
  "version": "002",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used to send and receive updates about GNodes. GNodes are the building blocks of Gridworks. They have slowly-changing state that must be kept in sync across a distributed system. Therefore, they require a global registry to act as Single Source of Truth (SSoT). This class is used for that SSoT to share information with actors about their GNodes, and the GNodes that they will observe and communicate with.",
  "url": "https://gridworks.readthedocs.io/en/latest/g-node.html",
  "formats": {
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    },
    "AlgoAddressStringFormat": {
      "type": "string",
      "description": "String of length 32, characters are all base32 digits.",
      "example": "RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI"
    }
  },
  "enums": {
    "GNodeRole000": {
      "type": "string",
      "name": "g.node.role.000",
      "description": "Categorizes GNodes by their function within GridWorks",
      "url": "https://gridworks.readthedocs.io/en/latest/g-node-role.html",
      "oneOf": [
        {
          "const": "00000000",
          "title": "GNode",
          "description": "Default value"
        },
        {
          "const": "bdeaa0b1",
          "title": "TerminalAsset",
          "url": "https://gridworks.readthedocs.io/en/latest/transactive-device.html",
          "description": "An avatar for a real-word Transactive Device"
        },
        {
          "const": "8021dcad",
          "title": "AtomicTNode",
          "url": "https://gridworks.readthedocs.io/en/latest/atomic-t-node.html",
          "description": "Transacts in markets on behalf of, and controlling the power use of, a TerminalAsset"
        },
        {
          "const": "304890c5",
          "title": "MarketMaker",
          "url": "https://gridworks.readthedocs.io/en/latest/market-maker.html",
          "description": "Runs energy markets at its Node in the GNodeTree"
        },
        {
          "const": "8eb5b9e1",
          "title": "AtomicMeteringNode",
          "description": "Role of a GNode that will become an AtomicTNode, prior to it owning TaTradingRights"
        },
        {
          "const": "234cfaa2",
          "title": "ConductorTopologyNode",
          "description": "An avatar for a real-world electric grid node - e.g. a substation or transformer"
        },
        {
          "const": "fec0c127",
          "title": "InterconnectionComponent",
          "description": "An avatar for a cable or wire on the electric grid"
        },
        {
          "const": "3901c7d2",
          "title": "World",
          "url": "https://gridworks.readthedocs.io/en/latest/world-role.html",
          "description": "Adminstrative GNode responsible for managing and authorizing instances"
        },
        {
          "const": "c499943c",
          "title": "TimeCoordinator",
          "description": "Responsible for managing time in simulations"
        },
        {
          "const": "88112a93",
          "title": "Supervisor",
          "url": "https://gridworks.readthedocs.io/en/latest/supervisor.html",
          "description": "Responsible for GNode actors running in a container"
        },
        {
          "const": "674ad859",
          "title": "Scada",
          "description": "GNode associated to the device and code that directly monitors and actuates a Transactive Device"
        },
        {
          "const": "2161739f",
          "title": "PriceService",
          "description": "Provides price forecasts for markets run by MarketMakers"
        },
        {
          "const": "1dce1efd",
          "title": "WeatherService",
          "description": "Provides weather forecasts"
        },
        {
          "const": "db57d184",
          "title": "AggregatedTNode",
          "description": "An aggregation of AtomicTNodes"
        },
        {
          "const": "07f28817",
          "title": "Persister",
          "description": "Responsible for acking events with delivery guarantees"
        }
      ]
    },
    "GNodeStatus100": {
      "type": "string",
      "name": "g.node.status.100",
      "description": "Enum for managing GNode lifecycle",
      "url": "https://gridworks.readthedocs.io/en/latest/g-node-status.html",
      "oneOf": [
        {
          "const": "00000000",
          "title": "Unknown",
          "description": "Default value"
        },
        {
          "const": "153d3475",
          "title": "Pending",
          "description": "The GNode exists but cannot be used yet."
        },
        {
          "const": "a2cfc2f7",
          "title": "Active",
          "description": "The GNode can be used."
        },
        {
          "const": "839b38db",
          "title": "PermanentlyDeactivated",
          "description": "The GNode can no longer be used, now or in the future."
        },
        {
          "const": "f5831e1d",
          "title": "Suspended",
          "description": "The GNode cannot be used, but may become active in the future."
        }
      ]
    }
  },
  "properties": {
    "GNodeId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Immutable identifier for GNode",
      "required": true
    },
    "Alias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "Structured mutable identifier for GNode",
      "description": "The GNode Aliases are used for organizing how actors in Gridworks communicate. Together, they also encode the known topology of the electric grid.",
      "required": true
    },
    "Status": {
      "type": "string",
      "format": "g.node.status.100",
      "title": "Lifecycle indicator",
      "required": true
    },
    "Role": {
      "type": "string",
      "format": "g.node.role.000",
      "title": "Role within Gridworks",
      "required": true
    },
    "GNodeRegistryAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand address for GNodeRegistry",
      "description": "For actors in a Gridworks world, the GNodeRegistry is the Single Source of Truth for existence and updates to GNodes.",
      "required": true
    },
    "PrevAlias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "Previous GNodeAlias",
      "description": "As the topology of the grid updates, GNodeAliases will change to reflect that. This may happen a handful of times over the life of a GNode.",
      "required": false
    },
    "GpsPointId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Lat/lon of GNode",
      "description": "Some GNodes, in particular those acting as avatars for physical devices that are part of or are attached to the electric grid, have physical locations. These locations are used to help validate the grid topology.",
      "required": false
    },
    "OwnershipDeedId": {
      "type": "integer",
      "minimum": 0,
      "title": "Algorand Id of ASA Deed",
      "description": "The Id of the TaDeed Algorand Standard Asset if the GNode is a TerminalAsset.",
      "required": false
    },
    "OwnershipDeedValidatorAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand address of Validator",
      "description": "Deeds are issued by the GNodeFactory, in partnership with third party Validators.",
      "required": false
    },
    "OwnerAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand address of the deed owner",
      "required": false
    },
    "DaemonAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand address of the daemon app",
      "description": "Some GNodes have Daemon applications associated to them to handle blockchain operations.",
      "required": false
    },
    "TradingRightsId": {
      "type": "integer",
      "minimum": 0,
      "title": "Algorand Id of ASA TradingRights",
      "description": "The Id of the TradingRights Algorand Standard Asset.",
      "required": false
    },
    "ScadaAlgoAddr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "",
      "required": false
    },
    "ScadaCertId": {
      "type": "integer",
      "minimum": 0,
      "title": "",
      "required": false
    },
    "ComponentId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Unique identifier for GNode's Component",
      "description": "Used if a GNode is an avatar for a physical device. The serial number of a device is different from its make/model. The ComponentId captures the specific instance of the device.",
      "required": false
    },
    "DisplayName": {
      "type": "string",
      "title": "Display Name",
      "required": false
    },
    "TypeName": {
      "type": "string",
      "value": "g.node.gt",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "002",
      "required": true
    }
  },
  "example": {
    "GNodeId": "575f374f-8533-4733-baf7-91146c607445",
    "Alias": "d1.isone.ver.keene",
    "StatusGtEnumSymbol": "a2cfc2f7",
    "RoleGtEnumSymbol": "234cfaa2",
    "GNodeRegistryAddr": "MONSDN5MXG4VMIOHJNCJJBVASG7HEZQSCEIKJAPEPVI5ZJUMQGXQKSOAYU",
    "TypeName": "g.node.gt",
    "Version": "000"
  }
}

GNodeInstanceGt

{
  "gwapi": "001",
  "type_name": "g.node.instance.gt",
  "version": "000",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used to send and receive updates about GNodeInstances. One of the layers of abstraction connecting a GNode with a running app in a Docker container.",
  "url": "https://gridworks.readthedocs.io/en/latest/g-node-instance.html",
  "formats": {
    "ReasonableUnixTimeS": {
      "type": "string",
      "description": "Integer reflecting unix time seconds between 1970 and 3000",
      "example": ""
    },
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "AlgoAddressStringFormat": {
      "type": "string",
      "description": "String of length 32, characters are all base32 digits.",
      "example": "RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI"
    }
  },
  "enums": {
    "GniStatus000": {
      "type": "string",
      "name": "gni.status.000",
      "description": "Enum for managing GNodeInstance lifecycle",
      "url": "https://gridworks.readthedocs.io/en/latest/g-node-instance.html",
      "oneOf": [
        {
          "const": "00000000",
          "title": "Unknown",
          "description": "Default Value"
        },
        {
          "const": "7890ab0a",
          "title": "Pending",
          "description": "Has been created by the World, but has not yet finished provisioning"
        },
        {
          "const": "69241259",
          "title": "Active",
          "description": "Active in its GridWorks world. If the GNodeInstance has an actor, that actor is communicating"
        },
        {
          "const": "8222421f",
          "title": "Done",
          "description": "No longer represents the GNode."
        }
      ]
    },
    "StrategyName001": {
      "type": "string",
      "name": "strategy.name.001",
      "description": "Used to assign code to run a particular GNodeInstance",
      "oneOf": [
        {
          "const": "00000000",
          "title": "NoActor",
          "description": "Assigned to GNodes that do not have actors"
        },
        {
          "const": "642c83d3",
          "title": "WorldA",
          "description": "Authority on GNodeInstances, and their private keys. Maintains a FastAPI used for relational information about backoffice information held locally and/or in the GNodeRegistry/GNodeFactory. [More Info](https://gridworks.readthedocs.io/en/latest/world-role.html)"
        },
        {
          "const": "4bb2cf7e",
          "title": "SupervisorA",
          "description": "A simple supervisor that monitors its supervised AtomicTNode GNode strategies via a heartbeat health check. [More Info](https://gridworks.readthedocs.io/en/latest/supervisor.html)"
        },
        {
          "const": "f5961401",
          "title": "AtnHeatPumpWithBoostStore",
          "description": "AtomicTNode for a heat pump thermal storage heating system with a boost element and a thermal \n heated by the boost element. [More on AtomicTNodes](https://gridworks.readthedocs.io/en/latest/atomic-t-node.html)"
        },
        {
          "const": "73fbe6ab",
          "title": "TcGlobalA",
          "description": "Used to manage the global time of the Gridworks system when run with\n in a fully simulated universe. \n [More on TimeCoordinators](https://gridworks.readthedocs.io/en/latest/time-coordinator.html)"
        },
        {
          "const": "5e18a52e",
          "title": "MarketMakerA",
          "description": "Runs a two-sided market associated to its GNode as part of the copper GNode sub-tree. [More on MarketMakers](https://gridworks.readthedocs.io/en/latest/market-maker.html)"
        },
        {
          "const": "b2a125d6",
          "title": "AtnBrickStorageHeater",
          "description": "Publicly available Dijkstra-based AtomicTNode strategy for a brick storage heater. These heaters are rooom units that store heat in a brick core, are heated with resistive elements, and typically have a fan to blow air over the brick core. They are sometimes called Electric Thermal Storage (ETS) heaters, and in the UK are often called Economy 7 heaters or Night Storage Heaters. A strategy very similar to this was used by VCharge to manage an ETS fleet of several thousand heaters in Pennsylvania. This strategy is meant to serve as a template for other private strategies, and also allows for an end-to-end simulation of a realistic aggregated transactive load capable of generating a highly elastic bid curve [More Info](https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html)"
        }
      ]
    }
  },
  "properties": {
    "GNodeInstanceId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Immutable identifier for GNodeInstance (Gni)",
      "required": true
    },
    "GNode": {
      "type": "g.node.gt.002",
      "title": "The GNode represented by the Gni",
      "required": true
    },
    "Strategy": {
      "type": "string",
      "format": "strategy.name.001",
      "title": "Used to determine the code running in a GNode actor application",
      "required": true
    },
    "Status": {
      "type": "string",
      "format": "gni.status.000",
      "title": "Lifecycle Status for Gni",
      "required": true
    },
    "SupervisorContainerId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "The Id of the docker container where the Gni runs",
      "required": true
    },
    "StartTimeUnixS": {
      "type": "integer",
      "format": "ReasonableUnixTimeS",
      "title": "When the gni starts representing the GNode",
      "description": "Specifically, when the Status changes from Pending to Active. Note that this is time in the GNode's World, which may not be real time if it is a simulation.",
      "required": true
    },
    "EndTimeUnixS": {
      "type": "integer",
      "title": "When the gni stops representing the GNode",
      "description": "Specifically, when the Status changes from Active to Done.",
      "required": true
    },
    "AlgoAddress": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand address for Gni",
      "required": false
    },
    "TypeName": {
      "type": "string",
      "value": "g.node.instance.gt",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "000",
      "required": true
    }
  }
}

GwCertId

{
  "gwapi": "001",
  "type_name": "gw.cert.id",
  "version": "000",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Clarifies whether cert id is an Algorand Standard Asset or SmartSig",
  "formats": {
    "AlgoAddressStringFormat": {
      "type": "string",
      "description": "String of length 32, characters are all base32 digits.",
      "example": "RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI"
    }
  },
  "enums": {
    "AlgoCertType000": {
      "type": "string",
      "name": "algo.cert.type.000",
      "description": "Used to distinguish ASA vs SmartSignature certificates",
      "oneOf": [
        {
          "const": "00000000",
          "title": "ASA",
          "description": "Certificate based on Algorand Standard Asset"
        },
        {
          "const": "086b5165",
          "title": "SmartSig",
          "description": "Certificate based on Algorand Smart Signature"
        }
      ]
    }
  },
  "properties": {
    "Type": {
      "type": "string",
      "format": "algo.cert.type.000",
      "title": "",
      "required": true
    },
    "Idx": {
      "type": "integer",
      "minimum": 0,
      "title": "ASA Index",
      "required": false
    },
    "Addr": {
      "type": "string",
      "format": "AlgoAddressStringFormat",
      "title": "Algorand Smart Signature Address",
      "required": false
    },
    "TypeName": {
      "type": "string",
      "value": "gw.cert.id",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "000",
      "required": true
    }
  },
  "example": {
    "TypeGtEnumSymbol": "00000000",
    "Idx": 14,
    "TypeName": "gw.cert.id",
    "Version": "000"
  }
}

HeartbeatA

{
  "gwapi": "001",
  "type_name": "heartbeat.a",
  "version": "100",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used to check that an actor can both send and receive messages. Payload for direct messages sent back and forth between actors, for example a Supervisor and one of its subordinates.",
  "url": "https://gridworks.readthedocs.io/en/latest/g-node-instance.html",
  "formats": {
    "HexChar": {
      "type": "string",
      "description": "single-char string in '0123456789abcdefABCDEF'",
      "example": "d"
    }
  },
  "properties": {
    "MyHex": {
      "type": "string",
      "format": "HexChar",
      "title": "Hex character getting sent",
      "required": true
    },
    "YourLastHex": {
      "type": "string",
      "format": "HexChar",
      "title": "Last hex character received from heartbeat partner",
      "required": true
    },
    "TypeName": {
      "type": "string",
      "value": "heartbeat.a",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "100",
      "required": true
    }
  }
}

Ready

{
  "gwapi": "001",
  "type_name": "ready",
  "version": "001",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used in simulations by TimeCoordinator GNodes. Only intended for simulations that do not have sub-second TimeSteps. TimeCoordinators based on ```gridworks-timecoordinator``` have a notion of actors whose `Ready` must be received before issuing the next TimeStep.",
  "url": "https://gridworks.readthedocs.io/en/latest/time-coordinator.html",
  "formats": {
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    }
  },
  "properties": {
    "FromGNodeAlias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "The GNodeAlias of the sender",
      "required": true
    },
    "FromGNodeInstanceId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "The GNodeInstanceId of the sender",
      "required": true
    },
    "TimeUnixS": {
      "type": "integer",
      "title": "Latest simulated time for sender",
      "description": "The time in unix seconds of the latest TimeStep received from the TimeCoordinator by the actor that sent the payload.",
      "required": true
    },
    "TypeName": {
      "type": "string",
      "value": "ready",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "001",
      "required": true
    }
  }
}

SimTimestep

{
  "gwapi": "001",
  "type_name": "sim.timestep",
  "version": "000",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Sent by TimeCoordinators to coordinate time. For simulated actors, time progresses discretely on receipt of these time steps.",
  "formats": {
    "ReasonableUnixTimeS": {
      "type": "string",
      "description": "Integer reflecting unix time seconds between 1970 and 3000",
      "example": ""
    },
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    },
    "ReasonableUnixTimeMs": {
      "type": "string",
      "description": "An integer reflecting unix time in ms between midnight Jan 1 2000 and midnight Jan 1 3000 UTC",
      "example": ""
    }
  },
  "properties": {
    "FromGNodeAlias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "The GNodeAlias of the sender",
      "description": "The sender should always be a GNode Actor of role TimeCoordinator.",
      "required": true
    },
    "FromGNodeInstanceId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "The GNodeInstanceId of the sender",
      "required": true
    },
    "TimeUnixS": {
      "type": "integer",
      "format": "ReasonableUnixTimeS",
      "title": "Current time in unix seconds",
      "required": true
    },
    "TimestepCreatedMs": {
      "type": "integer",
      "format": "ReasonableUnixTimeMs",
      "title": "The real time created, in unix milliseconds",
      "required": true
    },
    "MessageId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "MessageId",
      "required": true
    },
    "TypeName": {
      "type": "string",
      "value": "sim.timestep",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "000",
      "required": true
    }
  }
}

SuperStarter

{
  "gwapi": "001",
  "type_name": "super.starter",
  "version": "000",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used by world to seed a docker container with data needed to spawn and superviser GNodeInstances",
  "formats": {
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    }
  },
  "properties": {
    "SupervisorContainer": {
      "type": "supervisor.container.gt.000",
      "title": "Key data about the docker container",
      "required": true
    },
    "GniList": {
      "type": "g.node.instance.gt.000",
      "title": "List of GNodeInstances (Gnis) run in the container",
      "required": true
    },
    "AliasWithKeyList": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "Aliases of Gnis that own Algorand secret keys",
      "required": true
    },
    "KeyList": {
      "type": "string",
      "title": "Algorand secret keys owned by Gnis",
      "required": true
    },
    "TypeName": {
      "type": "string",
      "value": "super.starter",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "000",
      "required": true
    }
  }
}

SupervisorContainerGt

{
  "gwapi": "001",
  "type_name": "supervisor.container.gt",
  "version": "000",
  "owner": "gridworks@gridworks-consulting.com",
  "description": "Used to send and receive updates about SupervisorContainers. Sent from a GNodeRegistry to a World, and used also by the World as it spawns GNodeInstances in docker instances (i.e., the SupervisorContainers).",
  "url": "https://gridworks.readthedocs.io/en/latest/supervisor.html",
  "formats": {
    "WorldInstanceNameFormat": {
      "type": "string",
      "description": "AlphanumericString + '__' + Integer",
      "example": ""
    },
    "UuidCanonicalTextual": {
      "type": "string",
      "description": "A string of hex words separated by hyphens of length 8-4-4-4-12.",
      "example": "652ba6b0-c3bf-4f06-8a80-6b9832d60a25"
    },
    "LeftRightDot": {
      "type": "string",
      "description": "Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.",
      "example": "dw1.isone.me.freedom.apple"
    }
  },
  "enums": {
    "SupervisorContainerStatus000": {
      "type": "string",
      "name": "supervisor.container.status.000",
      "description": "Manages lifecycle of the docker containers where GridWorks actors run",
      "oneOf": [
        {
          "const": "00000000",
          "title": "Unknown",
          "description": "Default value"
        },
        {
          "const": "f48cff43",
          "title": "Authorized",
          "description": "World has created the information for starting the container"
        },
        {
          "const": "17c5cc54",
          "title": "Launching",
          "description": "World has launched the container"
        },
        {
          "const": "ec342324",
          "title": "Provisioning",
          "description": "Container has started, but is going through its provisioning process"
        },
        {
          "const": "cfde1b40",
          "title": "Running",
          "description": "GNode actors in the container are active"
        },
        {
          "const": "4e28b6ae",
          "title": "Stopped",
          "description": "Stopped"
        },
        {
          "const": "da2dafe0",
          "title": "Deleted",
          "description": "Deleted"
        }
      ]
    }
  },
  "properties": {
    "SupervisorContainerId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Id of the docker SupervisorContainer",
      "required": true
    },
    "Status": {
      "type": "string",
      "format": "supervisor.container.status.000",
      "title": "",
      "required": true
    },
    "WorldInstanceName": {
      "type": "string",
      "format": "WorldInstanceNameFormat",
      "title": "Name of the WorldInstance",
      "description": "For example, d1__1 is a potential name for a World whose World GNode has alias d1.",
      "required": true
    },
    "SupervisorGNodeInstanceId": {
      "type": "string",
      "format": "UuidCanonicalTextual",
      "title": "Id of the SupervisorContainer's prime actor (aka the Supervisor GNode)",
      "required": true
    },
    "SupervisorGNodeAlias": {
      "type": "string",
      "format": "LeftRightDot",
      "title": "Alias of the SupervisorContainer's prime actor (aka the Supervisor GNode)",
      "required": true
    },
    "TypeName": {
      "type": "string",
      "value": "supervisor.container.gt",
      "title": "The type name"
    },
    "Version": {
      "type": "string",
      "title": "The type version",
      "default": "000",
      "required": true
    }
  }
}