Skip to content
kevlhopPublic
forked from geisa/schemas

About

This repository hosts schema files for the transactions defined in the GEISA specification.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

67 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GEISA schemas

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.

Repository contents

At a high level, this repository contains:

  • *.proto files for protobuf message definitions.
  • geisa-*-schema.json files for JSON Schema definitions.
  • examples/*.json files with example payloads.
  • examples/*.cpp files with small C++ protobuf encode/decode examples.
  • examples/helpers/example_utils.h for shared example-only C++ helper code (not a GEISA SDK).
  • examples/README*.md files with example-specific build and run notes.

Prerequisites

The repository build targets assume these tools are available on PATH:

  • make
  • protoc (Protocol Buffers compiler)

The C++ example build target also requires:

  • a C++17 compiler, such as c++, g++, or clang++
  • 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/.

Building protobuf outputs

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.

Examples

Example-specific build and run instructions are in the examples/ directory:

  • examples/README.md
  • examples/README-actuators.md
  • examples/README-discovery.md
  • examples/README-waveform.md
  • examples/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.

Lint and validation

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.

About

This repository hosts schema files for the transactions defined in the GEISA specification.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages