# wist-api
Cross-process **API seam** messages for the `wist` control plane (edge ↔ gateway ↔ center).
[](https://crates.io/crates/wist-api)
[](https://docs.rs/wist-api)
[](https://crates.io/crates/wist-api)
[](https://github.com/dayu-sec/wist-api/actions/workflows/ci.yml)
[](LICENSE)
A **seam** is a runtime coupling point between two independently deployed processes:
```
seam = { route, request body, response body, owner, compat, api_version }
```
Runtime coupling happens on seams, not on the crate graph — a crate is only the carrier of a message.
`wist-api` owns the **wire messages** of each seam so both endpoints `use` a single definition instead of
keeping a copy each (the classic drift bug: same seam, two structs, one of them silently older).
## Modules
| `enrollment` | `agent/enroll`, `agent/credentials:renew` | gateway ↔ agentd |
Seam messages reference **domain types** shared by more than one seam (`HostProfile` is used by both
`agent/enroll` and `agent/status`). Those stay in [`wist-contracts`](../wist-contracts) — the common base
of every participant — and are re-exported here so callers can pull a whole seam from one place.
## Related crates
- [`wist-contracts`](../wist-contracts) — shared domain / data-plane contract objects.
- [`wist-gateway`](../wist-gateway) — the receiving side of the `agent/*` seams.
- [`wist-agentd`](../wist-agentd) — the sending side of the `agent/*` seams.
## License
[Apache-2.0](LICENSE)