Glossary¶
Key concepts used throughout the Odoo Sync documentation. Use Index for a full index of models, methods, and technical terms.
- AST¶
Abstract Syntax Tree. A tree-structured, machine-readable representation of a language expression. In Odoo Sync, the
odoo_schemaJSON object is parsed into an AST whose nodes describe field mappings, relational operators, and traits.- broadcast¶
Routing mode by which an event is sent to all possible targets in the swarm. A single event is created and marked as sent as soon as it reaches the swarm, even if noone’s listening.
- CID¶
Content Identifier. A SHA-1 digest (HTTP transport) or CIDv1 hash (Kubo/IPFS transport) that uniquely and immutably identifies a blob. Once assigned, a
cidnever changes. Any node that holds the blob can serve it; duplicates are automatically merged. See ip.cid.- content addressing¶
Storage strategy where each blob is named by the hash of its contents rather than by a URL or database ID. Enables zero-cost deduplication and location-independent retrieval across swarm nodes.
- decentralized¶
A system, organization, or network where control, decision-making, and operations are distributed across multiple local entities rather than being concentrated in a single central authority.
- direct¶
Routing mode by which an event is sent to a single specified target in the swarm. One event is created for each target and marked as sent when it reaches that specific target.
- Ed25519¶
The elliptic-curve digital signature algorithm used to sign every outbound event. Each peer holds an Ed25519 keypair; the public key is encoded into the PeerID via the libp2p identity-multihash scheme.
- ESB¶
Enterprise Service Bus — a software architecture that allows different, disconnected business applications to communicate with each other. It acts as a centralized “message broker” or middleman, handling message routing, data transformation, and protocol conversion.
- event¶
A single signed message exchanged over the P2P network, represented by the ip.event model. Events carry a JSON payload, a list of referenced CIDs, and routing metadata. State machines track delivery (
routing_state) and import (mapping_state) independently.- fan-out¶
Messaging pattern where a single event is routed to multiple or all possible targets. The HTTP Transport uses fan-out to implement the broadcast routing mode. The Kubo / IPFS Transport uses Kubo’s more advanced mesh network pattern.
- gateway¶
The local node managed directly from Odoo (
is_gateway = True). Each swarm has exactly one gateway; it orchestrates export, delivery, and import for all other nodes in the swarm.- idempotent¶
An operation that produces the same result no matter how many times it is applied. In Odoo Sync, event import is idempotent: re-delivering the same event (e.g. after a network retry) does not create a duplicate record because the upsert logic matches and updates the existing one.
- mapping¶
The bidirectional mapping engine embedded in an ip.schema record. An AST (stored in
odoo_schema) is a JSON object that maps Odoo field names to mapping descriptors; the engine uses it to translate Odoo records → JSON payloads on export and JSON payloads → Odoo records on import.- node¶
A transport-agnostic network participant represented by ip.node. A node inherits a peer cryptographic identity, belongs to one swarm, and carries transport-specific connection parameters (URL, API key, etc.).
- peer¶
A cryptographic identity consisting of an Ed25519 keypair, represented by ip.peer. Peers are created lazily when a new PeerID is seen in an arriving event. A peer may be linked to an Odoo partner or user.
- PeerID¶
A Base58btc-encoded identifier derived from an Ed25519 public key using the libp2p identity-multihash encoding (
12D3KooW…format). Uniquely identifies a peer across all swarms and is immutable once assigned.- protocol¶
A live topic where nodes actively talk back to each other, carrying coordination signals rather than business records. The only built-in protocol is the heartbeat / presence topic; planned protocols include acknowledgement. See Protocols.
- PubSub¶
Publish-Subscribe. The messaging pattern used by Odoo Sync: publishers emit events on a named topic channel; all subscribed nodes receive them. Routing mode (
broadcastordirect) is configured per topic.- schema¶
An ip.schema record that holds a JSON Schema for payload validation (
data_schema) and a mapping AST (odoo_schema) for bidirectional record translation.- semantic¶
That carries meaning, holds context, is interpretable. Makes the difference between a list of ingredients and a recipe.
- swarm¶
A named synchronization network represented by ip.swarm. All nodes in a swarm share the same transport type (
offline,http, orkubo). A single gateway orchestrates routing; topics define which records are exchanged and how.- topic¶
An ip.topic record that configures a PubSub channel: which schema to use, which swarms to publish on, and when to export, import, deliver, and garbage-collect records. Infrastructure (automations, crons) is auto-created and self-healed whenever the topic is saved.
- trait¶
An AST hook that modifies mapping behaviour for a specific field. The built-in
is_cidtrait makes any relational field transparently store and retrieve binary blobs as content addressing CID references.- upsert¶
Update a record if it already exists, create it if it does not. Controlled by the
__root__directive in the mapping: thematchkey identifies the existing record andon_missdecides what to do when none is found.