Litmus Unify
6 min
litmus unify (luns) litmus uns is the unified namespace an mqtt broker plus structured namespace plus account / acl management plane edges publish here; downstream systems subscribe graphql only luns exposes a single endpoint for all operations post {{uns url}}/mqtt/gql all 28 documented endpoints share this url the folder structure in the api portal (dashboard / uns / security / mqtt / integrations / tools) is organizational the actual operation is in the graphql query/mutation body there is no rest surface for luns if a tutorial tells you to call post /uns/account , that's wrong it's post /mqtt/gql with a createaccount mutation in the body module map (logical, not url) section purpose endpoints dashboard broker stats, connected client counts 4 uns namespace hierarchy, models, instances 7 security accounts, acl rules, tokens, le activation 10 mqtt topic listing, retained messages, broker config 4 integrations bridges to external brokers / cloud 2 tools diagnostics, exports 1 auth oauth2 password grant against the embedded keycloak post {{uns url}}/auth/realms/standalone/protocol/openid connect/token form body grant type=password , client id , username , password the returned access token is sent as authorization bearer \<token> on every /mqtt/gql call first call curl sk x post "https //\<uns host>/mqtt/gql" \\ h "authorization bearer $uns token" \\ h "content type application/json" \\ d '{"query" "query { account { id username actype enabled } }"}' common operations operation graphql list accounts query { account { } } create account mutation { createaccount(input { }) { id } } add acl rule mutation { addaccountrules(input { }) } enable account mutation { enableaccount(input { accountid " " }) } create le activation token mutation { createlitmusedgeactivationtoken( ) } see provision uns mqtt account # for the full create account chain