@mhome/app-facade-protocol 1.0.0

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.
Files changed (58) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +11 -0
  3. package/fixtures/actor-link-claim-confirm.request.json +1 -0
  4. package/fixtures/actor-link-claim-confirm.response.json +1 -0
  5. package/fixtures/actor-link-claim-event.response.json +1 -0
  6. package/fixtures/actor-link-claim-status.request.json +1 -0
  7. package/fixtures/actor-link-claim-status.response.json +1 -0
  8. package/fixtures/actor-link-code-create.request.json +1 -0
  9. package/fixtures/actor-link-code-create.response.json +1 -0
  10. package/fixtures/actor-link-delete.request.json +1 -0
  11. package/fixtures/actor-link-delete.response.json +1 -0
  12. package/fixtures/actor-link-list.request.json +1 -0
  13. package/fixtures/actor-link-list.response.json +1 -0
  14. package/fixtures/invalid/mismatched-direction.json +5 -0
  15. package/fixtures/invalid/missing-required-extension.json +5 -0
  16. package/fixtures/invalid/unknown-request-field.json +5 -0
  17. package/fixtures/provider-account-delete.request.json +9 -0
  18. package/fixtures/provider-account-delete.response.json +5 -0
  19. package/fixtures/provider-account-list.request.json +5 -0
  20. package/fixtures/provider-account-list.response.json +21 -0
  21. package/fixtures/provider-account-status.request.json +5 -0
  22. package/fixtures/provider-account-status.response.json +12 -0
  23. package/fixtures/provider-account-test.request.json +5 -0
  24. package/fixtures/provider-account-test.response.json +5 -0
  25. package/fixtures/provider-account-update.request.json +10 -0
  26. package/fixtures/provider-account-update.response.json +15 -0
  27. package/fixtures/provider-list.request.json +14 -0
  28. package/fixtures/provider-list.response.json +35 -0
  29. package/fixtures/route-delete.request.json +5 -0
  30. package/fixtures/route-delete.response.json +5 -0
  31. package/fixtures/route-list.request.json +5 -0
  32. package/fixtures/route-list.response.json +55 -0
  33. package/fixtures/route-update.request.json +21 -0
  34. package/fixtures/route-update.response.json +29 -0
  35. package/fixtures/setup-options.request.json +5 -0
  36. package/fixtures/setup-options.response.json +5 -0
  37. package/fixtures/setup-start.request.json +9 -0
  38. package/fixtures/setup-start.response.json +12 -0
  39. package/fixtures/setup-status.request.json +5 -0
  40. package/fixtures/setup-status.response.json +14 -0
  41. package/fixtures/shared-account-grant-create.request.json +5 -0
  42. package/fixtures/shared-account-grant-create.response.json +5 -0
  43. package/fixtures/shared-account-grant-delete.request.json +5 -0
  44. package/fixtures/shared-account-grant-delete.response.json +5 -0
  45. package/fixtures/shared-account-grant-list.request.json +5 -0
  46. package/fixtures/shared-account-grant-list.response.json +9 -0
  47. package/fixtures/surface-bind-code-create.request.json +1 -0
  48. package/fixtures/surface-bind-code-create.response.json +1 -0
  49. package/fixtures/surface-dismiss.request.json +1 -0
  50. package/fixtures/surface-dismiss.response.json +1 -0
  51. package/fixtures/surface-list.request.json +1 -0
  52. package/fixtures/surface-list.response.json +1 -0
  53. package/manifest/app-facade.v1.json +32 -0
  54. package/manifest/targets.v1.json +57 -0
  55. package/package.json +43 -0
  56. package/protocol.json +13 -0
  57. package/schema/facade-call.v1.schema.json +46 -0
  58. package/schema/messaging-frame.v3.schema.json +2683 -0
package/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) MHOME AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # mhome-app-facade-api
2
+
3
+ Canonical public protocol shared by MeowLink clients, MeowCore, the CLI,
4
+ Agents, and cloud adapters.
5
+
6
+ Every `/app/*` request uses the strict `FacadeCall` envelope. Invocation
7
+ metadata lives in `control`; the domain request lives in `input`. The crate
8
+ owns public targets, request/response/event schemas, and stable operation
9
+ identity. Core-to-Node routes and provider runtime models belong to
10
+ `mhome-core-api` instead.
11
+
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-claim/confirm","direction":"request","body":{"provider":"telegram","placement":"local","challengeId":"challenge_01"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-claim/confirm","direction":"response","body":{"claim":{"challengeId":"challenge_01","provider":"telegram","placement":"local","accountId":"bot_a","target":{"audience":"shared","surfaceId":"mg:telegram:bot_a:family"},"expiresAtMs":1720000300000,"lifecycle":{"state":"completed","candidate":{"actor":{"provider":"telegram","accountId":"bot_a","externalUserId":"tg_42","displayName":"Alice"},"address":{"provider":"telegram","accountId":"bot_a","conversationId":"family","audience":"shared"},"eventId":"update_99"},"linkId":"link_42"}}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-claim/changed","direction":"response","body":{"claim":{"challengeId":"challenge_01","provider":"telegram","placement":"local","accountId":"bot_a","target":{"audience":"shared","surfaceId":"mg:telegram:bot_a:family"},"expiresAtMs":1720000300000,"lifecycle":{"state":"awaiting_confirmation","candidate":{"actor":{"provider":"telegram","accountId":"bot_a","externalUserId":"tg_42","displayName":"Alice"},"address":{"provider":"telegram","accountId":"bot_a","conversationId":"family","audience":"shared"},"eventId":"update_99"}}}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-claim/status","direction":"request","body":{"provider":"telegram","placement":"local","challengeId":"challenge_01"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-claim/status","direction":"response","body":{"claim":{"challengeId":"challenge_01","provider":"telegram","placement":"local","accountId":"bot_a","target":{"audience":"shared","surfaceId":"mg:telegram:bot_a:family"},"expiresAtMs":1720000300000,"lifecycle":{"state":"awaiting_confirmation","candidate":{"actor":{"provider":"telegram","accountId":"bot_a","externalUserId":"tg_42","displayName":"Alice"},"address":{"provider":"telegram","accountId":"bot_a","conversationId":"family","audience":"shared"},"eventId":"update_99"}}}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-code/create","direction":"request","body":{"provider":"telegram","placement":"local","accountId":"bot_a","target":{"audience":"shared","surfaceId":"mg:telegram:bot_a:family"}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link-code/create","direction":"response","body":{"challenge":{"challengeId":"challenge_01","code":"P4V8N6","command":"/link P4V8N6","target":{"audience":"shared","surfaceId":"mg:telegram:bot_a:family"},"expiresAtMs":1720000300000}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link/delete","direction":"request","body":{"provider":"telegram","placement":"local","linkId":"link_a"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link/delete","direction":"response","body":{"success":true}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link/list","direction":"request","body":{"provider":"telegram","placement":"local","accountId":"bot_a"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/actor/link/list","direction":"response","body":{"links":[{"linkId":"link_a","provider":"telegram","placement":"local","accountId":"bot_a","externalUserId":"user_42","displayName":"Alice","createdAtMs":1720000000000,"updatedAtMs":1720000000000}]}}
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/create",
3
+ "direction": "response",
4
+ "body": { "provider": "telegram", "placement": "local", "accountId": "123456" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/test",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/list",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "unexpected": true }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/delete",
3
+ "direction": "request",
4
+ "body": {
5
+ "provider": "telegram",
6
+ "placement": "local",
7
+ "accountId": "123456"
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/delete",
3
+ "direction": "response",
4
+ "body": { "success": true }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/list",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local" }
5
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/list",
3
+ "direction": "response",
4
+ "body": {
5
+ "accounts": [
6
+ {
7
+ "provider": "telegram",
8
+ "placement": "local",
9
+ "accountId": "123456",
10
+ "ownership": "user",
11
+ "displayName": "Home bot",
12
+ "enabled": true,
13
+ "status": "connected",
14
+ "providerData": {
15
+ "botUsername": "home_bot",
16
+ "transport": "long_polling"
17
+ }
18
+ }
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/status",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local" }
5
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/status",
3
+ "direction": "response",
4
+ "body": {
5
+ "status": {
6
+ "provider": "telegram",
7
+ "placement": "local",
8
+ "enabled": true,
9
+ "providerData": { "connected": 1 }
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/test",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "data": { "botToken": "secret" } }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/test",
3
+ "direction": "response",
4
+ "body": { "result": { "reachable": true } }
5
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/update",
3
+ "direction": "request",
4
+ "body": {
5
+ "provider": "telegram",
6
+ "placement": "local",
7
+ "accountId": "123456",
8
+ "data": { "enabled": true }
9
+ }
10
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "target": "/app/messaging/provider-account/update",
3
+ "direction": "response",
4
+ "body": {
5
+ "account": {
6
+ "provider": "telegram",
7
+ "placement": "local",
8
+ "accountId": "123456",
9
+ "ownership": "user",
10
+ "enabled": true,
11
+ "status": "connected",
12
+ "providerData": {}
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "target": "/app/messaging/provider/list",
3
+ "direction": "request",
4
+ "body": {
5
+ "placement": "cloud",
6
+ "frontendProviders": [
7
+ {
8
+ "provider": "telegram",
9
+ "deprecated": false,
10
+ "supportedPlacements": ["cloud", "local"]
11
+ }
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "target": "/app/messaging/provider/list",
3
+ "direction": "response",
4
+ "body": {
5
+ "providers": [
6
+ {
7
+ "provider": "telegram",
8
+ "displayName": "Telegram",
9
+ "placement": "cloud",
10
+ "deprecated": false,
11
+ "available": true,
12
+ "setupFlow": "pairing_code",
13
+ "audiences": ["personal", "shared"],
14
+ "inboundCapabilities": ["text", "audio", "action"],
15
+ "outboundCapabilities": ["text", "markdown", "action"],
16
+ "deliveryMode": "unrestricted",
17
+ "projections": {
18
+ "notification": { "supported": true },
19
+ "dialog": { "supported": true }
20
+ },
21
+ "managementOperations": [
22
+ "provider_account.list",
23
+ "provider_account.status",
24
+ "route.list",
25
+ "route.update",
26
+ "route.delete",
27
+ "setup.options",
28
+ "setup.start",
29
+ "setup.status"
30
+ ],
31
+ "providerData": {}
32
+ }
33
+ ]
34
+ }
35
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/route/delete",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "cloud", "routeId": "route-1" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/route/delete",
3
+ "direction": "response",
4
+ "body": { "success": true }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/route/list",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "cloud", "audience": "personal" }
5
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "target": "/app/messaging/route/list",
3
+ "direction": "response",
4
+ "body": {
5
+ "routes": [
6
+ {
7
+ "provider": "telegram",
8
+ "placement": "cloud",
9
+ "routeId": "route-1",
10
+ "accountId": "official-bot",
11
+ "conversationId": "chat-1",
12
+ "audience": "personal",
13
+ "externalActorId": "user-1",
14
+ "tenantId": "tenant-1",
15
+ "userId": "mhome-user-1",
16
+ "scopeId": "scope-1",
17
+ "displayName": "Telegram",
18
+ "enabled": true,
19
+ "projections": {
20
+ "notification": {
21
+ "enabled": true,
22
+ "levels": ["alert", "notify"]
23
+ },
24
+ "dialog": {
25
+ "enabled": true
26
+ }
27
+ },
28
+ "providerData": {}
29
+ },
30
+ {
31
+ "provider": "feishu",
32
+ "placement": "local",
33
+ "routeId": "route-2",
34
+ "accountId": "app-1",
35
+ "conversationId": "chat-2",
36
+ "audience": "shared",
37
+ "tenantId": "tenant-1",
38
+ "scopeId": "scope-2",
39
+ "boundByUserId": "mhome-user-1",
40
+ "displayName": "Project room",
41
+ "enabled": true,
42
+ "projections": {
43
+ "notification": {
44
+ "enabled": false,
45
+ "levels": []
46
+ },
47
+ "dialog": {
48
+ "enabled": false
49
+ }
50
+ },
51
+ "providerData": {}
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "target": "/app/messaging/route/update",
3
+ "direction": "request",
4
+ "body": {
5
+ "audience": "personal",
6
+ "provider": "telegram",
7
+ "placement": "cloud",
8
+ "routeId": "route-1",
9
+ "scopeId": "scope-1",
10
+ "enabled": false,
11
+ "projections": {
12
+ "notification": {
13
+ "enabled": true,
14
+ "levels": ["alert", "notify"]
15
+ },
16
+ "dialog": {
17
+ "enabled": true
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "target": "/app/messaging/route/update",
3
+ "direction": "response",
4
+ "body": {
5
+ "route": {
6
+ "provider": "telegram",
7
+ "placement": "cloud",
8
+ "routeId": "route-1",
9
+ "accountId": "official-bot",
10
+ "conversationId": "chat-1",
11
+ "audience": "personal",
12
+ "externalActorId": "user-1",
13
+ "tenantId": "tenant-1",
14
+ "userId": "mhome-user-1",
15
+ "scopeId": "scope-1",
16
+ "enabled": false,
17
+ "projections": {
18
+ "notification": {
19
+ "enabled": true,
20
+ "levels": ["alert", "notify"]
21
+ },
22
+ "dialog": {
23
+ "enabled": true
24
+ }
25
+ },
26
+ "providerData": {}
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/setup/options",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/setup/options",
3
+ "direction": "response",
4
+ "body": { "options": { "tokenRequired": true } }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "target": "/app/messaging/setup/start",
3
+ "direction": "request",
4
+ "body": {
5
+ "provider": "telegram",
6
+ "placement": "local",
7
+ "data": { "botToken": "secret" }
8
+ }
9
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "target": "/app/messaging/setup/start",
3
+ "direction": "response",
4
+ "body": {
5
+ "setup": {
6
+ "setupId": "setup-1",
7
+ "status": "action_required",
8
+ "expiresAtMs": 1893456000000,
9
+ "providerData": { "pairingCode": "ABCD" }
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/setup/status",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "setupId": "setup-1" }
5
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "target": "/app/messaging/setup/status",
3
+ "direction": "response",
4
+ "body": {
5
+ "setup": {
6
+ "setupId": "setup-1",
7
+ "status": "complete",
8
+ "providerData": {},
9
+ "accountId": "official-bot",
10
+ "routeId": "route-1",
11
+ "message": "Connected"
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/create",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "accountId": "123456" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/create",
3
+ "direction": "response",
4
+ "body": { "success": true }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/delete",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "accountId": "123456" }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/delete",
3
+ "direction": "response",
4
+ "body": { "success": true }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/list",
3
+ "direction": "request",
4
+ "body": { "provider": "telegram", "placement": "local", "accountId": "123456" }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "target": "/app/messaging/shared-account-grant/list",
3
+ "direction": "response",
4
+ "body": {
5
+ "grants": [
6
+ { "provider": "telegram", "placement": "local", "accountId": "123456", "tenantId": "tenant-1", "scopeId": "scope-1", "grantedByUserId": "user-1", "createdAtMs": 1787961600000, "updatedAtMs": 1787961600000 }
7
+ ]
8
+ }
9
+ }
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/bind-code/create","direction":"request","body":{"provider":"feishu","placement":"local","surfaceId":"cs1:mg:feishu:Y2xpX2E:Y2hhdF9h","scopeId":"scope_a"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/bind-code/create","direction":"response","body":{"challenge":{"code":"M7K9Q2","command":"/bind M7K9Q2","expiresAtMs":1720000300000}}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/dismiss","direction":"request","body":{"provider":"feishu","placement":"local","surfaceId":"cs1:mg:feishu:Y2xpX2E:Y2hhdF9h"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/dismiss","direction":"response","body":{"success":true}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/list","direction":"request","body":{"provider":"feishu","placement":"local","state":"pending"}}
@@ -0,0 +1 @@
1
+ {"target":"/app/messaging/surface/list","direction":"response","body":{"surfaces":[{"provider":"feishu","placement":"local","accountId":"cli_a","surfaceId":"cs1:mg:feishu:Y2xpX2E:Y2hhdF9h","displayName":"Project room","state":"pending","firstSeenAtMs":1720000000000,"lastSeenAtMs":1720000001000}]}}
@@ -0,0 +1,32 @@
1
+ {
2
+ "manifest": "mhome.app-facade.v1",
3
+ "contractVersion": "1.0.0",
4
+ "callSchema": "schema/facade-call.v1.schema.json",
5
+ "domains": {
6
+ "messaging": {
7
+ "targets": "manifest/targets.v1.json"
8
+ },
9
+ "plugin": {
10
+ "extensionVersion": "v1",
11
+ "targetPrefix": "/app/plugin",
12
+ "exactRequestTargets": [
13
+ "/app/plugin/installed/list",
14
+ "/app/plugin/detail/get",
15
+ "/app/plugin/candidate/list",
16
+ "/app/plugin/add/start",
17
+ "/app/plugin/add/status",
18
+ "/app/plugin/add/cancel",
19
+ "/app/plugin/remove",
20
+ "/app/plugin/profile/update"
21
+ ],
22
+ "eventTargets": ["/app/plugin/settings/changed"],
23
+ "extensionFamily": "/app/plugin/{nodeType}/{route...}",
24
+ "extensionPriority": "after_exact"
25
+ },
26
+ "runtime": {
27
+ "requestTargets": ["/app/runtime/status/list"],
28
+ "eventTargets": ["/app/runtime/status/changed"],
29
+ "authority": "host"
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "manifest": "mhome.messaging.targets.v1",
3
+ "contractVersion": "1.0.0",
4
+ "requestTargets": [
5
+ "/app/messaging/provider/list",
6
+ "/app/messaging/provider-account/list",
7
+ "/app/messaging/provider-account/update",
8
+ "/app/messaging/provider-account/delete",
9
+ "/app/messaging/provider-account/test",
10
+ "/app/messaging/provider-account/status",
11
+ "/app/messaging/shared-account-grant/create",
12
+ "/app/messaging/shared-account-grant/delete",
13
+ "/app/messaging/shared-account-grant/list",
14
+ "/app/messaging/route/list",
15
+ "/app/messaging/route/update",
16
+ "/app/messaging/route/delete",
17
+ "/app/messaging/setup/options",
18
+ "/app/messaging/setup/start",
19
+ "/app/messaging/setup/status",
20
+ "/app/messaging/surface/list",
21
+ "/app/messaging/surface/dismiss",
22
+ "/app/messaging/surface/bind-code/create",
23
+ "/app/messaging/actor/link-code/create",
24
+ "/app/messaging/actor/link-claim/status",
25
+ "/app/messaging/actor/link-claim/confirm",
26
+ "/app/messaging/actor/link/list",
27
+ "/app/messaging/actor/link/delete"
28
+ ],
29
+ "responseTargets": [
30
+ "/app/messaging/provider/list",
31
+ "/app/messaging/provider-account/list",
32
+ "/app/messaging/provider-account/update",
33
+ "/app/messaging/provider-account/delete",
34
+ "/app/messaging/provider-account/test",
35
+ "/app/messaging/provider-account/status",
36
+ "/app/messaging/shared-account-grant/create",
37
+ "/app/messaging/shared-account-grant/delete",
38
+ "/app/messaging/shared-account-grant/list",
39
+ "/app/messaging/route/list",
40
+ "/app/messaging/route/update",
41
+ "/app/messaging/route/delete",
42
+ "/app/messaging/setup/options",
43
+ "/app/messaging/setup/start",
44
+ "/app/messaging/setup/status",
45
+ "/app/messaging/surface/list",
46
+ "/app/messaging/surface/dismiss",
47
+ "/app/messaging/surface/bind-code/create",
48
+ "/app/messaging/actor/link-code/create",
49
+ "/app/messaging/actor/link-claim/status",
50
+ "/app/messaging/actor/link-claim/confirm",
51
+ "/app/messaging/actor/link/list",
52
+ "/app/messaging/actor/link/delete"
53
+ ],
54
+ "eventTargets": [
55
+ "/app/messaging/actor/link-claim/changed"
56
+ ]
57
+ }