{"description":"Provide Trellis authentication, session, service install, and admin RPCs.","displayName":"Trellis Auth","events":{"Auth.Connect":{"capabilities":{"publish":["service:events:auth"],"subscribe":["service:events:auth"]},"eventSchema":{"allOf":[{"properties":{"header":{"additionalProperties":false,"properties":{"id":{"type":"string"},"time":{"format":"date-time","type":"string"}},"required":["id","time"],"type":"object"}},"required":["header"],"type":"object"},{"properties":{"id":{"type":"string"},"origin":{"type":"string"},"sessionKey":{"type":"string"},"userNkey":{"type":"string"}},"required":["origin","id","sessionKey","userNkey"],"type":"object"}]},"subject":"events.v1.Auth.Connect","version":"v1"},"Auth.ConnectionKicked":{"capabilities":{"publish":["service:events:auth"],"subscribe":["service:events:auth"]},"eventSchema":{"allOf":[{"properties":{"header":{"additionalProperties":false,"properties":{"id":{"type":"string"},"time":{"format":"date-time","type":"string"}},"required":["id","time"],"type":"object"}},"required":["header"],"type":"object"},{"properties":{"id":{"type":"string"},"kickedBy":{"type":"string"},"origin":{"type":"string"},"userNkey":{"type":"string"}},"required":["origin","id","userNkey","kickedBy"],"type":"object"}]},"subject":"events.v1.Auth.ConnectionKicked","version":"v1"},"Auth.Disconnect":{"capabilities":{"publish":["service:events:auth"],"subscribe":["service:events:auth"]},"eventSchema":{"allOf":[{"properties":{"header":{"additionalProperties":false,"properties":{"id":{"type":"string"},"time":{"format":"date-time","type":"string"}},"required":["id","time"],"type":"object"}},"required":["header"],"type":"object"},{"properties":{"id":{"type":"string"},"origin":{"type":"string"},"sessionKey":{"type":"string"},"userNkey":{"type":"string"}},"required":["origin","id","sessionKey","userNkey"],"type":"object"}]},"subject":"events.v1.Auth.Disconnect","version":"v1"},"Auth.SessionRevoked":{"capabilities":{"publish":["service:events:auth"],"subscribe":["service:events:auth"]},"eventSchema":{"allOf":[{"properties":{"header":{"additionalProperties":false,"properties":{"id":{"type":"string"},"time":{"format":"date-time","type":"string"}},"required":["id","time"],"type":"object"}},"required":["header"],"type":"object"},{"properties":{"id":{"type":"string"},"origin":{"type":"string"},"revokedBy":{"type":"string"},"sessionKey":{"type":"string"}},"required":["origin","id","sessionKey","revokedBy"],"type":"object"}]},"subject":"events.v1.Auth.SessionRevoked","version":"v1"}},"format":"trellis.contract.v1","id":"trellis.auth@v1","kind":"service","rpc":{"Auth.GetInstalledContract":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["digest"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"contract":{"additionalProperties":false,"properties":{"analysis":{"additionalProperties":false,"properties":{"events":{"additionalProperties":false,"properties":{"events":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"publishCapabilities":{"items":{"type":"string"},"type":"array"},"subject":{"type":"string"},"subscribeCapabilities":{"items":{"type":"string"},"type":"array"},"wildcardSubject":{"type":"string"}},"required":["key","subject","wildcardSubject","publishCapabilities","subscribeCapabilities"],"type":"object"},"type":"array"}},"required":["events"],"type":"object"},"namespaces":{"items":{"type":"string"},"type":"array"},"nats":{"additionalProperties":false,"properties":{"publish":{"items":{"additionalProperties":false,"properties":{"kind":{"type":"string"},"requiredCapabilities":{"items":{"type":"string"},"type":"array"},"subject":{"type":"string"},"wildcardSubject":{"type":"string"}},"required":["kind","subject","wildcardSubject","requiredCapabilities"],"type":"object"},"type":"array"},"subscribe":{"items":{"additionalProperties":false,"properties":{"kind":{"type":"string"},"requiredCapabilities":{"items":{"type":"string"},"type":"array"},"subject":{"type":"string"},"wildcardSubject":{"type":"string"}},"required":["kind","subject","wildcardSubject","requiredCapabilities"],"type":"object"},"type":"array"}},"required":["publish","subscribe"],"type":"object"},"resources":{"additionalProperties":false,"properties":{"kv":{"items":{"additionalProperties":false,"properties":{"alias":{"minLength":1,"type":"string"},"history":{"type":"number"},"maxValueBytes":{"type":"number"},"purpose":{"minLength":1,"type":"string"},"required":{"type":"boolean"},"ttlMs":{"type":"number"}},"required":["alias","purpose","required","history","ttlMs"],"type":"object"},"type":"array"}},"required":["kv"],"type":"object"},"rpc":{"additionalProperties":false,"properties":{"methods":{"items":{"additionalProperties":false,"properties":{"callerCapabilities":{"items":{"type":"string"},"type":"array"},"key":{"type":"string"},"subject":{"type":"string"},"wildcardSubject":{"type":"string"}},"required":["key","subject","wildcardSubject","callerCapabilities"],"type":"object"},"type":"array"}},"required":["methods"],"type":"object"},"subjects":{"additionalProperties":false,"properties":{"subjects":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"publishCapabilities":{"items":{"type":"string"},"type":"array"},"subject":{"type":"string"},"subscribeCapabilities":{"items":{"type":"string"},"type":"array"}},"required":["key","subject","publishCapabilities","subscribeCapabilities"],"type":"object"},"type":"array"}},"required":["subjects"],"type":"object"}},"required":["namespaces","rpc","events","nats","resources"],"type":"object"},"analysisSummary":{"additionalProperties":false,"properties":{"events":{"type":"number"},"kvResources":{"type":"number"},"namespaces":{"items":{"type":"string"},"type":"array"},"natsPublish":{"type":"number"},"natsSubscribe":{"type":"number"},"rpcMethods":{"type":"number"}},"required":["namespaces","rpcMethods","events","natsPublish","natsSubscribe","kvResources"],"type":"object"},"contract":{"type":"object"},"description":{"minLength":1,"type":"string"},"digest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"displayName":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"installedAt":{"format":"date-time","type":"string"},"kind":{"minLength":1,"type":"string"},"resourceBindings":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"bucket":{"minLength":1,"type":"string"},"history":{"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"ttlMs":{"minimum":0,"type":"integer"}},"required":["bucket","history","ttlMs"],"type":"object"}},"type":"object"}},"type":"object"},"resources":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"history":{"default":1,"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"purpose":{"minLength":1,"type":"string"},"required":{"default":true,"type":"boolean"},"ttlMs":{"default":0,"minimum":0,"type":"integer"}},"required":["purpose"],"type":"object"}},"type":"object"}},"type":"object"},"sessionKey":{"type":"string"}},"required":["digest","id","displayName","description","kind","installedAt","contract"],"type":"object"}},"required":["contract"],"type":"object"},"subject":"rpc.v1.Auth.GetInstalledContract","version":"v1"},"Auth.Health":{"capabilities":{"call":[]},"errors":[{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"checks":{"items":{"additionalProperties":false,"properties":{"error":{"type":"string"},"latencyMs":{"type":"number"},"name":{"type":"string"},"status":{"anyOf":[{"const":"ok","type":"string"},{"const":"failed","type":"string"}]}},"required":["name","status","latencyMs"],"type":"object"},"type":"array"},"service":{"type":"string"},"status":{"anyOf":[{"const":"healthy","type":"string"},{"const":"unhealthy","type":"string"},{"const":"degraded","type":"string"}]},"timestamp":{"format":"date-time","type":"string"}},"required":["status","service","timestamp","checks"],"type":"object"},"subject":"rpc.v1.Auth.Health","version":"v1"},"Auth.InstallService":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"contract":{"type":"object"},"description":{"minLength":1,"type":"string"},"displayName":{"minLength":1,"type":"string"},"namespaces":{"items":{"type":"string"},"type":"array"},"sessionKey":{"type":"string"}},"required":["sessionKey","displayName","namespaces","description","contract"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"contractDigest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"contractId":{"minLength":1,"type":"string"},"resourceBindings":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"bucket":{"minLength":1,"type":"string"},"history":{"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"ttlMs":{"minimum":0,"type":"integer"}},"required":["bucket","history","ttlMs"],"type":"object"}},"type":"object"}},"type":"object"},"sessionKey":{"type":"string"},"success":{"type":"boolean"}},"required":["success","sessionKey","contractId","contractDigest","resourceBindings"],"type":"object"},"subject":"rpc.v1.Auth.InstallService","version":"v1"},"Auth.KickConnection":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"userNkey":{"type":"string"}},"required":["userNkey"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"},"subject":"rpc.v1.Auth.KickConnection","version":"v1"},"Auth.ListApprovals":{"capabilities":{"call":[]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"user":{"minLength":1,"type":"string"}},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"approvals":{"items":{"additionalProperties":false,"properties":{"answer":{"anyOf":[{"const":"approved","type":"string"},{"const":"denied","type":"string"}]},"answeredAt":{"format":"date-time","type":"string"},"approval":{"additionalProperties":false,"properties":{"capabilities":{"items":{"type":"string"},"type":"array"},"contractDigest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"contractId":{"minLength":1,"type":"string"},"description":{"minLength":1,"type":"string"},"displayName":{"minLength":1,"type":"string"},"kind":{"minLength":1,"type":"string"}},"required":["contractDigest","contractId","displayName","description","kind","capabilities"],"type":"object"},"updatedAt":{"format":"date-time","type":"string"},"user":{"minLength":1,"type":"string"}},"required":["user","answer","answeredAt","updatedAt","approval"],"type":"object"},"type":"array"}},"required":["approvals"],"type":"object"},"subject":"rpc.v1.Auth.ListApprovals","version":"v1"},"Auth.ListConnections":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"sessionKey":{"type":"string"},"user":{"type":"string"}},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"connections":{"items":{"additionalProperties":false,"properties":{"clientId":{"type":"number"},"connectedAt":{"type":"string"},"key":{"type":"string"},"serverId":{"type":"string"}},"required":["key","serverId","clientId","connectedAt"],"type":"object"},"type":"array"}},"required":["connections"],"type":"object"},"subject":"rpc.v1.Auth.ListConnections","version":"v1"},"Auth.ListInstalledContracts":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"sessionKey":{"type":"string"}},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"contracts":{"items":{"additionalProperties":false,"properties":{"analysisSummary":{"additionalProperties":false,"properties":{"events":{"type":"number"},"kvResources":{"type":"number"},"namespaces":{"items":{"type":"string"},"type":"array"},"natsPublish":{"type":"number"},"natsSubscribe":{"type":"number"},"rpcMethods":{"type":"number"}},"required":["namespaces","rpcMethods","events","natsPublish","natsSubscribe","kvResources"],"type":"object"},"description":{"minLength":1,"type":"string"},"digest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"displayName":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"installedAt":{"format":"date-time","type":"string"},"kind":{"minLength":1,"type":"string"},"resourceBindings":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"bucket":{"minLength":1,"type":"string"},"history":{"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"ttlMs":{"minimum":0,"type":"integer"}},"required":["bucket","history","ttlMs"],"type":"object"}},"type":"object"}},"type":"object"},"sessionKey":{"type":"string"}},"required":["digest","id","displayName","description","kind","installedAt"],"type":"object"},"type":"array"}},"required":["contracts"],"type":"object"},"subject":"rpc.v1.Auth.ListInstalledContracts","version":"v1"},"Auth.ListServices":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"services":{"items":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"capabilities":{"items":{"type":"string"},"type":"array"},"contractDigest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"contractId":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"description":{"type":"string"},"displayName":{"type":"string"},"namespaces":{"items":{"type":"string"},"type":"array"},"resourceBindings":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"bucket":{"minLength":1,"type":"string"},"history":{"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"ttlMs":{"minimum":0,"type":"integer"}},"required":["bucket","history","ttlMs"],"type":"object"}},"type":"object"}},"type":"object"},"sessionKey":{"type":"string"}},"required":["sessionKey","displayName","active","capabilities","namespaces","description","createdAt"],"type":"object"},"type":"array"}},"required":["services"],"type":"object"},"subject":"rpc.v1.Auth.ListServices","version":"v1"},"Auth.ListSessions":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"user":{"type":"string"}},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"sessions":{"items":{"additionalProperties":false,"properties":{"createdAt":{"type":"string"},"key":{"type":"string"},"lastAuth":{"type":"string"},"type":{"anyOf":[{"const":"user","type":"string"},{"const":"service","type":"string"}]}},"required":["key","type","createdAt","lastAuth"],"type":"object"},"type":"array"}},"required":["sessions"],"type":"object"},"subject":"rpc.v1.Auth.ListSessions","version":"v1"},"Auth.ListUsers":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"users":{"items":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"capabilities":{"items":{"type":"string"},"type":"array"},"email":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"origin":{"type":"string"}},"required":["origin","id","active","capabilities"],"type":"object"},"type":"array"}},"required":["users"],"type":"object"},"subject":"rpc.v1.Auth.ListUsers","version":"v1"},"Auth.Logout":{"capabilities":{"call":[]},"errors":[{"type":"AuthError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"},"subject":"rpc.v1.Auth.Logout","version":"v1"},"Auth.Me":{"capabilities":{"call":[]},"errors":[{"type":"AuthError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"user":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"capabilities":{"items":{"type":"string"},"type":"array"},"email":{"type":"string"},"id":{"type":"string"},"image":{"type":"string"},"lastLogin":{"format":"date-time","type":"string"},"name":{"type":"string"},"origin":{"type":"string"}},"required":["id","origin","active","name","email","capabilities"],"type":"object"}},"required":["user"],"type":"object"},"subject":"rpc.v1.Auth.Me","version":"v1"},"Auth.RenewBindingToken":{"capabilities":{"call":[]},"errors":[{"type":"AuthError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"bindingToken":{"type":"string"},"expires":{"type":"string"},"inboxPrefix":{"type":"string"},"sentinel":{"additionalProperties":false,"properties":{"jwt":{"type":"string"},"seed":{"type":"string"}},"required":["jwt","seed"],"type":"object"},"status":{"const":"bound","type":"string"}},"required":["status","bindingToken","inboxPrefix","expires","sentinel"],"type":"object"},"subject":"rpc.v1.Auth.RenewBindingToken","version":"v1"},"Auth.RevokeApproval":{"capabilities":{"call":[]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"contractDigest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"user":{"minLength":1,"type":"string"}},"required":["contractDigest"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"},"subject":"rpc.v1.Auth.RevokeApproval","version":"v1"},"Auth.RevokeSession":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"sessionKey":{"type":"string"}},"required":["sessionKey"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"},"subject":"rpc.v1.Auth.RevokeSession","version":"v1"},"Auth.UpdateUser":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"capabilities":{"items":{"type":"string"},"type":"array"},"id":{"type":"string"},"origin":{"type":"string"}},"required":["origin","id"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"success":{"type":"boolean"}},"required":["success"],"type":"object"},"subject":"rpc.v1.Auth.UpdateUser","version":"v1"},"Auth.UpgradeServiceContract":{"capabilities":{"call":["admin"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"contract":{"type":"object"},"sessionKey":{"type":"string"}},"required":["sessionKey","contract"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"contractDigest":{"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"contractId":{"minLength":1,"type":"string"},"resourceBindings":{"properties":{"kv":{"patternProperties":{"^.*$":{"additionalProperties":false,"properties":{"bucket":{"minLength":1,"type":"string"},"history":{"minimum":1,"type":"integer"},"maxValueBytes":{"minimum":1,"type":"integer"},"ttlMs":{"minimum":0,"type":"integer"}},"required":["bucket","history","ttlMs"],"type":"object"}},"type":"object"}},"type":"object"},"sessionKey":{"type":"string"},"success":{"type":"boolean"}},"required":["success","sessionKey","contractId","contractDigest","resourceBindings"],"type":"object"},"subject":"rpc.v1.Auth.UpgradeServiceContract","version":"v1"},"Auth.ValidateRequest":{"capabilities":{"call":["service"]},"errors":[{"type":"AuthError"},{"type":"ValidationError"},{"type":"UnexpectedError"}],"inputSchema":{"additionalProperties":false,"properties":{"capabilities":{"items":{"type":"string"},"type":"array"},"payloadHash":{"type":"string"},"proof":{"type":"string"},"sessionKey":{"type":"string"},"subject":{"type":"string"}},"required":["sessionKey","proof","subject","payloadHash"],"type":"object"},"outputSchema":{"additionalProperties":false,"properties":{"allowed":{"type":"boolean"},"inboxPrefix":{"type":"string"},"user":{"additionalProperties":false,"properties":{"active":{"type":"boolean"},"capabilities":{"items":{"type":"string"},"type":"array"},"email":{"type":"string"},"id":{"type":"string"},"image":{"type":"string"},"lastLogin":{"format":"date-time","type":"string"},"name":{"type":"string"},"origin":{"type":"string"}},"required":["id","origin","active","name","email","capabilities"],"type":"object"}},"required":["allowed","inboxPrefix","user"],"type":"object"},"subject":"rpc.v1.Auth.ValidateRequest","version":"v1"}}}