@pellux/goodvibes-contracts 1.14.0 → 1.16.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.
@@ -2,8 +2,8 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "GoodVibes Operator API",
5
- "version": "1.14.0",
6
- "description": "Generated from the operator contract (packages/contracts/artifacts/operator-contract.json). 415 cataloged methods: 364 with dedicated REST bindings, 51 reachable only through the generic invoke endpoint. 97 methods lack typed SDK client IO and are marked with `x-typed-client-io: false` — they are represented honestly, never omitted. Regenerate with `bun run openapi:generate`; drift fails `contracts:check`."
5
+ "version": "1.16.0",
6
+ "description": "Generated from the operator contract (packages/contracts/artifacts/operator-contract.json). 419 cataloged methods: 368 with dedicated REST bindings, 51 reachable only through the generic invoke endpoint. 97 methods lack typed SDK client IO and are marked with `x-typed-client-io: false` — they are represented honestly, never omitted. Regenerate with `bun run openapi:generate`; drift fails `contracts:check`."
7
7
  },
8
8
  "servers": [
9
9
  {
@@ -26622,6 +26622,15 @@
26622
26622
  "items": {}
26623
26623
  }
26624
26624
  ]
26625
+ },
26626
+ "persistedTo": {
26627
+ "type": "string"
26628
+ },
26629
+ "tier": {
26630
+ "type": "string"
26631
+ },
26632
+ "daemonOwned": {
26633
+ "type": "boolean"
26625
26634
  }
26626
26635
  },
26627
26636
  "required": [
@@ -68977,7 +68986,8 @@
68977
68986
  "status.request",
68978
68987
  "location.request",
68979
68988
  "session.message",
68980
- "automation.run"
68989
+ "automation.run",
68990
+ "device.capability"
68981
68991
  ]
68982
68992
  }
68983
68993
  },
@@ -70259,7 +70269,8 @@
70259
70269
  "status.request",
70260
70270
  "location.request",
70261
70271
  "session.message",
70262
- "automation.run"
70272
+ "automation.run",
70273
+ "device.capability"
70263
70274
  ]
70264
70275
  },
70265
70276
  "command": {
@@ -71967,7 +71978,8 @@
71967
71978
  "status.request",
71968
71979
  "location.request",
71969
71980
  "session.message",
71970
- "automation.run"
71981
+ "automation.run",
71982
+ "device.capability"
71971
71983
  ]
71972
71984
  },
71973
71985
  "command": {
@@ -72349,7 +72361,8 @@
72349
72361
  "status.request",
72350
72362
  "location.request",
72351
72363
  "session.message",
72352
- "automation.run"
72364
+ "automation.run",
72365
+ "device.capability"
72353
72366
  ]
72354
72367
  },
72355
72368
  "command": {
@@ -72667,7 +72680,8 @@
72667
72680
  "status.request",
72668
72681
  "location.request",
72669
72682
  "session.message",
72670
- "automation.run"
72683
+ "automation.run",
72684
+ "device.capability"
72671
72685
  ]
72672
72686
  },
72673
72687
  "command": {
@@ -74026,6 +74040,588 @@
74026
74040
  ]
74027
74041
  }
74028
74042
  },
74043
+ "/api/devices/grants": {
74044
+ "get": {
74045
+ "operationId": "devices.grants.list",
74046
+ "summary": "List Device Capability Grants",
74047
+ "description": "The durable \"always allow\" grants a person gave, per capability and per device, with when each was granted, when it expires, and how often it has been used — plus the recent ledger of grants given, used, revoked, and expired.",
74048
+ "tags": [
74049
+ "runtime"
74050
+ ],
74051
+ "responses": {
74052
+ "200": {
74053
+ "description": "Success",
74054
+ "content": {
74055
+ "application/json": {
74056
+ "schema": {
74057
+ "type": "object",
74058
+ "properties": {
74059
+ "grants": {
74060
+ "type": "array",
74061
+ "items": {
74062
+ "type": "object",
74063
+ "properties": {
74064
+ "grantId": {
74065
+ "type": "string"
74066
+ },
74067
+ "nodeId": {
74068
+ "type": "string"
74069
+ },
74070
+ "nodeKind": {
74071
+ "type": "string"
74072
+ },
74073
+ "capabilityId": {
74074
+ "type": "string"
74075
+ },
74076
+ "capabilityTitle": {
74077
+ "type": "string"
74078
+ },
74079
+ "scope": {
74080
+ "type": "string"
74081
+ },
74082
+ "grantedAt": {
74083
+ "type": "number"
74084
+ },
74085
+ "expiresAt": {
74086
+ "type": "number"
74087
+ },
74088
+ "lastUsedAt": {
74089
+ "anyOf": [
74090
+ {
74091
+ "type": "number"
74092
+ },
74093
+ {
74094
+ "type": "null"
74095
+ }
74096
+ ]
74097
+ },
74098
+ "useCount": {
74099
+ "type": "number"
74100
+ },
74101
+ "grantedBy": {
74102
+ "type": "string"
74103
+ }
74104
+ },
74105
+ "required": [
74106
+ "grantId",
74107
+ "nodeId",
74108
+ "nodeKind",
74109
+ "capabilityId",
74110
+ "capabilityTitle",
74111
+ "scope",
74112
+ "grantedAt",
74113
+ "expiresAt",
74114
+ "lastUsedAt",
74115
+ "useCount",
74116
+ "grantedBy"
74117
+ ],
74118
+ "additionalProperties": false
74119
+ }
74120
+ },
74121
+ "audit": {
74122
+ "type": "array",
74123
+ "items": {
74124
+ "type": "object",
74125
+ "properties": {
74126
+ "id": {
74127
+ "type": "string"
74128
+ },
74129
+ "action": {
74130
+ "type": "string"
74131
+ },
74132
+ "grantId": {
74133
+ "type": "string"
74134
+ },
74135
+ "nodeId": {
74136
+ "type": "string"
74137
+ },
74138
+ "capabilityId": {
74139
+ "type": "string"
74140
+ },
74141
+ "at": {
74142
+ "type": "number"
74143
+ },
74144
+ "actor": {
74145
+ "type": "string"
74146
+ },
74147
+ "reason": {
74148
+ "type": "string"
74149
+ }
74150
+ },
74151
+ "required": [
74152
+ "id",
74153
+ "action",
74154
+ "grantId",
74155
+ "nodeId",
74156
+ "capabilityId",
74157
+ "at",
74158
+ "actor",
74159
+ "reason"
74160
+ ],
74161
+ "additionalProperties": false
74162
+ }
74163
+ }
74164
+ },
74165
+ "required": [
74166
+ "grants",
74167
+ "audit"
74168
+ ],
74169
+ "additionalProperties": false
74170
+ }
74171
+ }
74172
+ }
74173
+ },
74174
+ "default": {
74175
+ "$ref": "#/components/responses/Error"
74176
+ }
74177
+ },
74178
+ "x-typed-client-io": true,
74179
+ "x-access": "authenticated",
74180
+ "x-transport": [
74181
+ "http",
74182
+ "ws"
74183
+ ],
74184
+ "x-scopes": [
74185
+ "read:remote"
74186
+ ],
74187
+ "parameters": [
74188
+ {
74189
+ "name": "nodeId",
74190
+ "in": "query",
74191
+ "required": false,
74192
+ "schema": {
74193
+ "type": "string"
74194
+ }
74195
+ },
74196
+ {
74197
+ "name": "limit",
74198
+ "in": "query",
74199
+ "required": false,
74200
+ "schema": {
74201
+ "type": "number"
74202
+ }
74203
+ }
74204
+ ]
74205
+ }
74206
+ },
74207
+ "/api/devices/grants/revoke": {
74208
+ "post": {
74209
+ "operationId": "devices.grants.revoke",
74210
+ "summary": "Revoke a Device Capability Grant",
74211
+ "description": "Delete durable grants by grant id, by device, by capability, or any combination. Revoked grants are removed rather than flagged, so the next request for that capability asks the person again. Returns exactly what was removed.",
74212
+ "tags": [
74213
+ "runtime"
74214
+ ],
74215
+ "responses": {
74216
+ "200": {
74217
+ "description": "Success",
74218
+ "content": {
74219
+ "application/json": {
74220
+ "schema": {
74221
+ "type": "object",
74222
+ "properties": {
74223
+ "revoked": {
74224
+ "type": "number"
74225
+ },
74226
+ "removals": {
74227
+ "type": "array",
74228
+ "items": {
74229
+ "type": "object",
74230
+ "properties": {
74231
+ "grantId": {
74232
+ "type": "string"
74233
+ },
74234
+ "nodeId": {
74235
+ "type": "string"
74236
+ },
74237
+ "capabilityId": {
74238
+ "type": "string"
74239
+ },
74240
+ "scope": {
74241
+ "type": "string"
74242
+ },
74243
+ "reason": {
74244
+ "type": "string"
74245
+ },
74246
+ "removedAt": {
74247
+ "type": "number"
74248
+ }
74249
+ },
74250
+ "required": [
74251
+ "grantId",
74252
+ "nodeId",
74253
+ "capabilityId",
74254
+ "scope",
74255
+ "reason",
74256
+ "removedAt"
74257
+ ],
74258
+ "additionalProperties": false
74259
+ }
74260
+ }
74261
+ },
74262
+ "required": [
74263
+ "revoked",
74264
+ "removals"
74265
+ ],
74266
+ "additionalProperties": false
74267
+ }
74268
+ }
74269
+ }
74270
+ },
74271
+ "default": {
74272
+ "$ref": "#/components/responses/Error"
74273
+ }
74274
+ },
74275
+ "x-typed-client-io": true,
74276
+ "x-access": "authenticated",
74277
+ "x-transport": [
74278
+ "http",
74279
+ "ws"
74280
+ ],
74281
+ "x-scopes": [
74282
+ "write:config"
74283
+ ],
74284
+ "requestBody": {
74285
+ "required": true,
74286
+ "content": {
74287
+ "application/json": {
74288
+ "schema": {
74289
+ "type": "object",
74290
+ "properties": {
74291
+ "grantId": {
74292
+ "type": "string"
74293
+ },
74294
+ "nodeId": {
74295
+ "type": "string"
74296
+ },
74297
+ "capabilityId": {
74298
+ "type": "string"
74299
+ },
74300
+ "note": {
74301
+ "type": "string"
74302
+ }
74303
+ },
74304
+ "additionalProperties": false
74305
+ }
74306
+ }
74307
+ }
74308
+ }
74309
+ }
74310
+ },
74311
+ "/api/devices/housekeeping": {
74312
+ "post": {
74313
+ "operationId": "devices.housekeeping.run",
74314
+ "summary": "Run Device Housekeeping",
74315
+ "description": "Sweep the device grants ledger and the retained captures now: expired and orphaned grants removed, captures past their retention window deleted, torn or missing capture files reaped. Returns the itemised disclosure of everything removed and why.",
74316
+ "tags": [
74317
+ "runtime"
74318
+ ],
74319
+ "responses": {
74320
+ "200": {
74321
+ "description": "Success",
74322
+ "content": {
74323
+ "application/json": {
74324
+ "schema": {
74325
+ "type": "object",
74326
+ "properties": {
74327
+ "summary": {
74328
+ "type": "string"
74329
+ },
74330
+ "sweptAt": {
74331
+ "type": "number"
74332
+ },
74333
+ "grantsRemoved": {
74334
+ "type": "array",
74335
+ "items": {
74336
+ "type": "object",
74337
+ "properties": {
74338
+ "grantId": {
74339
+ "type": "string"
74340
+ },
74341
+ "nodeId": {
74342
+ "type": "string"
74343
+ },
74344
+ "capabilityId": {
74345
+ "type": "string"
74346
+ },
74347
+ "scope": {
74348
+ "type": "string"
74349
+ },
74350
+ "reason": {
74351
+ "type": "string"
74352
+ },
74353
+ "removedAt": {
74354
+ "type": "number"
74355
+ }
74356
+ },
74357
+ "required": [
74358
+ "grantId",
74359
+ "nodeId",
74360
+ "capabilityId",
74361
+ "scope",
74362
+ "reason",
74363
+ "removedAt"
74364
+ ],
74365
+ "additionalProperties": false
74366
+ }
74367
+ },
74368
+ "grantsRetained": {
74369
+ "type": "number"
74370
+ },
74371
+ "capturesRemoved": {
74372
+ "type": "array",
74373
+ "items": {
74374
+ "type": "object",
74375
+ "properties": {
74376
+ "artifactId": {
74377
+ "type": "string"
74378
+ },
74379
+ "nodeId": {
74380
+ "type": "string"
74381
+ },
74382
+ "capabilityId": {
74383
+ "type": "string"
74384
+ },
74385
+ "fileName": {
74386
+ "type": "string"
74387
+ },
74388
+ "reason": {
74389
+ "type": "string"
74390
+ },
74391
+ "removedAt": {
74392
+ "type": "number"
74393
+ },
74394
+ "byteLength": {
74395
+ "type": "number"
74396
+ }
74397
+ },
74398
+ "required": [
74399
+ "artifactId",
74400
+ "nodeId",
74401
+ "capabilityId",
74402
+ "fileName",
74403
+ "reason",
74404
+ "removedAt",
74405
+ "byteLength"
74406
+ ],
74407
+ "additionalProperties": false
74408
+ }
74409
+ },
74410
+ "capturesRetained": {
74411
+ "type": "number"
74412
+ },
74413
+ "bytesReclaimed": {
74414
+ "type": "number"
74415
+ }
74416
+ },
74417
+ "required": [
74418
+ "summary",
74419
+ "sweptAt",
74420
+ "grantsRemoved",
74421
+ "grantsRetained",
74422
+ "capturesRemoved",
74423
+ "capturesRetained",
74424
+ "bytesReclaimed"
74425
+ ],
74426
+ "additionalProperties": false
74427
+ }
74428
+ }
74429
+ }
74430
+ },
74431
+ "default": {
74432
+ "$ref": "#/components/responses/Error"
74433
+ }
74434
+ },
74435
+ "x-typed-client-io": true,
74436
+ "x-access": "authenticated",
74437
+ "x-transport": [
74438
+ "http",
74439
+ "ws"
74440
+ ],
74441
+ "x-scopes": [
74442
+ "write:config"
74443
+ ],
74444
+ "requestBody": {
74445
+ "required": true,
74446
+ "content": {
74447
+ "application/json": {
74448
+ "schema": {
74449
+ "type": "object",
74450
+ "properties": {},
74451
+ "additionalProperties": false
74452
+ }
74453
+ }
74454
+ }
74455
+ }
74456
+ }
74457
+ },
74458
+ "/api/devices/nodes": {
74459
+ "get": {
74460
+ "operationId": "devices.nodes.list",
74461
+ "summary": "List Paired Device Nodes",
74462
+ "description": "Every phone paired as a device node, with the capabilities it announced, the ones it did not offer, and the ones it announced but cannot currently serve because its connection is not a secure context. Node-kind neutral: a web app node and a native app node are described identically.",
74463
+ "tags": [
74464
+ "runtime"
74465
+ ],
74466
+ "responses": {
74467
+ "200": {
74468
+ "description": "Success",
74469
+ "content": {
74470
+ "application/json": {
74471
+ "schema": {
74472
+ "type": "object",
74473
+ "properties": {
74474
+ "nodes": {
74475
+ "type": "array",
74476
+ "items": {
74477
+ "type": "object",
74478
+ "properties": {
74479
+ "nodeId": {
74480
+ "type": "string"
74481
+ },
74482
+ "nodeKind": {
74483
+ "type": "string"
74484
+ },
74485
+ "nodeKindLabel": {
74486
+ "type": "string"
74487
+ },
74488
+ "label": {
74489
+ "type": "string"
74490
+ },
74491
+ "platform": {
74492
+ "type": "string"
74493
+ },
74494
+ "appVersion": {
74495
+ "type": "string"
74496
+ },
74497
+ "contractVersion": {
74498
+ "type": "number"
74499
+ },
74500
+ "contractCompatible": {
74501
+ "type": "boolean"
74502
+ },
74503
+ "supported": {
74504
+ "type": "array",
74505
+ "items": {
74506
+ "type": "string"
74507
+ }
74508
+ },
74509
+ "undeclared": {
74510
+ "type": "array",
74511
+ "items": {
74512
+ "type": "string"
74513
+ }
74514
+ },
74515
+ "gatedBySecureContext": {
74516
+ "type": "array",
74517
+ "items": {
74518
+ "type": "string"
74519
+ }
74520
+ },
74521
+ "unknownDeclared": {
74522
+ "type": "array",
74523
+ "items": {
74524
+ "type": "string"
74525
+ }
74526
+ }
74527
+ },
74528
+ "required": [
74529
+ "nodeId",
74530
+ "nodeKind",
74531
+ "nodeKindLabel",
74532
+ "label",
74533
+ "platform",
74534
+ "appVersion",
74535
+ "contractVersion",
74536
+ "contractCompatible",
74537
+ "supported",
74538
+ "undeclared",
74539
+ "gatedBySecureContext",
74540
+ "unknownDeclared"
74541
+ ],
74542
+ "additionalProperties": false
74543
+ }
74544
+ },
74545
+ "capabilities": {
74546
+ "type": "array",
74547
+ "items": {
74548
+ "type": "object",
74549
+ "properties": {
74550
+ "id": {
74551
+ "type": "string"
74552
+ },
74553
+ "family": {
74554
+ "type": "string"
74555
+ },
74556
+ "title": {
74557
+ "type": "string"
74558
+ },
74559
+ "purpose": {
74560
+ "type": "string"
74561
+ },
74562
+ "effect": {
74563
+ "type": "string"
74564
+ },
74565
+ "sensitivity": {
74566
+ "type": "string"
74567
+ },
74568
+ "producesArtifact": {
74569
+ "type": "boolean"
74570
+ },
74571
+ "allowAlwaysOffered": {
74572
+ "type": "boolean"
74573
+ }
74574
+ },
74575
+ "required": [
74576
+ "id",
74577
+ "family",
74578
+ "title",
74579
+ "purpose",
74580
+ "effect",
74581
+ "sensitivity",
74582
+ "producesArtifact",
74583
+ "allowAlwaysOffered"
74584
+ ],
74585
+ "additionalProperties": false
74586
+ }
74587
+ },
74588
+ "mode": {
74589
+ "type": "string"
74590
+ },
74591
+ "allowAlwaysOffer": {
74592
+ "type": "string"
74593
+ },
74594
+ "captureRetentionHours": {
74595
+ "type": "number"
74596
+ }
74597
+ },
74598
+ "required": [
74599
+ "nodes",
74600
+ "capabilities",
74601
+ "mode",
74602
+ "allowAlwaysOffer",
74603
+ "captureRetentionHours"
74604
+ ],
74605
+ "additionalProperties": false
74606
+ }
74607
+ }
74608
+ }
74609
+ },
74610
+ "default": {
74611
+ "$ref": "#/components/responses/Error"
74612
+ }
74613
+ },
74614
+ "x-typed-client-io": true,
74615
+ "x-access": "authenticated",
74616
+ "x-transport": [
74617
+ "http",
74618
+ "ws"
74619
+ ],
74620
+ "x-scopes": [
74621
+ "read:remote"
74622
+ ]
74623
+ }
74624
+ },
74029
74625
  "/api/runtime/metrics": {
74030
74626
  "get": {
74031
74627
  "operationId": "runtime.metrics.get",
@@ -94060,6 +94656,42 @@
94060
94656
  "inputSchemaCoverage": "typed",
94061
94657
  "outputSchemaCoverage": "typed"
94062
94658
  },
94659
+ {
94660
+ "id": "devices.grants.list",
94661
+ "category": "runtime",
94662
+ "access": "authenticated",
94663
+ "rest": "GET /api/devices/grants",
94664
+ "typedClientIo": true,
94665
+ "inputSchemaCoverage": "typed",
94666
+ "outputSchemaCoverage": "typed"
94667
+ },
94668
+ {
94669
+ "id": "devices.grants.revoke",
94670
+ "category": "runtime",
94671
+ "access": "authenticated",
94672
+ "rest": "POST /api/devices/grants/revoke",
94673
+ "typedClientIo": true,
94674
+ "inputSchemaCoverage": "typed",
94675
+ "outputSchemaCoverage": "typed"
94676
+ },
94677
+ {
94678
+ "id": "devices.housekeeping.run",
94679
+ "category": "runtime",
94680
+ "access": "authenticated",
94681
+ "rest": "POST /api/devices/housekeeping",
94682
+ "typedClientIo": true,
94683
+ "inputSchemaCoverage": "typed",
94684
+ "outputSchemaCoverage": "typed"
94685
+ },
94686
+ {
94687
+ "id": "devices.nodes.list",
94688
+ "category": "runtime",
94689
+ "access": "authenticated",
94690
+ "rest": "GET /api/devices/nodes",
94691
+ "typedClientIo": true,
94692
+ "inputSchemaCoverage": "typed",
94693
+ "outputSchemaCoverage": "typed"
94694
+ },
94063
94695
  {
94064
94696
  "id": "runtime.metrics.get",
94065
94697
  "category": "runtime",