This repository contains the protobuf and JSON Schema schemas used by the Grid Edge Interoperability and Security Alliance Specification.
These schemas define message structures used by the GEISA API, message bus, application manifests, and related examples.
For full documentation and context, refer to the GEISA Specification.
At a high level, this repository contains:
*.protofiles for protobuf message definitions.geisa-*-schema.jsonfiles for JSON Schema definitions.examples/*.jsonfiles with example payloads.examples/*.cppfiles with small C++ protobuf encode/decode examples.examples/helpers/example_utils.hfor shared example-only C++ helper code (not a GEISA SDK).examples/README*.mdfiles with example-specific build and run notes.
The repository build targets assume these tools are available on PATH:
makeprotoc(Protocol Buffers compiler)
The C++ example build target also requires:
- a C++17 compiler, such as
c++,g++, orclang++ pkg-config- protobuf development headers and libraries discoverable through
pkg-config protobuf
The optional C generation target requires protobuf-c support, including
protoc-gen-c, available on PATH.
Linting uses Node.js and npm. Install the repository Node dependencies before
running lint commands:
npm ci
Generated outputs are written under build/.
The Makefile generates protobuf outputs into build/.
Generate the default binary protobuf descriptor outputs:
make
Generate C++ protobuf bindings:
make cpp
Generate C protobuf bindings using protoc-c:
make c
Generate Java protobuf bindings:
make java
Generate Python protobuf bindings:
make python
Generate all language outputs:
make langs
Clean generated outputs:
make clean
Note: current examples use the C++ generation path. Some messages use proto3
optional fields, and the protobuf-c generator used by make c may not support
those fields on all platforms.
Example-specific build and run instructions are in the examples/ directory:
examples/README.mdexamples/README-actuators.mdexamples/README-discovery.mdexamples/README-waveform.mdexamples/README-sensors.md
You can build the C++ example binaries directly from the repository root:
make examples
(Alias: make examples-cpp.)
This compiles the examples into build/examples/.
A typical C++ example workflow is:
make clean
make examples
Then run the relevant binary from build/examples/. The topic-specific README
files include additional notes and, where useful, manual single-example
compile commands for developers who want to inspect the exact compiler inputs.
Linting is optional for consumers who only need to generate protobuf outputs, but contributors should run it before opening pull requests.
After installing Node.js/npm and running npm ci, run all repository lint
checks with:
npm run lint
To run markdown lint only:
npm run lint:md
To run JSON syntax validation only:
npm run lint:json
The lint baseline checks repository markdown and validates JSON files for parseable JSON syntax. It does not perform JSON Schema semantic validation, protobuf linting, or C/C++ formatting at this time.