@mhome/app-facade-protocol 1.34.0 → 1.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -282,8 +282,17 @@ and unexpired pending pods, each
282
282
  channel. Either close only ends that connection; whether the pod is revoked
283
283
  is decided by its next refresh.
284
284
  - `/api/v1/hub/token/exchange` with a pod access token returns a Hub JWT with
285
- `clientKind` = `pod` and `podId` claims and a 24-hour lifetime. Hub JWTs for
286
- user tokens are unchanged.
285
+ `clientKind` = `pod` and `podId` claims and the same lifetime as a Hub JWT
286
+ for a user token.
287
+ - Revoking a pod credential, by any path, also revokes the pod on the Hubs of
288
+ its user's local Spaces. Before committing the revocation Lion marks the
289
+ `scope.pods` resource dirty for each such Space; after it commits, Lion
290
+ notifies the Hub through the pull-sync contract. A Hub that is offline pulls
291
+ the marker when its bridge reconnects. `scope.pods` is a snapshot
292
+ `{"podIds":[…]}` of the active pods of the Space's members. The Hub revokes
293
+ the local tokens it issued to any other pod before the pull, disables the
294
+ local auth of that pod's app client once no active token is left, and refuses
295
+ and stops renewing that pod's local connections.
287
296
 
288
297
  ## 6. Pod runtime authentication
289
298
 
@@ -299,11 +308,14 @@ and unexpired pending pods, each
299
308
  re-sends `/focus`; it keeps one Hub JWT and Hub key per Hub and Space.
300
309
  - Local Hub: the Hub identity endpoint `POST /api/v1/hub/identity/get`
301
310
  (`{"hubId","tenantId","scopeId"}`) is public and needs no token. The pod
302
- proves the Hub identity, obtains a Hub JWT from `/api/v1/hub/token/exchange`
303
- over HTTPS with its pod access token and `ScopeId`, and authenticates to the
304
- local Hub only with that Hub JWT (`source=local`, `clientSource=pod`). The
305
- cloud access token is never sent over the local link. The pod exchanges a new
306
- Hub JWT before the current one expires and after a local rejection.
311
+ proves the Hub identity, then authenticates to the local Hub the way a Client
312
+ does: the first local `/auth` carries its pod access token with
313
+ `source=cloud` (`clientSource=pod`, `deviceId`, `tenantId`, `scopeId`,
314
+ `hubId`). The Hub exchanges that token with the cloud and returns a
315
+ long-lived local Hub JWT in `jwtToken`, which the pod stores per Hub. Later
316
+ local `/auth` requests use only that JWT with `source=local`. When the stored
317
+ JWT is about to expire or the Hub rejects it, the pod discards it and
318
+ authenticates with `source=cloud` again.
307
319
 
308
320
  ## 7. Native Client targets
309
321
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "callSchema": "schema/facade-call.v1.schema.json",
5
5
  "routing": "manifest/routing.v1.json",
6
6
  "routingSchema": "schema/routing.v1.schema.json",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.host-provision.targets.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "contract": "contract/host-provisioning-v1.md",
5
5
  "localTargets": [
6
6
  "/local/host/provision/start",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.hub.targets.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "appTargets": [
5
5
  "/app/hub/get",
6
6
  "/app/hub/remove",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.pod.targets.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "contract": "contract/pod-commissioning-v1.md",
5
5
  "localTargets": [
6
6
  "/local/pod/discovery/start",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.routing.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "targetPrefix": "/app/",
5
5
  "default": {
6
6
  "execution": "scopeMode",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.messaging.targets.v1",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "requestTargets": [
5
5
  "/app/messaging/provider/list",
6
6
  "/app/messaging/provider-account/list",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhome/app-facade-protocol",
3
- "version": "1.34.0",
3
+ "version": "1.34.1",
4
4
  "description": "Build-time protocol artifacts for mhome.app-facade",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "protocol": "mhome.app-facade",
3
- "contractVersion": "1.34.0",
3
+ "contractVersion": "1.34.1",
4
4
  "manifest": "manifest/app-facade.v1.json",
5
5
  "schemas": {
6
6
  "capabilityDescriptor": "schema/capability-descriptor.v1.schema.json",