@hexis-ai/engram-server 0.2.0 → 0.4.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.
package/openapi.json ADDED
@@ -0,0 +1,1048 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "engram-server",
5
+ "version": "1.0",
6
+ "description": "AI エージェント向けのクロスセッション検索。リクエストボディはサーバーの Zod スキーマ(src/schemas.ts)から導出される。レスポンススキーマは現状ステータスコードのみの記述で、本格的な記述は今後対応予定。"
7
+ },
8
+ "tags": [
9
+ {
10
+ "name": "Me",
11
+ "description": "識別プローブ"
12
+ },
13
+ {
14
+ "name": "Sessions",
15
+ "description": "セッションの作成・取得・イベント追加"
16
+ },
17
+ {
18
+ "name": "Search",
19
+ "description": "ワークスペースコーパスへのスコアリング検索"
20
+ },
21
+ {
22
+ "name": "Persons",
23
+ "description": "person の作成・更新・検索"
24
+ },
25
+ {
26
+ "name": "Workspaces (admin)",
27
+ "description": "ワークスペースの管理(管理者トークン必須)"
28
+ },
29
+ {
30
+ "name": "API Keys (admin)",
31
+ "description": "ワークスペース API キーの発行・無効化(管理者トークン必須)"
32
+ }
33
+ ],
34
+ "servers": [
35
+ {
36
+ "url": "/",
37
+ "description": "デプロイされた engram-server からの相対パス"
38
+ }
39
+ ],
40
+ "security": [
41
+ {
42
+ "workspaceKey": []
43
+ }
44
+ ],
45
+ "components": {
46
+ "securitySchemes": {
47
+ "workspaceKey": {
48
+ "type": "http",
49
+ "scheme": "bearer",
50
+ "description": "ワークスペース API キー(`eng_…`)。`X-Api-Key` ヘッダーでも受け付ける。"
51
+ },
52
+ "adminToken": {
53
+ "type": "apiKey",
54
+ "in": "header",
55
+ "name": "X-Admin-Token",
56
+ "description": "`/admin/v1/*` 用のプラットフォーム管理者トークン。`Authorization: Bearer` でも受け付ける。"
57
+ }
58
+ },
59
+ "schemas": {
60
+ "SessionInit": {
61
+ "type": "object",
62
+ "properties": {
63
+ "id": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "title": {
68
+ "type": "string"
69
+ },
70
+ "channel": {
71
+ "type": "string"
72
+ },
73
+ "participants": {
74
+ "type": "array",
75
+ "items": {
76
+ "type": "string"
77
+ }
78
+ },
79
+ "viewable_by": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string"
83
+ }
84
+ }
85
+ },
86
+ "additionalProperties": false
87
+ },
88
+ "EventBatch": {
89
+ "type": "object",
90
+ "properties": {
91
+ "events": {
92
+ "type": "array",
93
+ "items": {
94
+ "oneOf": [
95
+ {
96
+ "type": "object",
97
+ "properties": {
98
+ "type": {
99
+ "type": "string",
100
+ "const": "step"
101
+ },
102
+ "seq": {
103
+ "type": "integer",
104
+ "minimum": 0,
105
+ "maximum": 9007199254740991
106
+ },
107
+ "at": {
108
+ "type": "string"
109
+ },
110
+ "tool": {
111
+ "type": "string"
112
+ },
113
+ "resources": {
114
+ "type": "array",
115
+ "items": {
116
+ "type": "string"
117
+ }
118
+ }
119
+ },
120
+ "required": [
121
+ "type",
122
+ "seq",
123
+ "at",
124
+ "tool",
125
+ "resources"
126
+ ],
127
+ "additionalProperties": false
128
+ },
129
+ {
130
+ "type": "object",
131
+ "properties": {
132
+ "type": {
133
+ "type": "string",
134
+ "const": "participant"
135
+ },
136
+ "seq": {
137
+ "type": "integer",
138
+ "minimum": 0,
139
+ "maximum": 9007199254740991
140
+ },
141
+ "at": {
142
+ "type": "string"
143
+ },
144
+ "personId": {
145
+ "type": "string"
146
+ }
147
+ },
148
+ "required": [
149
+ "type",
150
+ "seq",
151
+ "at",
152
+ "personId"
153
+ ],
154
+ "additionalProperties": false
155
+ },
156
+ {
157
+ "type": "object",
158
+ "properties": {
159
+ "type": {
160
+ "type": "string",
161
+ "const": "title"
162
+ },
163
+ "seq": {
164
+ "type": "integer",
165
+ "minimum": 0,
166
+ "maximum": 9007199254740991
167
+ },
168
+ "at": {
169
+ "type": "string"
170
+ },
171
+ "title": {
172
+ "type": "string"
173
+ }
174
+ },
175
+ "required": [
176
+ "type",
177
+ "seq",
178
+ "at",
179
+ "title"
180
+ ],
181
+ "additionalProperties": false
182
+ },
183
+ {
184
+ "type": "object",
185
+ "properties": {
186
+ "type": {
187
+ "type": "string",
188
+ "const": "end"
189
+ },
190
+ "seq": {
191
+ "type": "integer",
192
+ "minimum": 0,
193
+ "maximum": 9007199254740991
194
+ },
195
+ "at": {
196
+ "type": "string"
197
+ }
198
+ },
199
+ "required": [
200
+ "type",
201
+ "seq",
202
+ "at"
203
+ ],
204
+ "additionalProperties": false
205
+ }
206
+ ]
207
+ }
208
+ }
209
+ },
210
+ "required": [
211
+ "events"
212
+ ],
213
+ "additionalProperties": false
214
+ },
215
+ "PersonCreate": {
216
+ "type": "object",
217
+ "properties": {
218
+ "display_name": {
219
+ "type": "string"
220
+ }
221
+ },
222
+ "additionalProperties": false
223
+ },
224
+ "PersonUpdate": {
225
+ "type": "object",
226
+ "properties": {
227
+ "display_name": {
228
+ "anyOf": [
229
+ {
230
+ "type": "string"
231
+ },
232
+ {
233
+ "type": "null"
234
+ }
235
+ ]
236
+ }
237
+ },
238
+ "additionalProperties": false
239
+ },
240
+ "SearchRequest": {
241
+ "type": "object",
242
+ "properties": {
243
+ "query": {
244
+ "anyOf": [
245
+ {
246
+ "type": "object",
247
+ "properties": {
248
+ "sessionId": {
249
+ "type": "string",
250
+ "minLength": 1
251
+ }
252
+ },
253
+ "required": [
254
+ "sessionId"
255
+ ],
256
+ "additionalProperties": false
257
+ },
258
+ {
259
+ "type": "object",
260
+ "properties": {
261
+ "session": {
262
+ "type": "object",
263
+ "properties": {
264
+ "steps": {
265
+ "type": "array",
266
+ "items": {
267
+ "type": "object",
268
+ "properties": {
269
+ "tool": {
270
+ "type": "string"
271
+ },
272
+ "resources": {
273
+ "type": "array",
274
+ "items": {
275
+ "type": "string"
276
+ }
277
+ }
278
+ },
279
+ "required": [
280
+ "tool",
281
+ "resources"
282
+ ],
283
+ "additionalProperties": false
284
+ }
285
+ },
286
+ "participants": {
287
+ "type": "array",
288
+ "items": {
289
+ "type": "string"
290
+ }
291
+ }
292
+ },
293
+ "required": [
294
+ "steps"
295
+ ],
296
+ "additionalProperties": false
297
+ }
298
+ },
299
+ "required": [
300
+ "session"
301
+ ],
302
+ "additionalProperties": false
303
+ }
304
+ ]
305
+ },
306
+ "options": {
307
+ "type": "object",
308
+ "propertyNames": {
309
+ "type": "string"
310
+ },
311
+ "additionalProperties": {}
312
+ }
313
+ },
314
+ "required": [
315
+ "query"
316
+ ],
317
+ "additionalProperties": false
318
+ },
319
+ "CreateWorkspace": {
320
+ "type": "object",
321
+ "properties": {
322
+ "id": {
323
+ "type": "string"
324
+ },
325
+ "name": {
326
+ "type": "string"
327
+ },
328
+ "metadata": {
329
+ "type": "object",
330
+ "propertyNames": {
331
+ "type": "string"
332
+ },
333
+ "additionalProperties": {}
334
+ },
335
+ "issueKey": {
336
+ "type": "boolean"
337
+ },
338
+ "keyName": {
339
+ "type": "string"
340
+ }
341
+ },
342
+ "additionalProperties": false
343
+ },
344
+ "IssueKey": {
345
+ "type": "object",
346
+ "properties": {
347
+ "name": {
348
+ "type": "string"
349
+ }
350
+ },
351
+ "additionalProperties": false
352
+ }
353
+ }
354
+ },
355
+ "paths": {
356
+ "/v1/me": {
357
+ "get": {
358
+ "summary": "識別プローブ — 呼び出し元のキーが解決するワークスペースを返す。",
359
+ "responses": {
360
+ "200": {
361
+ "description": "ワークスペース id"
362
+ },
363
+ "401": {
364
+ "description": "認証エラー"
365
+ }
366
+ },
367
+ "tags": [
368
+ "Me"
369
+ ]
370
+ }
371
+ },
372
+ "/v1/sessions": {
373
+ "post": {
374
+ "summary": "セッションを作成する。",
375
+ "requestBody": {
376
+ "required": true,
377
+ "content": {
378
+ "application/json": {
379
+ "schema": {
380
+ "$ref": "#/components/schemas/SessionInit"
381
+ }
382
+ }
383
+ }
384
+ },
385
+ "responses": {
386
+ "200": {
387
+ "description": "作成されたセッション id"
388
+ },
389
+ "400": {
390
+ "description": "リクエストボディが不正"
391
+ },
392
+ "401": {
393
+ "description": "認証エラー"
394
+ }
395
+ },
396
+ "tags": [
397
+ "Sessions"
398
+ ]
399
+ },
400
+ "get": {
401
+ "summary": "最近のセッション一覧と、それに紐づく persons マップを取得する。",
402
+ "parameters": [
403
+ {
404
+ "name": "limit",
405
+ "in": "query",
406
+ "required": false,
407
+ "schema": {
408
+ "type": "integer",
409
+ "minimum": 1
410
+ },
411
+ "description": "ページサイズ。サーバー側で上限が適用される。"
412
+ },
413
+ {
414
+ "name": "channel",
415
+ "in": "query",
416
+ "required": false,
417
+ "schema": {
418
+ "type": "string"
419
+ },
420
+ "description": "セッションのチャンネルで絞り込む。"
421
+ }
422
+ ],
423
+ "responses": {
424
+ "200": {
425
+ "description": "セッション一覧のエンベロープ"
426
+ },
427
+ "401": {
428
+ "description": "認証エラー"
429
+ }
430
+ },
431
+ "tags": [
432
+ "Sessions"
433
+ ]
434
+ }
435
+ },
436
+ "/v1/sessions/{id}": {
437
+ "get": {
438
+ "summary": "単一セッションと、それに紐づく persons マップを取得する。",
439
+ "parameters": [
440
+ {
441
+ "name": "id",
442
+ "in": "path",
443
+ "required": true,
444
+ "schema": {
445
+ "type": "string"
446
+ },
447
+ "description": "セッション id。"
448
+ }
449
+ ],
450
+ "responses": {
451
+ "200": {
452
+ "description": "セッションのエンベロープ"
453
+ },
454
+ "401": {
455
+ "description": "認証エラー"
456
+ },
457
+ "404": {
458
+ "description": "セッションが見つからない"
459
+ }
460
+ },
461
+ "tags": [
462
+ "Sessions"
463
+ ]
464
+ }
465
+ },
466
+ "/v1/sessions/{id}/events": {
467
+ "post": {
468
+ "summary": "セッションにイベントを追加する。",
469
+ "parameters": [
470
+ {
471
+ "name": "id",
472
+ "in": "path",
473
+ "required": true,
474
+ "schema": {
475
+ "type": "string"
476
+ },
477
+ "description": "セッション id。"
478
+ }
479
+ ],
480
+ "requestBody": {
481
+ "required": true,
482
+ "content": {
483
+ "application/json": {
484
+ "schema": {
485
+ "$ref": "#/components/schemas/EventBatch"
486
+ }
487
+ }
488
+ }
489
+ },
490
+ "responses": {
491
+ "204": {
492
+ "description": "追加完了"
493
+ },
494
+ "400": {
495
+ "description": "リクエストボディが不正"
496
+ },
497
+ "401": {
498
+ "description": "認証エラー"
499
+ },
500
+ "404": {
501
+ "description": "セッションが見つからない"
502
+ }
503
+ },
504
+ "tags": [
505
+ "Sessions"
506
+ ]
507
+ },
508
+ "get": {
509
+ "summary": "セッションの生イベントログを seq 順で取得する(fold せず、各イベントの時刻つき)。",
510
+ "parameters": [
511
+ {
512
+ "name": "id",
513
+ "in": "path",
514
+ "required": true,
515
+ "schema": {
516
+ "type": "string"
517
+ },
518
+ "description": "セッション id。"
519
+ }
520
+ ],
521
+ "responses": {
522
+ "200": {
523
+ "description": "イベントログ"
524
+ },
525
+ "401": {
526
+ "description": "認証エラー"
527
+ },
528
+ "404": {
529
+ "description": "セッションが見つからない"
530
+ }
531
+ },
532
+ "tags": [
533
+ "Sessions"
534
+ ]
535
+ }
536
+ },
537
+ "/v1/search": {
538
+ "post": {
539
+ "summary": "クエリセッションに対してワークスペースのコーパスをスコアリングする。",
540
+ "requestBody": {
541
+ "required": true,
542
+ "content": {
543
+ "application/json": {
544
+ "schema": {
545
+ "$ref": "#/components/schemas/SearchRequest"
546
+ }
547
+ }
548
+ }
549
+ },
550
+ "responses": {
551
+ "200": {
552
+ "description": "スコアリング結果と persons マップ"
553
+ },
554
+ "400": {
555
+ "description": "リクエストボディが不正"
556
+ },
557
+ "401": {
558
+ "description": "認証エラー"
559
+ },
560
+ "404": {
561
+ "description": "クエリセッションが見つからない"
562
+ }
563
+ },
564
+ "tags": [
565
+ "Search"
566
+ ]
567
+ }
568
+ },
569
+ "/v1/persons": {
570
+ "post": {
571
+ "summary": "person を作成する(id はサーバーが採番する)。",
572
+ "requestBody": {
573
+ "required": true,
574
+ "content": {
575
+ "application/json": {
576
+ "schema": {
577
+ "$ref": "#/components/schemas/PersonCreate"
578
+ }
579
+ }
580
+ }
581
+ },
582
+ "responses": {
583
+ "201": {
584
+ "description": "作成された person"
585
+ },
586
+ "400": {
587
+ "description": "リクエストボディが不正"
588
+ },
589
+ "401": {
590
+ "description": "認証エラー"
591
+ }
592
+ },
593
+ "tags": [
594
+ "Persons"
595
+ ]
596
+ },
597
+ "get": {
598
+ "summary": "person の一覧取得、またはフリーテキスト検索を行う。",
599
+ "parameters": [
600
+ {
601
+ "name": "limit",
602
+ "in": "query",
603
+ "required": false,
604
+ "schema": {
605
+ "type": "integer",
606
+ "minimum": 1
607
+ },
608
+ "description": "ページサイズ。サーバー側で上限が適用される。"
609
+ },
610
+ {
611
+ "name": "q",
612
+ "in": "query",
613
+ "required": false,
614
+ "schema": {
615
+ "type": "string"
616
+ },
617
+ "description": "id と display_name に対するフリーテキストクエリ。"
618
+ }
619
+ ],
620
+ "responses": {
621
+ "200": {
622
+ "description": "person 一覧"
623
+ },
624
+ "401": {
625
+ "description": "認証エラー"
626
+ }
627
+ },
628
+ "tags": [
629
+ "Persons"
630
+ ]
631
+ }
632
+ },
633
+ "/v1/persons/{id}": {
634
+ "put": {
635
+ "summary": "呼び出し元が指定した id で person を upsert する。",
636
+ "parameters": [
637
+ {
638
+ "name": "id",
639
+ "in": "path",
640
+ "required": true,
641
+ "schema": {
642
+ "type": "string"
643
+ },
644
+ "description": "person id。"
645
+ }
646
+ ],
647
+ "requestBody": {
648
+ "required": true,
649
+ "content": {
650
+ "application/json": {
651
+ "schema": {
652
+ "$ref": "#/components/schemas/PersonCreate"
653
+ }
654
+ }
655
+ }
656
+ },
657
+ "responses": {
658
+ "200": {
659
+ "description": "upsert された person"
660
+ },
661
+ "400": {
662
+ "description": "リクエストボディが不正"
663
+ },
664
+ "401": {
665
+ "description": "認証エラー"
666
+ }
667
+ },
668
+ "tags": [
669
+ "Persons"
670
+ ]
671
+ },
672
+ "patch": {
673
+ "summary": "person のプロフィール項目を部分更新する。",
674
+ "parameters": [
675
+ {
676
+ "name": "id",
677
+ "in": "path",
678
+ "required": true,
679
+ "schema": {
680
+ "type": "string"
681
+ },
682
+ "description": "person id。"
683
+ }
684
+ ],
685
+ "requestBody": {
686
+ "required": true,
687
+ "content": {
688
+ "application/json": {
689
+ "schema": {
690
+ "$ref": "#/components/schemas/PersonUpdate"
691
+ }
692
+ }
693
+ }
694
+ },
695
+ "responses": {
696
+ "200": {
697
+ "description": "更新された person"
698
+ },
699
+ "400": {
700
+ "description": "リクエストボディが不正"
701
+ },
702
+ "401": {
703
+ "description": "認証エラー"
704
+ },
705
+ "404": {
706
+ "description": "person が見つからない"
707
+ }
708
+ },
709
+ "tags": [
710
+ "Persons"
711
+ ]
712
+ },
713
+ "get": {
714
+ "summary": "単一の person を取得する。",
715
+ "parameters": [
716
+ {
717
+ "name": "id",
718
+ "in": "path",
719
+ "required": true,
720
+ "schema": {
721
+ "type": "string"
722
+ },
723
+ "description": "person id。"
724
+ }
725
+ ],
726
+ "responses": {
727
+ "200": {
728
+ "description": "person"
729
+ },
730
+ "401": {
731
+ "description": "認証エラー"
732
+ },
733
+ "404": {
734
+ "description": "person が見つからない"
735
+ }
736
+ },
737
+ "tags": [
738
+ "Persons"
739
+ ]
740
+ }
741
+ },
742
+ "/v1/persons/{id}/sessions": {
743
+ "get": {
744
+ "summary": "この person が参加している(または閲覧可能な)セッション一覧。",
745
+ "parameters": [
746
+ {
747
+ "name": "id",
748
+ "in": "path",
749
+ "required": true,
750
+ "schema": {
751
+ "type": "string"
752
+ },
753
+ "description": "person id。"
754
+ },
755
+ {
756
+ "name": "limit",
757
+ "in": "query",
758
+ "required": false,
759
+ "schema": {
760
+ "type": "integer",
761
+ "minimum": 1
762
+ },
763
+ "description": "ページサイズ。サーバー側で上限が適用される。"
764
+ },
765
+ {
766
+ "name": "channel",
767
+ "in": "query",
768
+ "required": false,
769
+ "schema": {
770
+ "type": "string"
771
+ },
772
+ "description": "セッションのチャンネルで絞り込む。"
773
+ },
774
+ {
775
+ "name": "scope",
776
+ "in": "query",
777
+ "required": false,
778
+ "schema": {
779
+ "type": "string",
780
+ "enum": [
781
+ "participant",
782
+ "viewable"
783
+ ]
784
+ },
785
+ "description": "`participant`(デフォルト)または `viewable`。"
786
+ }
787
+ ],
788
+ "responses": {
789
+ "200": {
790
+ "description": "セッション一覧のエンベロープ"
791
+ },
792
+ "401": {
793
+ "description": "認証エラー"
794
+ }
795
+ },
796
+ "tags": [
797
+ "Persons"
798
+ ]
799
+ }
800
+ },
801
+ "/admin/v1/workspaces": {
802
+ "post": {
803
+ "summary": "ワークスペースを作成する(デフォルトで初期キーも発行する)。",
804
+ "security": [
805
+ {
806
+ "adminToken": []
807
+ }
808
+ ],
809
+ "requestBody": {
810
+ "required": true,
811
+ "content": {
812
+ "application/json": {
813
+ "schema": {
814
+ "$ref": "#/components/schemas/CreateWorkspace"
815
+ }
816
+ }
817
+ }
818
+ },
819
+ "responses": {
820
+ "200": {
821
+ "description": "ワークスペース(issueKey=false でない限りキーも含む)"
822
+ },
823
+ "400": {
824
+ "description": "リクエストボディまたはワークスペース id が不正"
825
+ },
826
+ "401": {
827
+ "description": "認証エラー"
828
+ }
829
+ },
830
+ "tags": [
831
+ "Workspaces (admin)"
832
+ ]
833
+ },
834
+ "get": {
835
+ "summary": "全ワークスペースを一覧取得する。",
836
+ "security": [
837
+ {
838
+ "adminToken": []
839
+ }
840
+ ],
841
+ "responses": {
842
+ "200": {
843
+ "description": "ワークスペース一覧"
844
+ },
845
+ "401": {
846
+ "description": "認証エラー"
847
+ }
848
+ },
849
+ "tags": [
850
+ "Workspaces (admin)"
851
+ ]
852
+ }
853
+ },
854
+ "/admin/v1/workspaces/{id}": {
855
+ "get": {
856
+ "summary": "単一のワークスペースを取得する。",
857
+ "security": [
858
+ {
859
+ "adminToken": []
860
+ }
861
+ ],
862
+ "parameters": [
863
+ {
864
+ "name": "id",
865
+ "in": "path",
866
+ "required": true,
867
+ "schema": {
868
+ "type": "string"
869
+ },
870
+ "description": "ワークスペース id。"
871
+ }
872
+ ],
873
+ "responses": {
874
+ "200": {
875
+ "description": "ワークスペース"
876
+ },
877
+ "401": {
878
+ "description": "認証エラー"
879
+ },
880
+ "404": {
881
+ "description": "ワークスペースが見つからない"
882
+ }
883
+ },
884
+ "tags": [
885
+ "Workspaces (admin)"
886
+ ]
887
+ },
888
+ "delete": {
889
+ "summary": "ワークスペースを削除する(キー・セッション・イベントにカスケードする)。",
890
+ "security": [
891
+ {
892
+ "adminToken": []
893
+ }
894
+ ],
895
+ "parameters": [
896
+ {
897
+ "name": "id",
898
+ "in": "path",
899
+ "required": true,
900
+ "schema": {
901
+ "type": "string"
902
+ },
903
+ "description": "ワークスペース id。"
904
+ }
905
+ ],
906
+ "responses": {
907
+ "204": {
908
+ "description": "削除完了"
909
+ },
910
+ "401": {
911
+ "description": "認証エラー"
912
+ },
913
+ "404": {
914
+ "description": "ワークスペースが見つからない"
915
+ }
916
+ },
917
+ "tags": [
918
+ "Workspaces (admin)"
919
+ ]
920
+ }
921
+ },
922
+ "/admin/v1/workspaces/{id}/keys": {
923
+ "post": {
924
+ "summary": "ワークスペースに新しい API キーを発行する。",
925
+ "security": [
926
+ {
927
+ "adminToken": []
928
+ }
929
+ ],
930
+ "parameters": [
931
+ {
932
+ "name": "id",
933
+ "in": "path",
934
+ "required": true,
935
+ "schema": {
936
+ "type": "string"
937
+ },
938
+ "description": "ワークスペース id。"
939
+ }
940
+ ],
941
+ "requestBody": {
942
+ "required": false,
943
+ "content": {
944
+ "application/json": {
945
+ "schema": {
946
+ "$ref": "#/components/schemas/IssueKey"
947
+ }
948
+ }
949
+ }
950
+ },
951
+ "responses": {
952
+ "200": {
953
+ "description": "発行されたキー(生のキーは一度のみ返却)"
954
+ },
955
+ "400": {
956
+ "description": "リクエストボディが不正"
957
+ },
958
+ "401": {
959
+ "description": "認証エラー"
960
+ },
961
+ "404": {
962
+ "description": "ワークスペースが見つからない"
963
+ }
964
+ },
965
+ "tags": [
966
+ "API Keys (admin)"
967
+ ]
968
+ },
969
+ "get": {
970
+ "summary": "ワークスペースの API キー一覧を取得する(ハッシュのみ)。",
971
+ "security": [
972
+ {
973
+ "adminToken": []
974
+ }
975
+ ],
976
+ "parameters": [
977
+ {
978
+ "name": "id",
979
+ "in": "path",
980
+ "required": true,
981
+ "schema": {
982
+ "type": "string"
983
+ },
984
+ "description": "ワークスペース id。"
985
+ }
986
+ ],
987
+ "responses": {
988
+ "200": {
989
+ "description": "キー一覧"
990
+ },
991
+ "401": {
992
+ "description": "認証エラー"
993
+ },
994
+ "404": {
995
+ "description": "ワークスペースが見つからない"
996
+ }
997
+ },
998
+ "tags": [
999
+ "API Keys (admin)"
1000
+ ]
1001
+ }
1002
+ },
1003
+ "/admin/v1/workspaces/{id}/keys/{keyId}": {
1004
+ "delete": {
1005
+ "summary": "API キーを無効化する。",
1006
+ "security": [
1007
+ {
1008
+ "adminToken": []
1009
+ }
1010
+ ],
1011
+ "parameters": [
1012
+ {
1013
+ "name": "id",
1014
+ "in": "path",
1015
+ "required": true,
1016
+ "schema": {
1017
+ "type": "string"
1018
+ },
1019
+ "description": "ワークスペース id。"
1020
+ },
1021
+ {
1022
+ "name": "keyId",
1023
+ "in": "path",
1024
+ "required": true,
1025
+ "schema": {
1026
+ "type": "string"
1027
+ },
1028
+ "description": "キー id。"
1029
+ }
1030
+ ],
1031
+ "responses": {
1032
+ "204": {
1033
+ "description": "無効化完了(冪等)"
1034
+ },
1035
+ "401": {
1036
+ "description": "認証エラー"
1037
+ },
1038
+ "404": {
1039
+ "description": "キーが見つからない"
1040
+ }
1041
+ },
1042
+ "tags": [
1043
+ "API Keys (admin)"
1044
+ ]
1045
+ }
1046
+ }
1047
+ }
1048
+ }