@my-swu/simulator-client 0.1.2 → 0.1.3

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 (75) hide show
  1. package/README.md +1 -1
  2. package/dist/connection.js +2 -3
  3. package/dist/generated/index.d.ts +10 -0
  4. package/dist/generated/schemas.d.ts +1 -1
  5. package/dist/generated/schemas.js +466 -59
  6. package/dist/generated/types/admin-match-debug-bundle.d.ts +1 -0
  7. package/dist/generated/types/admin-match-debug-bundle.js +2 -0
  8. package/dist/generated/types/admin-match-list-response.d.ts +1 -0
  9. package/dist/generated/types/admin-match-list-response.js +2 -0
  10. package/dist/generated/types/admin-match-replay-response.d.ts +1 -0
  11. package/dist/generated/types/admin-match-replay-response.js +2 -0
  12. package/dist/generated/types/common.d.ts +143 -15
  13. package/dist/generated/types/create-match-history-replay-share-request.d.ts +1 -0
  14. package/dist/generated/types/create-match-history-replay-share-request.js +2 -0
  15. package/dist/generated/types/create-match-history-replay-share-response.d.ts +1 -0
  16. package/dist/generated/types/create-match-history-replay-share-response.js +2 -0
  17. package/dist/generated/types/inactive-match-recovery-request.d.ts +1 -0
  18. package/dist/generated/types/inactive-match-recovery-request.js +2 -0
  19. package/dist/generated/types/inactive-match-recovery-response.d.ts +1 -0
  20. package/dist/generated/types/inactive-match-recovery-response.js +2 -0
  21. package/dist/generated/types/match-access-recovery-request.d.ts +1 -0
  22. package/dist/generated/types/match-access-recovery-request.js +2 -0
  23. package/dist/generated/types/match-access-recovery-response.d.ts +1 -0
  24. package/dist/generated/types/match-access-recovery-response.js +2 -0
  25. package/dist/generated/types/match-recovery-request.d.ts +1 -0
  26. package/dist/generated/types/match-recovery-request.js +2 -0
  27. package/dist/generated/types/match-recovery-response.d.ts +1 -0
  28. package/dist/generated/types/match-recovery-response.js +2 -0
  29. package/dist/generated/types/shared-match-history-replay-response.d.ts +1 -0
  30. package/dist/generated/types/shared-match-history-replay-response.js +2 -0
  31. package/dist/generated/version.d.ts +1 -1
  32. package/dist/generated/version.js +1 -1
  33. package/dist/index.d.ts +3 -3
  34. package/dist/internal/match-history.d.ts +5 -0
  35. package/dist/internal/match-history.js +8 -0
  36. package/dist/local/engine.d.ts +2 -0
  37. package/dist/local/server/http-router.js +10 -0
  38. package/dist/local/wasm-engine.d.ts +1 -0
  39. package/dist/local/wasm-engine.js +1 -0
  40. package/dist/match-session/controller.d.ts +1 -0
  41. package/dist/match-session/controller.js +56 -17
  42. package/dist/match-session/methods.d.ts +8 -0
  43. package/dist/match-session/session-state.d.ts +5 -1
  44. package/dist/match-session/types.d.ts +1 -1
  45. package/dist/match-session.d.ts +1 -1
  46. package/dist/resources/admin.d.ts +14 -1
  47. package/dist/resources/admin.js +21 -0
  48. package/dist/resources/lobby-types.d.ts +4 -4
  49. package/dist/resources/match-history.d.ts +14 -1
  50. package/dist/resources/match-history.js +16 -0
  51. package/dist/resources/match-types.d.ts +11 -2
  52. package/dist/resources/matches.js +10 -0
  53. package/dist/validators.d.ts +11 -1
  54. package/package.json +1 -1
  55. package/schema/add-lobby-ai-player-request.schema.json +7 -0
  56. package/schema/admin-match-debug-bundle.schema.json +48 -0
  57. package/schema/admin-match-list-response.schema.json +23 -0
  58. package/schema/admin-match-replay-response.schema.json +14 -0
  59. package/schema/common.schema.json +176 -27
  60. package/schema/create-limited-event-request.schema.json +2 -4
  61. package/schema/create-lobby-request.schema.json +4 -8
  62. package/schema/create-match-history-replay-share-request.schema.json +22 -0
  63. package/schema/create-match-history-replay-share-response.schema.json +15 -0
  64. package/schema/create-match-request.schema.json +2 -3
  65. package/schema/create-tournament-room-request.schema.json +4 -8
  66. package/schema/limited-event-preflight-response.schema.json +1 -3
  67. package/schema/manifest.json +11 -1
  68. package/schema/match-access-recovery-request.schema.json +17 -0
  69. package/schema/match-access-recovery-response.schema.json +36 -0
  70. package/schema/match-access-response.schema.json +1 -3
  71. package/schema/match-history-entry.schema.json +1 -3
  72. package/schema/match-recovery-request.schema.json +33 -0
  73. package/schema/match-recovery-response.schema.json +36 -0
  74. package/schema/route-manifest.json +92 -0
  75. package/schema/shared-match-history-replay-response.schema.json +14 -0
@@ -997,6 +997,70 @@
997
997
  "description"
998
998
  ]
999
999
  },
1000
+ "AdminMatchSummary": {
1001
+ "description": "Compact durable match data safe for an administrator list view.",
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "completedAtMs": {
1005
+ "type": [
1006
+ "integer",
1007
+ "null"
1008
+ ],
1009
+ "format": "uint64",
1010
+ "minimum": 0
1011
+ },
1012
+ "createdAtMs": {
1013
+ "type": "integer",
1014
+ "format": "uint64",
1015
+ "minimum": 0
1016
+ },
1017
+ "format": {
1018
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/MatchFormat"
1019
+ },
1020
+ "historyId": {
1021
+ "type": "string",
1022
+ "format": "uuid"
1023
+ },
1024
+ "players": {
1025
+ "type": "array",
1026
+ "items": {
1027
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/MatchHistoryPlayerSummary"
1028
+ }
1029
+ },
1030
+ "replayAvailable": {
1031
+ "type": "boolean"
1032
+ },
1033
+ "result": true,
1034
+ "section": {
1035
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistorySection"
1036
+ },
1037
+ "series": true,
1038
+ "sourceMatchId": {
1039
+ "type": "string",
1040
+ "format": "uuid"
1041
+ },
1042
+ "status": {
1043
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistoryStatus"
1044
+ },
1045
+ "updatedAtMs": {
1046
+ "type": "integer",
1047
+ "format": "uint64",
1048
+ "minimum": 0
1049
+ }
1050
+ },
1051
+ "required": [
1052
+ "historyId",
1053
+ "sourceMatchId",
1054
+ "section",
1055
+ "status",
1056
+ "format",
1057
+ "players",
1058
+ "series",
1059
+ "createdAtMs",
1060
+ "updatedAtMs",
1061
+ "replayAvailable"
1062
+ ]
1063
+ },
1000
1064
  "AiDifficulty": {
1001
1065
  "description": "Public difficulty presets. Internal tuning (iteration counts, time\nbudgets) lives in `crate::r#match::registry::ai_factory` so it can be\nadjusted without changing the SDK surface.",
1002
1066
  "oneOf": [
@@ -7336,6 +7400,7 @@
7336
7400
  "type": "string",
7337
7401
  "enum": [
7338
7402
  "completedSeries",
7403
+ "abandoned",
7339
7404
  "unsupportedSection",
7340
7405
  "learnScenario",
7341
7406
  "invalidAiTopology",
@@ -7353,11 +7418,23 @@
7353
7418
  ]
7354
7419
  },
7355
7420
  "HistoryStatus": {
7356
- "description": "Durable history entry status.",
7357
- "type": "string",
7358
- "enum": [
7359
- "saved",
7360
- "result"
7421
+ "description": "Durable history entry status.\n\nLives here rather than the `server-protocol`-gated history module because\n`MatchRuntimeRecord` embeds it in every build, including wasm and bench.",
7422
+ "oneOf": [
7423
+ {
7424
+ "description": "Live checkpoint that can still be resumed when policy allows.",
7425
+ "type": "string",
7426
+ "const": "saved"
7427
+ },
7428
+ {
7429
+ "description": "Game or series reached its ordinary terminal result.",
7430
+ "type": "string",
7431
+ "const": "result"
7432
+ },
7433
+ {
7434
+ "description": "Host intentionally retired an unfinished Solo-versus-AI runtime.",
7435
+ "type": "string",
7436
+ "const": "abandoned"
7437
+ }
7361
7438
  ]
7362
7439
  },
7363
7440
  "InitiativeChoiceReason": {
@@ -8890,11 +8967,9 @@
8890
8967
  "matchSeed": {
8891
8968
  "description": "Fixed match seed when configured.",
8892
8969
  "type": [
8893
- "integer",
8970
+ "string",
8894
8971
  "null"
8895
- ],
8896
- "format": "uint64",
8897
- "minimum": 0
8972
+ ]
8898
8973
  },
8899
8974
  "matchmaking": {
8900
8975
  "anyOf": [
@@ -8909,11 +8984,9 @@
8909
8984
  "packSeed": {
8910
8985
  "description": "Fixed limited pack/leader seed when configured.",
8911
8986
  "type": [
8912
- "integer",
8987
+ "string",
8913
8988
  "null"
8914
- ],
8915
- "format": "uint64",
8916
- "minimum": 0
8989
+ ]
8917
8990
  },
8918
8991
  "players": {
8919
8992
  "type": "array",
@@ -9119,9 +9192,7 @@
9119
9192
  },
9120
9193
  "replaySeed": {
9121
9194
  "description": "Resolved seed for a private solo-vs-AI match. Never projected in live state.",
9122
- "type": "integer",
9123
- "format": "uint64",
9124
- "minimum": 0
9195
+ "type": "string"
9125
9196
  },
9126
9197
  "seat": {
9127
9198
  "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/Seat"
@@ -9338,9 +9409,7 @@
9338
9409
  "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistorySection"
9339
9410
  },
9340
9411
  "seed": {
9341
- "type": "integer",
9342
- "format": "uint64",
9343
- "minimum": 0
9412
+ "type": "string"
9344
9413
  },
9345
9414
  "series": true,
9346
9415
  "sourceMatchId": {
@@ -10212,6 +10281,15 @@
10212
10281
  }
10213
10282
  ]
10214
10283
  },
10284
+ "revealedCardIds": {
10285
+ "description": "Publicly revealed cards which caused this instructed attack. Omitted\nfor ordinary attacks and intentionally projected only to chooser.",
10286
+ "type": "array",
10287
+ "items": {
10288
+ "type": "integer",
10289
+ "format": "uint32",
10290
+ "minimum": 0
10291
+ }
10292
+ },
10215
10293
  "sourceCardId": {
10216
10294
  "type": "integer",
10217
10295
  "format": "uint32",
@@ -12487,6 +12565,81 @@
12487
12565
  "available"
12488
12566
  ]
12489
12567
  },
12568
+ "SimulatorReportResponse": {
12569
+ "description": "Full sanitized support bundle returned only by the simulator admin API.",
12570
+ "type": "object",
12571
+ "properties": {
12572
+ "bundle": true,
12573
+ "bundleAvailable": {
12574
+ "type": "boolean"
12575
+ },
12576
+ "failureKind": {
12577
+ "type": "string"
12578
+ },
12579
+ "firstOccurredAtMs": {
12580
+ "type": "integer",
12581
+ "format": "uint64",
12582
+ "minimum": 0
12583
+ },
12584
+ "matchId": {
12585
+ "type": "string",
12586
+ "format": "uuid"
12587
+ },
12588
+ "message": {
12589
+ "type": "string"
12590
+ },
12591
+ "occurredAtMs": {
12592
+ "type": "integer",
12593
+ "format": "uint64",
12594
+ "minimum": 0
12595
+ },
12596
+ "occurrenceCount": {
12597
+ "type": "integer",
12598
+ "format": "uint32",
12599
+ "minimum": 0
12600
+ },
12601
+ "operation": {
12602
+ "type": "string"
12603
+ },
12604
+ "reportId": {
12605
+ "type": "string",
12606
+ "format": "uuid"
12607
+ },
12608
+ "seat": {
12609
+ "anyOf": [
12610
+ {
12611
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/Seat"
12612
+ },
12613
+ {
12614
+ "type": "null"
12615
+ }
12616
+ ]
12617
+ },
12618
+ "snapshotRevision": {
12619
+ "type": [
12620
+ "integer",
12621
+ "null"
12622
+ ],
12623
+ "format": "uint64",
12624
+ "minimum": 0
12625
+ },
12626
+ "source": {
12627
+ "type": "string"
12628
+ }
12629
+ },
12630
+ "required": [
12631
+ "reportId",
12632
+ "firstOccurredAtMs",
12633
+ "occurredAtMs",
12634
+ "occurrenceCount",
12635
+ "matchId",
12636
+ "source",
12637
+ "operation",
12638
+ "failureKind",
12639
+ "bundleAvailable",
12640
+ "message"
12641
+ ]
12642
+ },
12490
12643
  "SimulatorReportSummary": {
12491
12644
  "description": "Metadata safe to return in administrator report lists.",
12492
12645
  "type": "object",
@@ -13480,20 +13633,16 @@
13480
13633
  "matchSeed": {
13481
13634
  "description": "Fixed duel match seed when configured.",
13482
13635
  "type": [
13483
- "integer",
13636
+ "string",
13484
13637
  "null"
13485
- ],
13486
- "format": "uint64",
13487
- "minimum": 0
13638
+ ]
13488
13639
  },
13489
13640
  "packSeed": {
13490
13641
  "description": "Fixed limited pack/leader seed when configured.",
13491
13642
  "type": [
13492
- "integer",
13643
+ "string",
13493
13644
  "null"
13494
- ],
13495
- "format": "uint64",
13496
- "minimum": 0
13645
+ ]
13497
13646
  },
13498
13647
  "players": {
13499
13648
  "type": "array",
@@ -39,11 +39,9 @@
39
39
  "seed": {
40
40
  "description": "Optional deterministic seed for generated boosters and draft leaders.",
41
41
  "type": [
42
- "integer",
42
+ "string",
43
43
  "null"
44
- ],
45
- "format": "uint64",
46
- "minimum": 0
44
+ ]
47
45
  },
48
46
  "setCode": {
49
47
  "description": "Set code used for booster generation.",
@@ -37,20 +37,16 @@
37
37
  "matchSeed": {
38
38
  "description": "Optional deterministic seed reused for limited duel matches.",
39
39
  "type": [
40
- "integer",
40
+ "string",
41
41
  "null"
42
- ],
43
- "format": "uint64",
44
- "minimum": 0
42
+ ]
45
43
  },
46
44
  "packSeed": {
47
45
  "description": "Optional deterministic seed for limited pack/leader generation.",
48
46
  "type": [
49
- "integer",
47
+ "string",
50
48
  "null"
51
- ],
52
- "format": "uint64",
53
- "minimum": 0
49
+ ]
54
50
  },
55
51
  "visibility": {
56
52
  "description": "Whether the lobby should appear in public browsing surfaces.",
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "CreateMatchHistoryReplayShareRequest",
4
+ "description": "Participant-authorized request to create one permanent replay-share link.",
5
+ "type": "object",
6
+ "properties": {
7
+ "identities": {
8
+ "type": "array",
9
+ "items": {
10
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistoryIdentityInput"
11
+ }
12
+ },
13
+ "includeHiddenInformation": {
14
+ "description": "Whether this capability may retrieve post-match private-zone views.",
15
+ "type": "boolean"
16
+ }
17
+ },
18
+ "required": [
19
+ "identities",
20
+ "includeHiddenInformation"
21
+ ]
22
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "CreateMatchHistoryReplayShareResponse",
4
+ "description": "Opaque capability returned after a participant creates a replay share.",
5
+ "type": "object",
6
+ "properties": {
7
+ "shareToken": {
8
+ "type": "string",
9
+ "format": "uuid"
10
+ }
11
+ },
12
+ "required": [
13
+ "shareToken"
14
+ ]
15
+ }
@@ -104,11 +104,10 @@
104
104
  "seed": {
105
105
  "description": "Optional deterministic match seed.",
106
106
  "type": [
107
- "integer",
107
+ "string",
108
108
  "null"
109
109
  ],
110
- "format": "uint64",
111
- "minimum": 0
110
+ "default": null
112
111
  }
113
112
  },
114
113
  "additionalProperties": false,
@@ -48,20 +48,16 @@
48
48
  "matchSeed": {
49
49
  "description": "Optional deterministic seed reused for every duel table match.",
50
50
  "type": [
51
- "integer",
51
+ "string",
52
52
  "null"
53
- ],
54
- "format": "uint64",
55
- "minimum": 0
53
+ ]
56
54
  },
57
55
  "packSeed": {
58
56
  "description": "Optional deterministic seed for limited pack/leader generation.",
59
57
  "type": [
60
- "integer",
58
+ "string",
61
59
  "null"
62
- ],
63
- "format": "uint64",
64
- "minimum": 0
60
+ ]
65
61
  },
66
62
  "pickTimerEnabled": {
67
63
  "description": "Enables the per-pick countdown with auto-pick on timeout (draft only).",
@@ -13,9 +13,7 @@
13
13
  },
14
14
  "seed": {
15
15
  "description": "Deterministic seed used by successful creation after this check.",
16
- "type": "integer",
17
- "format": "uint64",
18
- "minimum": 0
16
+ "type": "string"
19
17
  }
20
18
  },
21
19
  "required": [
@@ -1,6 +1,9 @@
1
1
  {
2
- "version": "ab26122fba623256a421399b458338eb67af059d2240ba7b1594c6116d6fc030",
2
+ "version": "e4a6c8c3043fdb5779d215ad8f673458da5a45bd6d196f0dbd5cc721aa189045",
3
3
  "files": [
4
+ "admin-match-list-response.schema.json",
5
+ "admin-match-debug-bundle.schema.json",
6
+ "admin-match-replay-response.schema.json",
4
7
  "simulator-report-list-response.schema.json",
5
8
  "simulator-report-response.schema.json",
6
9
  "health-response.schema.json",
@@ -101,9 +104,16 @@
101
104
  "match-history-entry.schema.json",
102
105
  "match-history-replay-request.schema.json",
103
106
  "match-history-replay-response.schema.json",
107
+ "create-match-history-replay-share-request.schema.json",
108
+ "create-match-history-replay-share-response.schema.json",
109
+ "shared-match-history-replay-response.schema.json",
104
110
  "match-chat-lookup-response.schema.json",
105
111
  "match-history-restore-request.schema.json",
106
112
  "restore-history-response.schema.json",
113
+ "match-recovery-request.schema.json",
114
+ "match-recovery-response.schema.json",
115
+ "match-access-recovery-request.schema.json",
116
+ "match-access-recovery-response.schema.json",
107
117
  "cards-response.schema.json",
108
118
  "resolve-card-ids-request.schema.json",
109
119
  "resolve-card-ids-response.schema.json",
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MatchAccessRecoveryRequest",
4
+ "description": "Ownership proof used to recover current access for one live Solo-versus-AI\nmatch when browser-stored seat credentials are stale.",
5
+ "type": "object",
6
+ "properties": {
7
+ "identities": {
8
+ "type": "array",
9
+ "items": {
10
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistoryIdentityInput"
11
+ }
12
+ }
13
+ },
14
+ "required": [
15
+ "identities"
16
+ ]
17
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MatchAccessRecoveryResponse",
4
+ "description": "Result of recovering current private access for a live Solo-versus-AI match.\n\n`Unavailable` deliberately combines unknown, unauthorized, inactive, and\nineligible matches so this endpoint cannot be used to probe match state.",
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "properties": {
9
+ "access": {
10
+ "description": "Current private host capability for the existing live runtime.",
11
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/MatchAccessResponse"
12
+ },
13
+ "kind": {
14
+ "type": "string",
15
+ "const": "recovered"
16
+ }
17
+ },
18
+ "required": [
19
+ "kind",
20
+ "access"
21
+ ]
22
+ },
23
+ {
24
+ "type": "object",
25
+ "properties": {
26
+ "kind": {
27
+ "type": "string",
28
+ "const": "unavailable"
29
+ }
30
+ },
31
+ "required": [
32
+ "kind"
33
+ ]
34
+ }
35
+ ]
36
+ }
@@ -9,9 +9,7 @@
9
9
  },
10
10
  "replaySeed": {
11
11
  "description": "Resolved seed for a private solo-vs-AI match. Never projected in live state.",
12
- "type": "integer",
13
- "format": "uint64",
14
- "minimum": 0
12
+ "type": "string"
15
13
  },
16
14
  "seat": {
17
15
  "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/Seat"
@@ -43,9 +43,7 @@
43
43
  "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistorySection"
44
44
  },
45
45
  "seed": {
46
- "type": "integer",
47
- "format": "uint64",
48
- "minimum": 0
46
+ "type": "string"
49
47
  },
50
48
  "series": true,
51
49
  "sourceMatchId": {
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MatchRecoveryRequest",
4
+ "description": "Request to restore an unfinished Solo-versus-AI match whose original live\nruntime is no longer available.",
5
+ "type": "object",
6
+ "properties": {
7
+ "identities": {
8
+ "type": "array",
9
+ "items": {
10
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistoryIdentityInput"
11
+ }
12
+ },
13
+ "restoreRequestId": {
14
+ "description": "Stable browser-generated id that makes recovery retries idempotent.",
15
+ "type": "string",
16
+ "format": "uuid"
17
+ },
18
+ "section": {
19
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/HistorySection"
20
+ },
21
+ "sourceMatchId": {
22
+ "description": "Id of the original runtime, never a public history id.",
23
+ "type": "string",
24
+ "format": "uuid"
25
+ }
26
+ },
27
+ "required": [
28
+ "sourceMatchId",
29
+ "section",
30
+ "identities",
31
+ "restoreRequestId"
32
+ ]
33
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MatchRecoveryResponse",
4
+ "description": "Result of looking up a lost-runtime recovery source.\n\n`Unavailable` intentionally combines unknown, unauthorized, live, and\nineligible sources so callers cannot probe match lifecycle metadata.",
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "properties": {
9
+ "access": {
10
+ "description": "Fresh host capability for the restored runtime.",
11
+ "$ref": "https://simulator-sdk.my-swu.com/schema/common.json#/$defs/MatchAccessResponse"
12
+ },
13
+ "kind": {
14
+ "type": "string",
15
+ "const": "restored"
16
+ }
17
+ },
18
+ "required": [
19
+ "kind",
20
+ "access"
21
+ ]
22
+ },
23
+ {
24
+ "type": "object",
25
+ "properties": {
26
+ "kind": {
27
+ "type": "string",
28
+ "const": "unavailable"
29
+ }
30
+ },
31
+ "required": [
32
+ "kind"
33
+ ]
34
+ }
35
+ ]
36
+ }