Interoperable data standards for describing entities, relationships, and value exchanges across civic systems.
The Civic Exchange Protocol defines a coherent, verifiable way to describe:
- Entities (organizations, agencies, districts, people)
- Relationships (grant awards, contracts, reporting relationships)
- Exchanges of value (payments, disbursements, transfers)
CEP records are:
- JSON Schema–validated
- Fully typed
- Deterministic and versioned
- Extensible across jurisdictions and data ecosystems
- Designed for cross-system interoperability
Documentation: https://civic-interconnect.github.io/civic-exchange-protocol/
/
├── schemas/ # Official CEP JSON Schemas
│ ├── cep.entity.schema.json
│ ├── cep.relationship.schema.json
│ ├── cep.exchange.schema.json
│ └── cep.entity.identifier-scheme.schema.json
│
├── vocabulary/ # Versioned controlled vocabularies
│ ├── entity-type.v1.0.0.json
│ ├── exchange-type.v1.0.0.json
│ ├── exchange-role.v1.0.0.json
│ ├── party-role.v1.0.0.json
│ ├── value-type.v1.0.0.json
│ └── resolution-method.v1.0.0.json
│
├── src/python/ # Python reference implementation
│ ├── src/civic_exchange_protocol/
│ └── tests/
│
├── src/rust/ # Rust reference implementation
│ ├── cep-core/
│ ├── cep-entity/
│ ├── cep-exchange/
│ └── cep-relationship/
│
├── docs/ # MkDocs documentation site
└── .github/workflows/ # CI, Docs deploy, PyPI release
Install from PyPI:
pip install civic-exchange-protocolCLI entrypoint:
cx --help
cx validate-json examples/entity/school_district_01.json --schema entity
cx validate-json examples/entity --schema entity
cx validate-json examples/exchange --schema exchange --recursiveIncludes:
- Pydantic models for Entity / Relationship / Exchange
- Deterministic record hashing
- Attestation helpers
- Built-in JSON Schema validator
- Test vectors for conformance
The repository includes a Rust workspace with:
cep-corecep-entitycep-exchangecep-relationship
To build:
cd src/rust
cargo buildEach crate inherits version, license, and repository metadata from the workspace root.
Official schemas live under /schemas and are published with stable URLs such as:
https://raw.githubusercontent.com/civic-interconnect/civic-exchange-protocol/main/schemas/cep.entity.schema.json
Documentation includes a browser-embedded validator using Ajv.
We support responsible disclosure through GitHub’s Private Vulnerability Report feature.
See: SECURITY.md
- See CONTRIBUTING.md
- See DEVELOPER.md