This repository contains the Google Protobuf specification for the Z9/Open binary protocol - Community Profile.
The Community Profile is a profile of Z9 Security's Z9/Open protocol, designed to be an efficient, binary socket communications between an access control panel and a host.
- Z9/Flex Community Profile - OpenAPI specification for the Z9/Flex JSON/REST API Community Profile
For more information about the commercial version of Z9/Flex, visit z9flex.com.
For more information about the commercial version of Z9/Open, visit z9open.com.
Z9/FL=X is a registered trademark of Z9 Security. z9/op=n is a registered certification mark of Z9 Security.
Apache 2.0 - see LICENSE for details.
SpCoreProto.proto- Top-level protocol messages (identification, events, database changes, device actions)SpCoreProtoData.proto- Data model definitions (credentials, devices, schedules, etc.)SpCoreProtoElements.proto- Common element definitionsSpCoreProtoEnums.proto- Enumeration definitions
The .proto files can be used with Google Protobuf tools (protoc) to:
- Generate serialization/deserialization code in various languages, for either side of the communications (host, panel)
The dotnet/ folder contains a C# SDK for Z9/Open Community Profile:
Z9.Protobuf.Community- .NET Standard 2.0 library with protobuf-generated classes, host-side connection management, and controller-sideSpCoreHostConnectionZ9.Protobuf.Community.Test- Unit tests
SpCoreHostConnection provides controller-side TCP/TLS connection, identification, ping, message dispatch, and reconnection with exponential backoff (5s to 160s, resets after successful identification). Implement ISpCoreHostConnectionObserver (or extend SpCoreHostConnectionObserverBase) to receive callbacks.
The library logs internally via log4net. The consuming application must configure log4net — without configuration, library log output is silently discarded.
Pushing a version tag triggers the CI pipeline to build, test, and publish the Z9.Protobuf.Community package to nuget.org:
Find the latest version and tag the next:
git tag --sort=-v:refname | head -1git tag v1.0.2
git push origin v1.0.2Note: This requires a NUGET_API_KEY secret configured in the repository's GitHub Actions settings.
Verify the package is published:
curl -s https://api.nuget.org/v3-flatcontainer/z9.protobuf.community/index.json