Le miroir GitHub n'est pas encore synchronisé : les liens pointent sur git.etm-powersync.fr. INTERFACE.md n'est plus dans le dépôt public : la forme des méthodes NymeaEnergy.* se lit sur la box (JSONRPC.Introspect) ; GetOptimizerStatus n'est pas réservée à l'administrateur. Orthographe anglaise unifiée : optimizer, optimization. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ry3vBrJT1tHdxAaXdCWi6L
53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
# Contract
|
|
|
|
The **machine-readable contract** describes the shape of every message of the
|
|
[protocol](protocole.md): an [OpenRPC](https://spec.open-rpc.org/) document whose messages
|
|
are written in JSON Schema, with `x-etm-…` extensions for what OpenRPC cannot express —
|
|
transport, fallback state machine, named validation rules, tolerances, closed lists.
|
|
|
|
The engine embeds it, and both its own tests and the conformance suite check it on both
|
|
sides. The tables on the [Protocol](protocole.md) page are generated from it.
|
|
|
|
## Download the contract {#telecharger}
|
|
|
|
[:material-download: Download `etm-powersync-optimizer-protocol.openrpc.json`](etm-powersync-optimizer-protocol.openrpc.json){ .md-button }
|
|
|
|
The site serves the file **as is**, byte for byte, from the default branch of the engine
|
|
repository. Its record:
|
|
|
|
<!-- BEGIN GENERATED: __optimizer_contract__ -->
|
|
|
|
| | Contract |
|
|
|---|---|
|
|
| Title | etm-powersync — protocole moteur ↔ optimiseur |
|
|
| Protocol version | `1.1` |
|
|
| Format | OpenRPC `1.3.2`, JSON Schema in `components.schemas` |
|
|
| License | GPL-3.0-or-later |
|
|
| File | [`etm-powersync-optimizer-protocol.openrpc.json`](etm-powersync-optimizer-protocol.openrpc.json) |
|
|
| Size | 67215 bytes |
|
|
| SHA-256 | `29dfe5a3c94a06e94e95042c0ceefd4d6264fcca44265faa676a06fac1c07ded` |
|
|
| Methods | `Handshake` · `GetPlan` · `UpdateLearned` |
|
|
| Schemas | 47 |
|
|
| Semantic rules | 19 |
|
|
| Extensions (document) | `x-etm-fallback-machine` · `x-etm-generated` · `x-etm-reason-params` · `x-etm-semantic-rules` · `x-etm-tolerances` · `x-etm-transport` |
|
|
| Extensions (methods) | `x-etm-direction` · `x-etm-notification` · `x-etm-timeout-s` |
|
|
|
|
<!-- END GENERATED -->
|
|
|
|
## Your box's contract: `NymeaEnergy.GetOptimizerProtocol` {#getoptimizerprotocol}
|
|
|
|
The contract published here follows the engine's development; your box may carry an
|
|
earlier version. To get **the** contract of the installed engine, ask the box: the
|
|
JSON-RPC method `NymeaEnergy.GetOptimizerProtocol` returns the one it embeds. That is the
|
|
one that is authoritative for an optimizer connected to that box.
|
|
|
|
It belongs to the optimizer `NymeaEnergy.*` methods (endpoint, shared secret, status); the
|
|
box itself returns their exact form through `JSONRPC.Introspect`. Connecting to the API is described on the
|
|
[JSON-RPC API](../integrations/jsonrpc-api.md) page.
|
|
|
|
## Validating messages {#valider}
|
|
|
|
The engine repository provides a validator, `tools/etm-powersync-schema-check` (Python,
|
|
standard library): it checks a single message, a complete recorded session or traces
|
|
against the contract, and applies the named validation rules on request.
|