Skip to main content

Civic Exchange Protocol (CEP)

PyPI Python versions License: Apache 2.0 CI Status Docs Security Policy Link Check

Interoperable data standards for describing entities, relationships, and value exchanges across civic systems.

Overview

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/

Repository Structure

/
├── schema/                     # 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

Python Reference Implementation

Install from PyPI:

pip install civic-exchange-protocol

CLI entrypoint:

cx --help

Includes:

  • Pydantic models for Entity / Relationship / Exchange
  • Deterministic record hashing
  • Attestation helpers
  • Built-in JSON Schema validator
  • Test vectors for conformance

Rust Reference Implementation

The repository includes a Rust workspace with:

  • cep-core
  • cep-entity
  • cep-exchange
  • cep-relationship

To build:

cd src/rust
cargo build

Each crate inherits version, license, and repository metadata from the workspace root.

Schemas

Official schemas live under /schema and are published with stable URLs such as:

https://raw.githubusercontent.com/civic-interconnect/civic-exchange-protocol/main/schema/cep.entity.schema.json

Documentation includes a browser-embedded validator using Ajv.

Security Policy

We support responsible disclosure through GitHub’s Private Vulnerability Report feature.

See: SECURITY.md

Contributing

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

civic_exchange_protocol-0.0.4.tar.gz (227.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

civic_exchange_protocol-0.0.4-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file civic_exchange_protocol-0.0.4.tar.gz.

File metadata

  • Download URL: civic_exchange_protocol-0.0.4.tar.gz
  • Upload date:
  • Size: 227.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for civic_exchange_protocol-0.0.4.tar.gz
Algorithm Hash digest
SHA256 f7415e4e0f7349b39518d5c919ae76b57b5222b551b8df8a031f98fc56e14c52
MD5 84ee17d4c62779f87692dde8318e0af2
BLAKE2b-256 a10abeab74b5636a67f134c8663a6db46eb69b32dc74190f471b4e5444da8e43

See more details on using hashes here.

Provenance

The following attestation bundles were made for civic_exchange_protocol-0.0.4.tar.gz:

Publisher: release-python.yml on civic-interconnect/civic-exchange-protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file civic_exchange_protocol-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for civic_exchange_protocol-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5620d667c6923b342856475ead4e76336ac737d94a491a44618a2de636bdd151
MD5 d3d9a8a9551bf58a4942b25e71841001
BLAKE2b-256 894a6d3b9c9dfe52ab40bc59a3534c804b3bbffb2ac687394795d54f3e262bce

See more details on using hashes here.

Provenance

The following attestation bundles were made for civic_exchange_protocol-0.0.4-py3-none-any.whl:

Publisher: release-python.yml on civic-interconnect/civic-exchange-protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page