Controller api and db table structure

I want to customize ZAC and need to modify the API. Is there a provided controller's BoltDB table structure and API documentation? Thank you.

Hi @zhaojun1217

We don't have doc for the boltdb table structure. All the bolt stores are here: ziti/controller/db at release-next · openziti/ziti · GitHub
If you just want to browse, you could use ziti ops db explore to look at a ziti bolt db. The structure is pretty straightforward. If you have specific questions, we'll do our best to answer them.

The REST apis have swagger specs.

When we move to OpenAPI 3.0, we'll likely combine the fabric and edge management apis into a single endpoint.


This is also helpful, thanks :smiley: :smiley: :smiley:

I want to modify the identityType section to differentiate between various types such as mac, android, ios, and router. Currently, I see only two types: router and default. This may require modifying the identityTypes bucket, new version, 'user', 'service', and 'device' are replaced. If it's not easily modifiable, I might consider adding a new field in the identities bucket

Have you considered using tags on identities?

$ ziti edge create identity android-user --tags type=android
New identity android-user created with id: dPqmD8Qne
$ ziti edge create identity android-user2 --tags type=android
New identity android-user2 created with id: NWpKD5QCDq
$ ziti edge create identity ios-user --tags type=ios
New identity ios-user created with id: dQGme8xnDq
$ ziti edge list identities 'tags.type="android"'
│ ID         │ NAME          │ TYPE    │ ATTRIBUTES │ AUTH-POLICY │
│ NWpKD5QCDq │ android-user2 │ Default │            │ Default     │
│ dPqmD8Qne  │ android-user  │ Default │            │ Default     │
results: 1-2 of 2

I overlooked the tag! I think this should be more convenient. Let me try. :+1: