@wevion/cli 1.0.3098 → 1.0.3106

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 (2) hide show
  1. package/openapi.json +1415 -347
  2. package/package.json +1 -1
package/openapi.json CHANGED
@@ -26729,7 +26729,7 @@
26729
26729
  "tags": [
26730
26730
  "auth"
26731
26731
  ],
26732
- "description": "Returns the authenticated user profile. Requires a valid JWT token.",
26732
+ "description": "Returns the authenticated user profile. Requires a valid JWT token. Includes `is_internal`: true when the profile is outside the clean analytics cohort (internal/staff e-mail domain, Gold/ULTRA, comped, allowlisted, backoffice staff role, or the demo account) — the same population every backoffice dashboard excludes. Used by the SPA to tag the session cohort in analytics; it carries no entitlement and grants nothing.",
26733
26733
  "security": [
26734
26734
  {
26735
26735
  "bearerAuth": []
@@ -27048,6 +27048,9 @@
27048
27048
  }
27049
27049
  ]
27050
27050
  },
27051
+ "is_internal": {
27052
+ "type": "boolean"
27053
+ },
27051
27054
  "subscription": {
27052
27055
  "type": "object",
27053
27056
  "required": [
@@ -27862,6 +27865,9 @@
27862
27865
  }
27863
27866
  ]
27864
27867
  },
27868
+ "is_internal": {
27869
+ "type": "boolean"
27870
+ },
27865
27871
  "subscription": {
27866
27872
  "type": "object",
27867
27873
  "required": [
@@ -28519,6 +28525,9 @@
28519
28525
  }
28520
28526
  ]
28521
28527
  },
28528
+ "is_internal": {
28529
+ "type": "boolean"
28530
+ },
28522
28531
  "subscription": {
28523
28532
  "type": "object",
28524
28533
  "required": [
@@ -193434,12 +193443,6 @@
193434
193443
  "enabled": {
193435
193444
  "type": "boolean"
193436
193445
  },
193437
- "ai_replies_enabled": {
193438
- "type": "boolean"
193439
- },
193440
- "auto_publish": {
193441
- "type": "boolean"
193442
- },
193443
193446
  "moderation_enabled": {
193444
193447
  "type": "boolean"
193445
193448
  },
@@ -193495,63 +193498,6 @@
193495
193498
  ]
193496
193499
  }
193497
193500
  ]
193498
- },
193499
- "respond_on": {
193500
- "anyOf": [
193501
- {
193502
- "type": "string",
193503
- "enum": [
193504
- "every"
193505
- ]
193506
- },
193507
- {
193508
- "type": "string",
193509
- "enum": [
193510
- "questions"
193511
- ]
193512
- }
193513
- ]
193514
- },
193515
- "response_frequency": {
193516
- "anyOf": [
193517
- {
193518
- "type": "string",
193519
- "enum": [
193520
- "always"
193521
- ]
193522
- },
193523
- {
193524
- "type": "string",
193525
- "enum": [
193526
- "sometimes"
193527
- ]
193528
- }
193529
- ]
193530
- },
193531
- "response_timing": {
193532
- "anyOf": [
193533
- {
193534
- "type": "string",
193535
- "enum": [
193536
- "natural"
193537
- ]
193538
- },
193539
- {
193540
- "type": "string",
193541
- "enum": [
193542
- "instant"
193543
- ]
193544
- }
193545
- ]
193546
- },
193547
- "tag_user": {
193548
- "type": "boolean"
193549
- },
193550
- "like_auto": {
193551
- "type": "boolean"
193552
- },
193553
- "dm_enabled": {
193554
- "type": "boolean"
193555
193501
  }
193556
193502
  }
193557
193503
  }
@@ -196332,11 +196278,11 @@
196332
196278
  "/api/v1/smm/connections": {
196333
196279
  "get": {
196334
196280
  "operationId": "getApiV1SmmConnections",
196335
- "summary": "List connected social accounts with token-health for the current team",
196281
+ "summary": "List connected social accounts with token-health and platform capabilities",
196336
196282
  "tags": [
196337
196283
  "smm"
196338
196284
  ],
196339
- "description": "Returns the connected social accounts with token-health for the current team.",
196285
+ "description": "Returns the connected social accounts for the current team with their derived token-health and the per-account platform capability matrix resolved from the SMM adapter registry. A platform with no registered adapter reports every capability as false instead of failing the listing.",
196340
196286
  "security": [
196341
196287
  {
196342
196288
  "bearerAuth": []
@@ -196354,235 +196300,342 @@
196354
196300
  ],
196355
196301
  "properties": {
196356
196302
  "connections": {
196357
- "type": "array",
196358
- "items": {
196359
- "additionalProperties": true,
196360
- "type": "object",
196361
- "required": [
196362
- "id"
196363
- ],
196364
- "properties": {
196365
- "id": {
196366
- "type": "string"
196367
- }
196368
- }
196369
- }
196370
- }
196371
- }
196372
- }
196373
- }
196374
- }
196375
- },
196376
- "401": {
196377
- "description": "Unauthorized - missing or invalid bearer token",
196378
- "content": {
196379
- "application/json": {
196380
- "schema": {
196381
- "$ref": "#/components/schemas/ErrorResponse"
196382
- }
196383
- }
196384
- }
196385
- }
196386
- }
196387
- }
196388
- },
196389
- "/api/v1/smm/connections/{id}/disconnect": {
196390
- "post": {
196391
- "operationId": "postApiV1SmmConnectionsByIdDisconnect",
196392
- "summary": "Disconnect (soft-delete) a connected social account",
196393
- "tags": [
196394
- "smm"
196395
- ],
196396
- "description": "Disconnects (soft-deletes) a connected social account for the current team.",
196397
- "parameters": [
196398
- {
196399
- "schema": {
196400
- "type": "string"
196401
- },
196402
- "in": "path",
196403
- "name": "id",
196404
- "required": true
196405
- }
196406
- ],
196407
- "security": [
196408
- {
196409
- "bearerAuth": []
196410
- }
196411
- ],
196412
- "responses": {
196413
- "200": {
196414
- "description": "Successful response",
196415
- "content": {
196416
- "application/json": {
196417
- "schema": {
196418
- "additionalProperties": false,
196419
- "type": "object",
196420
- "required": [
196421
- "ok"
196422
- ],
196423
- "properties": {
196424
- "ok": {
196425
- "type": "boolean"
196426
- }
196427
- }
196428
- }
196429
- }
196430
- }
196431
- },
196432
- "401": {
196433
- "description": "Unauthorized - missing or invalid bearer token",
196434
- "content": {
196435
- "application/json": {
196436
- "schema": {
196437
- "$ref": "#/components/schemas/ErrorResponse"
196438
- }
196439
- }
196440
- }
196441
- }
196442
- }
196443
- }
196444
- },
196445
- "/api/v1/smm/connections/discover": {
196446
- "get": {
196447
- "operationId": "getApiV1SmmConnectionsDiscover",
196448
- "summary": "Discover connectable Pages / Instagram accounts from a user access token",
196449
- "tags": [
196450
- "smm"
196451
- ],
196452
- "description": "Discovers connectable Pages / Instagram accounts from a user access token.",
196453
- "parameters": [
196454
- {
196455
- "schema": {
196456
- "minLength": 20,
196457
- "type": "string"
196458
- },
196459
- "in": "query",
196460
- "name": "token",
196461
- "required": true
196462
- }
196463
- ],
196464
- "security": [
196465
- {
196466
- "bearerAuth": []
196467
- }
196468
- ],
196469
- "responses": {
196470
- "200": {
196471
- "description": "Successful response",
196472
- "content": {
196473
- "application/json": {
196474
- "schema": {
196475
- "type": "object",
196476
- "required": [
196477
- "pages"
196478
- ],
196479
- "properties": {
196480
- "pages": {
196481
- "type": "array",
196482
- "items": {
196483
- "$comment": "json-value",
196484
- "description": "Arbitrary JSON value."
196485
- }
196486
- }
196487
- }
196488
- }
196489
- }
196490
- }
196491
- },
196492
- "401": {
196493
- "description": "Unauthorized - missing or invalid bearer token",
196494
- "content": {
196495
- "application/json": {
196496
- "schema": {
196497
- "$ref": "#/components/schemas/ErrorResponse"
196498
- }
196499
- }
196500
- }
196501
- }
196502
- }
196503
- }
196504
- },
196505
- "/api/v1/smm/dms": {
196506
- "get": {
196507
- "operationId": "getApiV1SmmDms",
196508
- "summary": "List DM conversations across connected Facebook/Instagram accounts",
196509
- "tags": [
196510
- "smm"
196511
- ],
196512
- "description": "Returns the direct-message conversations across the team connected accounts.",
196513
- "security": [
196514
- {
196515
- "bearerAuth": []
196516
- }
196517
- ],
196518
- "responses": {
196519
- "200": {
196520
- "description": "Successful response",
196521
- "content": {
196522
- "application/json": {
196523
- "schema": {
196524
- "additionalProperties": false,
196525
- "type": "object",
196526
- "required": [
196527
- "conversations"
196528
- ],
196529
- "properties": {
196530
- "conversations": {
196531
196303
  "type": "array",
196532
196304
  "items": {
196533
196305
  "additionalProperties": false,
196534
196306
  "type": "object",
196535
196307
  "required": [
196536
196308
  "id",
196537
- "accountId",
196538
- "externalThreadId",
196539
196309
  "platform",
196540
- "status"
196310
+ "name",
196311
+ "username",
196312
+ "status",
196313
+ "tokenExpiresAt",
196314
+ "health",
196315
+ "capabilities"
196541
196316
  ],
196542
196317
  "properties": {
196543
196318
  "id": {
196544
- "format": "uuid",
196545
196319
  "type": "string"
196546
196320
  },
196547
- "accountId": {
196548
- "format": "uuid",
196321
+ "platform": {
196322
+ "description": "Stored platform value, e.g. facebook_page, instagram, tiktok, youtube.",
196549
196323
  "type": "string"
196550
196324
  },
196551
- "externalThreadId": {
196552
- "type": "string"
196325
+ "name": {
196326
+ "anyOf": [
196327
+ {
196328
+ "type": "string"
196329
+ },
196330
+ {
196331
+ "type": "null"
196332
+ }
196333
+ ]
196553
196334
  },
196554
- "participantExternalId": {
196555
- "type": "string"
196335
+ "username": {
196336
+ "anyOf": [
196337
+ {
196338
+ "type": "string"
196339
+ },
196340
+ {
196341
+ "type": "null"
196342
+ }
196343
+ ]
196556
196344
  },
196557
- "participantName": {
196345
+ "status": {
196558
196346
  "type": "string"
196559
196347
  },
196560
- "platform": {
196561
- "type": "string"
196348
+ "tokenExpiresAt": {
196349
+ "anyOf": [
196350
+ {
196351
+ "format": "date-time",
196352
+ "type": "string"
196353
+ },
196354
+ {
196355
+ "type": "null"
196356
+ }
196357
+ ]
196562
196358
  },
196563
- "status": {
196359
+ "health": {
196360
+ "description": "Token health derived from tokenExpiresAt (expiring = within 7 days).",
196564
196361
  "anyOf": [
196565
196362
  {
196566
196363
  "type": "string",
196567
196364
  "enum": [
196568
- "open"
196365
+ "active"
196569
196366
  ]
196570
196367
  },
196571
196368
  {
196572
196369
  "type": "string",
196573
196370
  "enum": [
196574
- "resolved"
196371
+ "expiring"
196372
+ ]
196373
+ },
196374
+ {
196375
+ "type": "string",
196376
+ "enum": [
196377
+ "expired"
196575
196378
  ]
196576
196379
  }
196577
196380
  ]
196578
196381
  },
196579
- "lastMessageAt": {
196580
- "format": "date-time",
196581
- "type": "string"
196582
- },
196583
- "unread": {
196584
- "minimum": 0,
196585
- "type": "integer"
196382
+ "capabilities": {
196383
+ "additionalProperties": false,
196384
+ "description": "What the connected account can actually do today.",
196385
+ "type": "object",
196386
+ "required": [
196387
+ "publish",
196388
+ "comments",
196389
+ "dm",
196390
+ "insights",
196391
+ "listening",
196392
+ "webhooks"
196393
+ ],
196394
+ "properties": {
196395
+ "publish": {
196396
+ "description": "The platform can publish posts.",
196397
+ "type": "boolean"
196398
+ },
196399
+ "comments": {
196400
+ "description": "The platform exposes comment listing/moderation.",
196401
+ "type": "boolean"
196402
+ },
196403
+ "dm": {
196404
+ "description": "The platform exposes a direct-message API.",
196405
+ "type": "boolean"
196406
+ },
196407
+ "insights": {
196408
+ "description": "The platform exposes post/account insight collection.",
196409
+ "type": "boolean"
196410
+ },
196411
+ "listening": {
196412
+ "description": "The platform supports social-listening collection.",
196413
+ "type": "boolean"
196414
+ },
196415
+ "webhooks": {
196416
+ "description": "The platform delivers webhook events.",
196417
+ "type": "boolean"
196418
+ }
196419
+ }
196420
+ }
196421
+ }
196422
+ }
196423
+ }
196424
+ }
196425
+ }
196426
+ }
196427
+ }
196428
+ },
196429
+ "401": {
196430
+ "description": "Unauthorized - missing or invalid bearer token",
196431
+ "content": {
196432
+ "application/json": {
196433
+ "schema": {
196434
+ "$ref": "#/components/schemas/ErrorResponse"
196435
+ }
196436
+ }
196437
+ }
196438
+ }
196439
+ }
196440
+ }
196441
+ },
196442
+ "/api/v1/smm/connections/{id}/disconnect": {
196443
+ "post": {
196444
+ "operationId": "postApiV1SmmConnectionsByIdDisconnect",
196445
+ "summary": "Disconnect (soft-delete) a connected social account",
196446
+ "tags": [
196447
+ "smm"
196448
+ ],
196449
+ "description": "Disconnects (soft-deletes) a connected social account for the current team.",
196450
+ "parameters": [
196451
+ {
196452
+ "schema": {
196453
+ "type": "string"
196454
+ },
196455
+ "in": "path",
196456
+ "name": "id",
196457
+ "required": true
196458
+ }
196459
+ ],
196460
+ "security": [
196461
+ {
196462
+ "bearerAuth": []
196463
+ }
196464
+ ],
196465
+ "responses": {
196466
+ "200": {
196467
+ "description": "Successful response",
196468
+ "content": {
196469
+ "application/json": {
196470
+ "schema": {
196471
+ "additionalProperties": false,
196472
+ "type": "object",
196473
+ "required": [
196474
+ "ok"
196475
+ ],
196476
+ "properties": {
196477
+ "ok": {
196478
+ "type": "boolean"
196479
+ }
196480
+ }
196481
+ }
196482
+ }
196483
+ }
196484
+ },
196485
+ "401": {
196486
+ "description": "Unauthorized - missing or invalid bearer token",
196487
+ "content": {
196488
+ "application/json": {
196489
+ "schema": {
196490
+ "$ref": "#/components/schemas/ErrorResponse"
196491
+ }
196492
+ }
196493
+ }
196494
+ }
196495
+ }
196496
+ }
196497
+ },
196498
+ "/api/v1/smm/connections/discover": {
196499
+ "get": {
196500
+ "operationId": "getApiV1SmmConnectionsDiscover",
196501
+ "summary": "Discover connectable Pages / Instagram accounts from a user access token",
196502
+ "tags": [
196503
+ "smm"
196504
+ ],
196505
+ "description": "Discovers connectable Pages / Instagram accounts from a user access token.",
196506
+ "parameters": [
196507
+ {
196508
+ "schema": {
196509
+ "minLength": 20,
196510
+ "type": "string"
196511
+ },
196512
+ "in": "query",
196513
+ "name": "token",
196514
+ "required": true
196515
+ }
196516
+ ],
196517
+ "security": [
196518
+ {
196519
+ "bearerAuth": []
196520
+ }
196521
+ ],
196522
+ "responses": {
196523
+ "200": {
196524
+ "description": "Successful response",
196525
+ "content": {
196526
+ "application/json": {
196527
+ "schema": {
196528
+ "type": "object",
196529
+ "required": [
196530
+ "pages"
196531
+ ],
196532
+ "properties": {
196533
+ "pages": {
196534
+ "type": "array",
196535
+ "items": {
196536
+ "$comment": "json-value",
196537
+ "description": "Arbitrary JSON value."
196538
+ }
196539
+ }
196540
+ }
196541
+ }
196542
+ }
196543
+ }
196544
+ },
196545
+ "401": {
196546
+ "description": "Unauthorized - missing or invalid bearer token",
196547
+ "content": {
196548
+ "application/json": {
196549
+ "schema": {
196550
+ "$ref": "#/components/schemas/ErrorResponse"
196551
+ }
196552
+ }
196553
+ }
196554
+ }
196555
+ }
196556
+ }
196557
+ },
196558
+ "/api/v1/smm/dms": {
196559
+ "get": {
196560
+ "operationId": "getApiV1SmmDms",
196561
+ "summary": "List DM conversations across connected Facebook/Instagram accounts",
196562
+ "tags": [
196563
+ "smm"
196564
+ ],
196565
+ "description": "Returns the direct-message conversations across the team connected accounts.",
196566
+ "security": [
196567
+ {
196568
+ "bearerAuth": []
196569
+ }
196570
+ ],
196571
+ "responses": {
196572
+ "200": {
196573
+ "description": "Successful response",
196574
+ "content": {
196575
+ "application/json": {
196576
+ "schema": {
196577
+ "additionalProperties": false,
196578
+ "type": "object",
196579
+ "required": [
196580
+ "conversations"
196581
+ ],
196582
+ "properties": {
196583
+ "conversations": {
196584
+ "type": "array",
196585
+ "items": {
196586
+ "additionalProperties": false,
196587
+ "type": "object",
196588
+ "required": [
196589
+ "id",
196590
+ "accountId",
196591
+ "externalThreadId",
196592
+ "platform",
196593
+ "status"
196594
+ ],
196595
+ "properties": {
196596
+ "id": {
196597
+ "format": "uuid",
196598
+ "type": "string"
196599
+ },
196600
+ "accountId": {
196601
+ "format": "uuid",
196602
+ "type": "string"
196603
+ },
196604
+ "externalThreadId": {
196605
+ "type": "string"
196606
+ },
196607
+ "participantExternalId": {
196608
+ "type": "string"
196609
+ },
196610
+ "participantName": {
196611
+ "type": "string"
196612
+ },
196613
+ "platform": {
196614
+ "type": "string"
196615
+ },
196616
+ "status": {
196617
+ "anyOf": [
196618
+ {
196619
+ "type": "string",
196620
+ "enum": [
196621
+ "open"
196622
+ ]
196623
+ },
196624
+ {
196625
+ "type": "string",
196626
+ "enum": [
196627
+ "resolved"
196628
+ ]
196629
+ }
196630
+ ]
196631
+ },
196632
+ "lastMessageAt": {
196633
+ "format": "date-time",
196634
+ "type": "string"
196635
+ },
196636
+ "unread": {
196637
+ "minimum": 0,
196638
+ "type": "integer"
196586
196639
  }
196587
196640
  }
196588
196641
  }
@@ -199695,7 +199748,7 @@
199695
199748
  "tags": [
199696
199749
  "smm"
199697
199750
  ],
199698
- "description": "Returns the provider OAuth authorize URL the frontend redirects the browser to for connecting an account.",
199751
+ "description": "Returns the provider OAuth authorize URL the frontend redirects the browser to for connecting an account. Guarded by the per-organization SMM account quota: over the plan limit it returns 403 PLAN_LIMIT_EXCEEDED before any provider redirect.",
199699
199752
  "parameters": [
199700
199753
  {
199701
199754
  "schema": {
@@ -199758,6 +199811,58 @@
199758
199811
  }
199759
199812
  }
199760
199813
  }
199814
+ },
199815
+ "403": {
199816
+ "description": "Forbidden - caller lacks the required role/permission",
199817
+ "content": {
199818
+ "application/json": {
199819
+ "schema": {
199820
+ "additionalProperties": false,
199821
+ "type": "object",
199822
+ "required": [
199823
+ "statusCode",
199824
+ "error",
199825
+ "message"
199826
+ ],
199827
+ "properties": {
199828
+ "statusCode": {
199829
+ "type": "number"
199830
+ },
199831
+ "error": {
199832
+ "type": "string"
199833
+ },
199834
+ "message": {
199835
+ "type": "string"
199836
+ },
199837
+ "code": {
199838
+ "type": "string"
199839
+ },
199840
+ "resource": {
199841
+ "type": "string"
199842
+ },
199843
+ "current": {
199844
+ "type": "number"
199845
+ },
199846
+ "max": {
199847
+ "type": "number"
199848
+ },
199849
+ "plan": {
199850
+ "type": "string"
199851
+ },
199852
+ "reason": {
199853
+ "anyOf": [
199854
+ {
199855
+ "type": "string"
199856
+ },
199857
+ {
199858
+ "type": "null"
199859
+ }
199860
+ ]
199861
+ }
199862
+ }
199863
+ }
199864
+ }
199865
+ }
199761
199866
  }
199762
199867
  }
199763
199868
  }
@@ -201778,24 +201883,8 @@
201778
201883
  "tags": [
201779
201884
  "smm"
201780
201885
  ],
201781
- "description": "Returns an aggregate analytics report (totals, per-platform, per-account, timeseries, previous period) for the current team.",
201886
+ "description": "Aggregate analytics report for the current team over the [from, to] window (default: last 30 days), windowed on the parent post publish time. Returns totals, per-platform and per-account breakdowns, a daily timeseries, and the same-length preceding period for comparison. Optionally scoped to specific account ids.",
201782
201887
  "parameters": [
201783
- {
201784
- "schema": {
201785
- "type": "string"
201786
- },
201787
- "in": "query",
201788
- "name": "from",
201789
- "required": false
201790
- },
201791
- {
201792
- "schema": {
201793
- "type": "string"
201794
- },
201795
- "in": "query",
201796
- "name": "to",
201797
- "required": false
201798
- },
201799
201888
  {
201800
201889
  "schema": {
201801
201890
  "anyOf": [
@@ -201812,7 +201901,26 @@
201812
201901
  },
201813
201902
  "in": "query",
201814
201903
  "name": "accountIds",
201815
- "required": false
201904
+ "required": false,
201905
+ "description": "Restrict the report to these social account ids: a comma-separated string or a repeated query param. Omit for all accounts."
201906
+ },
201907
+ {
201908
+ "schema": {
201909
+ "type": "string"
201910
+ },
201911
+ "in": "query",
201912
+ "name": "from",
201913
+ "required": false,
201914
+ "description": "Inclusive window start (ISO 8601). Defaults to 30 days before `to`. Unparseable values are ignored."
201915
+ },
201916
+ {
201917
+ "schema": {
201918
+ "type": "string"
201919
+ },
201920
+ "in": "query",
201921
+ "name": "to",
201922
+ "required": false,
201923
+ "description": "Inclusive window end (ISO 8601). Defaults to now. Unparseable values are ignored."
201816
201924
  }
201817
201925
  ],
201818
201926
  "security": [
@@ -201826,14 +201934,170 @@
201826
201934
  "content": {
201827
201935
  "application/json": {
201828
201936
  "schema": {
201937
+ "additionalProperties": false,
201829
201938
  "type": "object",
201830
201939
  "required": [
201831
201940
  "report"
201832
201941
  ],
201833
201942
  "properties": {
201834
201943
  "report": {
201835
- "$comment": "json-value",
201836
- "description": "Arbitrary JSON value."
201944
+ "additionalProperties": false,
201945
+ "type": "object",
201946
+ "required": [
201947
+ "perAccount",
201948
+ "perPlatform",
201949
+ "previous",
201950
+ "timeseries",
201951
+ "totals"
201952
+ ],
201953
+ "properties": {
201954
+ "perAccount": {
201955
+ "type": "array",
201956
+ "items": {
201957
+ "additionalProperties": false,
201958
+ "type": "object",
201959
+ "required": [
201960
+ "accountId",
201961
+ "engagement",
201962
+ "followers",
201963
+ "impressions",
201964
+ "platform"
201965
+ ],
201966
+ "properties": {
201967
+ "accountId": {
201968
+ "type": "string"
201969
+ },
201970
+ "engagement": {
201971
+ "type": "integer"
201972
+ },
201973
+ "followers": {
201974
+ "type": "integer"
201975
+ },
201976
+ "impressions": {
201977
+ "type": "integer"
201978
+ },
201979
+ "platform": {
201980
+ "type": "string"
201981
+ }
201982
+ }
201983
+ }
201984
+ },
201985
+ "perPlatform": {
201986
+ "type": "array",
201987
+ "items": {
201988
+ "additionalProperties": false,
201989
+ "type": "object",
201990
+ "required": [
201991
+ "engagement",
201992
+ "impressions",
201993
+ "platform",
201994
+ "reach"
201995
+ ],
201996
+ "properties": {
201997
+ "engagement": {
201998
+ "type": "integer"
201999
+ },
202000
+ "impressions": {
202001
+ "type": "integer"
202002
+ },
202003
+ "platform": {
202004
+ "type": "string"
202005
+ },
202006
+ "reach": {
202007
+ "type": "integer"
202008
+ }
202009
+ }
202010
+ }
202011
+ },
202012
+ "previous": {
202013
+ "additionalProperties": false,
202014
+ "type": "object",
202015
+ "required": [
202016
+ "engagement",
202017
+ "impressions",
202018
+ "reach"
202019
+ ],
202020
+ "properties": {
202021
+ "engagement": {
202022
+ "type": "integer"
202023
+ },
202024
+ "impressions": {
202025
+ "type": "integer"
202026
+ },
202027
+ "reach": {
202028
+ "type": "integer"
202029
+ }
202030
+ }
202031
+ },
202032
+ "timeseries": {
202033
+ "type": "array",
202034
+ "items": {
202035
+ "additionalProperties": false,
202036
+ "type": "object",
202037
+ "required": [
202038
+ "date",
202039
+ "engagement",
202040
+ "followers",
202041
+ "impressions"
202042
+ ],
202043
+ "properties": {
202044
+ "date": {
202045
+ "description": "UTC day bucket (YYYY-MM-DD).",
202046
+ "type": "string"
202047
+ },
202048
+ "engagement": {
202049
+ "type": "integer"
202050
+ },
202051
+ "followers": {
202052
+ "type": "integer"
202053
+ },
202054
+ "impressions": {
202055
+ "type": "integer"
202056
+ }
202057
+ }
202058
+ }
202059
+ },
202060
+ "totals": {
202061
+ "additionalProperties": false,
202062
+ "type": "object",
202063
+ "required": [
202064
+ "comments",
202065
+ "engagement",
202066
+ "followers",
202067
+ "impressions",
202068
+ "likes",
202069
+ "posts",
202070
+ "reach",
202071
+ "shares"
202072
+ ],
202073
+ "properties": {
202074
+ "comments": {
202075
+ "type": "integer"
202076
+ },
202077
+ "engagement": {
202078
+ "type": "integer"
202079
+ },
202080
+ "followers": {
202081
+ "type": "integer"
202082
+ },
202083
+ "impressions": {
202084
+ "type": "integer"
202085
+ },
202086
+ "likes": {
202087
+ "type": "integer"
202088
+ },
202089
+ "posts": {
202090
+ "type": "integer"
202091
+ },
202092
+ "reach": {
202093
+ "type": "integer"
202094
+ },
202095
+ "shares": {
202096
+ "type": "integer"
202097
+ }
202098
+ }
202099
+ }
202100
+ }
201837
202101
  }
201838
202102
  }
201839
202103
  }
@@ -201845,7 +202109,35 @@
201845
202109
  "content": {
201846
202110
  "application/json": {
201847
202111
  "schema": {
201848
- "$ref": "#/components/schemas/ErrorResponse"
202112
+ "additionalProperties": false,
202113
+ "type": "object",
202114
+ "required": [
202115
+ "error"
202116
+ ],
202117
+ "properties": {
202118
+ "error": {
202119
+ "type": "string"
202120
+ }
202121
+ }
202122
+ }
202123
+ }
202124
+ }
202125
+ },
202126
+ "403": {
202127
+ "description": "Forbidden - caller lacks the required role/permission",
202128
+ "content": {
202129
+ "application/json": {
202130
+ "schema": {
202131
+ "additionalProperties": false,
202132
+ "type": "object",
202133
+ "required": [
202134
+ "error"
202135
+ ],
202136
+ "properties": {
202137
+ "error": {
202138
+ "type": "string"
202139
+ }
202140
+ }
201849
202141
  }
201850
202142
  }
201851
202143
  }
@@ -203795,7 +204087,7 @@
203795
204087
  "tags": [
203796
204088
  "smm"
203797
204089
  ],
203798
- "description": "Connects the available Facebook Pages and linked Instagram accounts for the supplied Meta user access token and returns the connected account summaries.",
204090
+ "description": "Connects the available Facebook Pages and linked Instagram accounts for the supplied Meta user access token, up to the organization plan quota (D3: first discovered win), and returns the connected account summaries plus how many discovered accounts the quota refused.",
203799
204091
  "requestBody": {
203800
204092
  "required": true,
203801
204093
  "content": {
@@ -203815,63 +204107,102 @@
203815
204107
  }
203816
204108
  }
203817
204109
  },
203818
- "security": [
203819
- {
203820
- "bearerAuth": []
203821
- }
203822
- ],
203823
- "responses": {
203824
- "200": {
203825
- "description": "Successful response",
203826
- "content": {
203827
- "application/json": {
203828
- "schema": {
203829
- "type": "object",
203830
- "required": [
203831
- "connected"
203832
- ],
203833
- "properties": {
203834
- "connected": {
203835
- "type": "array",
203836
- "items": {
203837
- "additionalProperties": true,
203838
- "type": "object",
203839
- "required": [
203840
- "platform"
203841
- ],
203842
- "properties": {
203843
- "platform": {
203844
- "type": "string"
203845
- }
203846
- }
203847
- }
203848
- }
203849
- }
203850
- }
203851
- }
203852
- }
203853
- },
203854
- "401": {
203855
- "description": "Unauthorized - missing or invalid bearer token",
203856
- "content": {
203857
- "application/json": {
203858
- "schema": {
203859
- "$ref": "#/components/schemas/ErrorResponse"
203860
- }
203861
- }
203862
- }
203863
- }
203864
- }
203865
- }
203866
- },
203867
- "/api/v1/smm/accounts/demo": {
203868
- "post": {
203869
- "operationId": "postApiV1SmmAccountsDemo",
203870
- "summary": "Create a local demo/test social account (no real connection)",
203871
- "tags": [
203872
- "smm"
203873
- ],
203874
- "description": "Creates a local demo/test social account for the current team and returns its account summary.",
204110
+ "security": [
204111
+ {
204112
+ "bearerAuth": []
204113
+ }
204114
+ ],
204115
+ "responses": {
204116
+ "200": {
204117
+ "description": "Successful response",
204118
+ "content": {
204119
+ "application/json": {
204120
+ "schema": {
204121
+ "type": "object",
204122
+ "required": [
204123
+ "connected",
204124
+ "quota_skipped"
204125
+ ],
204126
+ "properties": {
204127
+ "connected": {
204128
+ "type": "array",
204129
+ "items": {
204130
+ "additionalProperties": true,
204131
+ "type": "object",
204132
+ "required": [
204133
+ "platform"
204134
+ ],
204135
+ "properties": {
204136
+ "platform": {
204137
+ "type": "string"
204138
+ }
204139
+ }
204140
+ }
204141
+ },
204142
+ "quota_skipped": {
204143
+ "type": "number"
204144
+ }
204145
+ }
204146
+ }
204147
+ }
204148
+ }
204149
+ },
204150
+ "401": {
204151
+ "description": "Unauthorized - missing or invalid bearer token",
204152
+ "content": {
204153
+ "application/json": {
204154
+ "schema": {
204155
+ "$ref": "#/components/schemas/ErrorResponse"
204156
+ }
204157
+ }
204158
+ }
204159
+ },
204160
+ "403": {
204161
+ "description": "Forbidden - caller lacks the required role/permission",
204162
+ "content": {
204163
+ "application/json": {
204164
+ "schema": {
204165
+ "additionalProperties": false,
204166
+ "type": "object",
204167
+ "required": [
204168
+ "statusCode",
204169
+ "error",
204170
+ "message",
204171
+ "code",
204172
+ "resource"
204173
+ ],
204174
+ "properties": {
204175
+ "statusCode": {
204176
+ "type": "number"
204177
+ },
204178
+ "error": {
204179
+ "type": "string"
204180
+ },
204181
+ "message": {
204182
+ "type": "string"
204183
+ },
204184
+ "code": {
204185
+ "type": "string"
204186
+ },
204187
+ "resource": {
204188
+ "type": "string"
204189
+ }
204190
+ }
204191
+ }
204192
+ }
204193
+ }
204194
+ }
204195
+ }
204196
+ }
204197
+ },
204198
+ "/api/v1/smm/accounts/demo": {
204199
+ "post": {
204200
+ "operationId": "postApiV1SmmAccountsDemo",
204201
+ "summary": "Create a local demo/test social account (no real connection)",
204202
+ "tags": [
204203
+ "smm"
204204
+ ],
204205
+ "description": "Creates a local demo/test social account for the current team and returns its account summary.",
203875
204206
  "security": [
203876
204207
  {
203877
204208
  "bearerAuth": []
@@ -203992,6 +204323,41 @@
203992
204323
  }
203993
204324
  }
203994
204325
  }
204326
+ },
204327
+ "403": {
204328
+ "description": "Forbidden - caller lacks the required role/permission",
204329
+ "content": {
204330
+ "application/json": {
204331
+ "schema": {
204332
+ "additionalProperties": false,
204333
+ "type": "object",
204334
+ "required": [
204335
+ "statusCode",
204336
+ "error",
204337
+ "message",
204338
+ "code",
204339
+ "resource"
204340
+ ],
204341
+ "properties": {
204342
+ "statusCode": {
204343
+ "type": "number"
204344
+ },
204345
+ "error": {
204346
+ "type": "string"
204347
+ },
204348
+ "message": {
204349
+ "type": "string"
204350
+ },
204351
+ "code": {
204352
+ "type": "string"
204353
+ },
204354
+ "resource": {
204355
+ "type": "string"
204356
+ }
204357
+ }
204358
+ }
204359
+ }
204360
+ }
203995
204361
  }
203996
204362
  }
203997
204363
  }
@@ -204067,6 +204433,41 @@
204067
204433
  }
204068
204434
  }
204069
204435
  }
204436
+ },
204437
+ "403": {
204438
+ "description": "Forbidden - caller lacks the required role/permission",
204439
+ "content": {
204440
+ "application/json": {
204441
+ "schema": {
204442
+ "additionalProperties": false,
204443
+ "type": "object",
204444
+ "required": [
204445
+ "statusCode",
204446
+ "error",
204447
+ "message",
204448
+ "code",
204449
+ "resource"
204450
+ ],
204451
+ "properties": {
204452
+ "statusCode": {
204453
+ "type": "number"
204454
+ },
204455
+ "error": {
204456
+ "type": "string"
204457
+ },
204458
+ "message": {
204459
+ "type": "string"
204460
+ },
204461
+ "code": {
204462
+ "type": "string"
204463
+ },
204464
+ "resource": {
204465
+ "type": "string"
204466
+ }
204467
+ }
204468
+ }
204469
+ }
204470
+ }
204070
204471
  }
204071
204472
  }
204072
204473
  }
@@ -204074,11 +204475,11 @@
204074
204475
  "/api/v1/smm/accounts": {
204075
204476
  "get": {
204076
204477
  "operationId": "getApiV1SmmAccounts",
204077
- "summary": "List connected SMM social accounts for the current team",
204478
+ "summary": "List connected SMM social accounts with their platform capabilities",
204078
204479
  "tags": [
204079
204480
  "smm"
204080
204481
  ],
204081
- "description": "Returns the list of connected social accounts for the current team.",
204482
+ "description": "Returns the connected social accounts for the current team, each carrying the platform capability matrix resolved from the SMM adapter registry. A platform with no registered adapter reports every capability as false instead of failing the listing.",
204082
204483
  "security": [
204083
204484
  {
204084
204485
  "bearerAuth": []
@@ -204098,14 +204499,90 @@
204098
204499
  "accounts": {
204099
204500
  "type": "array",
204100
204501
  "items": {
204101
- "additionalProperties": true,
204502
+ "additionalProperties": false,
204102
204503
  "type": "object",
204103
204504
  "required": [
204104
- "platform"
204505
+ "id",
204506
+ "platform",
204507
+ "external_id",
204508
+ "name",
204509
+ "username",
204510
+ "status",
204511
+ "capabilities"
204105
204512
  ],
204106
204513
  "properties": {
204514
+ "id": {
204515
+ "type": "string"
204516
+ },
204107
204517
  "platform": {
204518
+ "description": "Stored platform value, e.g. facebook_page, instagram, tiktok, youtube.",
204519
+ "type": "string"
204520
+ },
204521
+ "external_id": {
204522
+ "description": "Platform-side account id.",
204523
+ "type": "string"
204524
+ },
204525
+ "name": {
204526
+ "anyOf": [
204527
+ {
204528
+ "type": "string"
204529
+ },
204530
+ {
204531
+ "type": "null"
204532
+ }
204533
+ ]
204534
+ },
204535
+ "username": {
204536
+ "anyOf": [
204537
+ {
204538
+ "type": "string"
204539
+ },
204540
+ {
204541
+ "type": "null"
204542
+ }
204543
+ ]
204544
+ },
204545
+ "status": {
204108
204546
  "type": "string"
204547
+ },
204548
+ "capabilities": {
204549
+ "additionalProperties": false,
204550
+ "description": "What the connected account can actually do today.",
204551
+ "type": "object",
204552
+ "required": [
204553
+ "publish",
204554
+ "comments",
204555
+ "dm",
204556
+ "insights",
204557
+ "listening",
204558
+ "webhooks"
204559
+ ],
204560
+ "properties": {
204561
+ "publish": {
204562
+ "description": "The platform can publish posts.",
204563
+ "type": "boolean"
204564
+ },
204565
+ "comments": {
204566
+ "description": "The platform exposes comment listing/moderation.",
204567
+ "type": "boolean"
204568
+ },
204569
+ "dm": {
204570
+ "description": "The platform exposes a direct-message API.",
204571
+ "type": "boolean"
204572
+ },
204573
+ "insights": {
204574
+ "description": "The platform exposes post/account insight collection.",
204575
+ "type": "boolean"
204576
+ },
204577
+ "listening": {
204578
+ "description": "The platform supports social-listening collection.",
204579
+ "type": "boolean"
204580
+ },
204581
+ "webhooks": {
204582
+ "description": "The platform delivers webhook events.",
204583
+ "type": "boolean"
204584
+ }
204585
+ }
204109
204586
  }
204110
204587
  }
204111
204588
  }
@@ -251102,6 +251579,597 @@
251102
251579
  ]
251103
251580
  }
251104
251581
  },
251582
+ "/api/v1/team/knowledge": {
251583
+ "get": {
251584
+ "operationId": "getApiV1TeamKnowledge",
251585
+ "summary": "List team knowledge entries",
251586
+ "tags": [
251587
+ "team"
251588
+ ],
251589
+ "description": "Lists the shared knowledge entries of the teams the caller can access. Active entries are injected into every Wavo conversation of the team.",
251590
+ "security": [
251591
+ {
251592
+ "bearerAuth": []
251593
+ },
251594
+ {
251595
+ "apiKeyAuth": []
251596
+ }
251597
+ ],
251598
+ "responses": {
251599
+ "200": {
251600
+ "description": "Successful response",
251601
+ "content": {
251602
+ "application/json": {
251603
+ "schema": {
251604
+ "additionalProperties": false,
251605
+ "type": "object",
251606
+ "required": [
251607
+ "items",
251608
+ "limit"
251609
+ ],
251610
+ "properties": {
251611
+ "items": {
251612
+ "type": "array",
251613
+ "items": {
251614
+ "additionalProperties": false,
251615
+ "type": "object",
251616
+ "required": [
251617
+ "id",
251618
+ "team_id",
251619
+ "title",
251620
+ "content",
251621
+ "is_active",
251622
+ "created_at",
251623
+ "updated_at"
251624
+ ],
251625
+ "properties": {
251626
+ "id": {
251627
+ "format": "uuid",
251628
+ "type": "string"
251629
+ },
251630
+ "team_id": {
251631
+ "format": "uuid",
251632
+ "type": "string"
251633
+ },
251634
+ "title": {
251635
+ "type": "string"
251636
+ },
251637
+ "content": {
251638
+ "type": "string"
251639
+ },
251640
+ "is_active": {
251641
+ "type": "boolean"
251642
+ },
251643
+ "created_at": {
251644
+ "format": "date-time",
251645
+ "type": "string"
251646
+ },
251647
+ "updated_at": {
251648
+ "format": "date-time",
251649
+ "type": "string"
251650
+ }
251651
+ }
251652
+ }
251653
+ },
251654
+ "limit": {
251655
+ "type": "integer"
251656
+ }
251657
+ }
251658
+ }
251659
+ }
251660
+ }
251661
+ },
251662
+ "401": {
251663
+ "description": "Unauthorized - missing or invalid bearer token",
251664
+ "content": {
251665
+ "application/json": {
251666
+ "schema": {
251667
+ "$ref": "#/components/schemas/ErrorResponse"
251668
+ }
251669
+ }
251670
+ }
251671
+ },
251672
+ "500": {
251673
+ "description": "Internal server error",
251674
+ "content": {
251675
+ "application/json": {
251676
+ "schema": {
251677
+ "additionalProperties": false,
251678
+ "type": "object",
251679
+ "required": [
251680
+ "error"
251681
+ ],
251682
+ "properties": {
251683
+ "error": {
251684
+ "type": "string"
251685
+ },
251686
+ "code": {
251687
+ "type": "string"
251688
+ },
251689
+ "message": {
251690
+ "type": "string"
251691
+ },
251692
+ "statusCode": {
251693
+ "type": "number"
251694
+ }
251695
+ }
251696
+ }
251697
+ }
251698
+ }
251699
+ }
251700
+ }
251701
+ },
251702
+ "post": {
251703
+ "operationId": "postApiV1TeamKnowledge",
251704
+ "summary": "Create a team knowledge entry",
251705
+ "tags": [
251706
+ "team"
251707
+ ],
251708
+ "description": "Creates a shared knowledge entry for the caller's team. Fails with 409 once the team reaches 30 entries.",
251709
+ "requestBody": {
251710
+ "required": true,
251711
+ "content": {
251712
+ "application/json": {
251713
+ "schema": {
251714
+ "additionalProperties": false,
251715
+ "type": "object",
251716
+ "required": [
251717
+ "title",
251718
+ "content"
251719
+ ],
251720
+ "properties": {
251721
+ "title": {
251722
+ "minLength": 1,
251723
+ "maxLength": 200,
251724
+ "type": "string"
251725
+ },
251726
+ "content": {
251727
+ "minLength": 1,
251728
+ "maxLength": 2000,
251729
+ "type": "string"
251730
+ }
251731
+ }
251732
+ }
251733
+ }
251734
+ }
251735
+ },
251736
+ "security": [
251737
+ {
251738
+ "bearerAuth": []
251739
+ },
251740
+ {
251741
+ "apiKeyAuth": []
251742
+ }
251743
+ ],
251744
+ "responses": {
251745
+ "200": {
251746
+ "description": "Successful response",
251747
+ "content": {
251748
+ "application/json": {
251749
+ "schema": {
251750
+ "additionalProperties": false,
251751
+ "type": "object",
251752
+ "required": [
251753
+ "id",
251754
+ "team_id",
251755
+ "title",
251756
+ "content",
251757
+ "is_active",
251758
+ "created_at",
251759
+ "updated_at"
251760
+ ],
251761
+ "properties": {
251762
+ "id": {
251763
+ "format": "uuid",
251764
+ "type": "string"
251765
+ },
251766
+ "team_id": {
251767
+ "format": "uuid",
251768
+ "type": "string"
251769
+ },
251770
+ "title": {
251771
+ "type": "string"
251772
+ },
251773
+ "content": {
251774
+ "type": "string"
251775
+ },
251776
+ "is_active": {
251777
+ "type": "boolean"
251778
+ },
251779
+ "created_at": {
251780
+ "format": "date-time",
251781
+ "type": "string"
251782
+ },
251783
+ "updated_at": {
251784
+ "format": "date-time",
251785
+ "type": "string"
251786
+ }
251787
+ }
251788
+ }
251789
+ }
251790
+ }
251791
+ },
251792
+ "400": {
251793
+ "description": "Invalid request - schema validation failed",
251794
+ "content": {
251795
+ "application/json": {
251796
+ "schema": {
251797
+ "additionalProperties": false,
251798
+ "type": "object",
251799
+ "required": [
251800
+ "error"
251801
+ ],
251802
+ "properties": {
251803
+ "error": {
251804
+ "type": "string"
251805
+ },
251806
+ "code": {
251807
+ "type": "string"
251808
+ },
251809
+ "message": {
251810
+ "type": "string"
251811
+ },
251812
+ "statusCode": {
251813
+ "type": "number"
251814
+ }
251815
+ }
251816
+ }
251817
+ }
251818
+ }
251819
+ },
251820
+ "401": {
251821
+ "description": "Unauthorized - missing or invalid bearer token",
251822
+ "content": {
251823
+ "application/json": {
251824
+ "schema": {
251825
+ "$ref": "#/components/schemas/ErrorResponse"
251826
+ }
251827
+ }
251828
+ }
251829
+ },
251830
+ "409": {
251831
+ "description": "Conflict - resource state prevents the operation",
251832
+ "content": {
251833
+ "application/json": {
251834
+ "schema": {
251835
+ "additionalProperties": false,
251836
+ "type": "object",
251837
+ "required": [
251838
+ "error"
251839
+ ],
251840
+ "properties": {
251841
+ "error": {
251842
+ "type": "string"
251843
+ },
251844
+ "code": {
251845
+ "type": "string"
251846
+ },
251847
+ "message": {
251848
+ "type": "string"
251849
+ },
251850
+ "statusCode": {
251851
+ "type": "number"
251852
+ }
251853
+ }
251854
+ }
251855
+ }
251856
+ }
251857
+ },
251858
+ "500": {
251859
+ "description": "Internal server error",
251860
+ "content": {
251861
+ "application/json": {
251862
+ "schema": {
251863
+ "additionalProperties": false,
251864
+ "type": "object",
251865
+ "required": [
251866
+ "error"
251867
+ ],
251868
+ "properties": {
251869
+ "error": {
251870
+ "type": "string"
251871
+ },
251872
+ "code": {
251873
+ "type": "string"
251874
+ },
251875
+ "message": {
251876
+ "type": "string"
251877
+ },
251878
+ "statusCode": {
251879
+ "type": "number"
251880
+ }
251881
+ }
251882
+ }
251883
+ }
251884
+ }
251885
+ }
251886
+ }
251887
+ }
251888
+ },
251889
+ "/api/v1/team/knowledge/{id}": {
251890
+ "patch": {
251891
+ "operationId": "patchApiV1TeamKnowledgeById",
251892
+ "summary": "Update a team knowledge entry",
251893
+ "tags": [
251894
+ "team"
251895
+ ],
251896
+ "description": "Updates the title, body or active flag of an entry. Setting is_active to false keeps the entry but stops Wavo from using it.",
251897
+ "requestBody": {
251898
+ "required": true,
251899
+ "content": {
251900
+ "application/json": {
251901
+ "schema": {
251902
+ "additionalProperties": false,
251903
+ "type": "object",
251904
+ "properties": {
251905
+ "title": {
251906
+ "minLength": 1,
251907
+ "maxLength": 200,
251908
+ "type": "string"
251909
+ },
251910
+ "content": {
251911
+ "minLength": 1,
251912
+ "maxLength": 2000,
251913
+ "type": "string"
251914
+ },
251915
+ "is_active": {
251916
+ "type": "boolean"
251917
+ }
251918
+ }
251919
+ }
251920
+ }
251921
+ }
251922
+ },
251923
+ "parameters": [
251924
+ {
251925
+ "schema": {
251926
+ "format": "uuid",
251927
+ "type": "string"
251928
+ },
251929
+ "in": "path",
251930
+ "name": "id",
251931
+ "required": true
251932
+ }
251933
+ ],
251934
+ "security": [
251935
+ {
251936
+ "bearerAuth": []
251937
+ },
251938
+ {
251939
+ "apiKeyAuth": []
251940
+ }
251941
+ ],
251942
+ "responses": {
251943
+ "200": {
251944
+ "description": "Successful response",
251945
+ "content": {
251946
+ "application/json": {
251947
+ "schema": {
251948
+ "additionalProperties": false,
251949
+ "type": "object",
251950
+ "required": [
251951
+ "id",
251952
+ "team_id",
251953
+ "title",
251954
+ "content",
251955
+ "is_active",
251956
+ "created_at",
251957
+ "updated_at"
251958
+ ],
251959
+ "properties": {
251960
+ "id": {
251961
+ "format": "uuid",
251962
+ "type": "string"
251963
+ },
251964
+ "team_id": {
251965
+ "format": "uuid",
251966
+ "type": "string"
251967
+ },
251968
+ "title": {
251969
+ "type": "string"
251970
+ },
251971
+ "content": {
251972
+ "type": "string"
251973
+ },
251974
+ "is_active": {
251975
+ "type": "boolean"
251976
+ },
251977
+ "created_at": {
251978
+ "format": "date-time",
251979
+ "type": "string"
251980
+ },
251981
+ "updated_at": {
251982
+ "format": "date-time",
251983
+ "type": "string"
251984
+ }
251985
+ }
251986
+ }
251987
+ }
251988
+ }
251989
+ },
251990
+ "401": {
251991
+ "description": "Unauthorized - missing or invalid bearer token",
251992
+ "content": {
251993
+ "application/json": {
251994
+ "schema": {
251995
+ "$ref": "#/components/schemas/ErrorResponse"
251996
+ }
251997
+ }
251998
+ }
251999
+ },
252000
+ "404": {
252001
+ "description": "Resource not found",
252002
+ "content": {
252003
+ "application/json": {
252004
+ "schema": {
252005
+ "additionalProperties": false,
252006
+ "type": "object",
252007
+ "required": [
252008
+ "error"
252009
+ ],
252010
+ "properties": {
252011
+ "error": {
252012
+ "type": "string"
252013
+ },
252014
+ "code": {
252015
+ "type": "string"
252016
+ },
252017
+ "message": {
252018
+ "type": "string"
252019
+ },
252020
+ "statusCode": {
252021
+ "type": "number"
252022
+ }
252023
+ }
252024
+ }
252025
+ }
252026
+ }
252027
+ },
252028
+ "500": {
252029
+ "description": "Internal server error",
252030
+ "content": {
252031
+ "application/json": {
252032
+ "schema": {
252033
+ "additionalProperties": false,
252034
+ "type": "object",
252035
+ "required": [
252036
+ "error"
252037
+ ],
252038
+ "properties": {
252039
+ "error": {
252040
+ "type": "string"
252041
+ },
252042
+ "code": {
252043
+ "type": "string"
252044
+ },
252045
+ "message": {
252046
+ "type": "string"
252047
+ },
252048
+ "statusCode": {
252049
+ "type": "number"
252050
+ }
252051
+ }
252052
+ }
252053
+ }
252054
+ }
252055
+ }
252056
+ }
252057
+ },
252058
+ "delete": {
252059
+ "operationId": "deleteApiV1TeamKnowledgeById",
252060
+ "summary": "Delete a team knowledge entry",
252061
+ "tags": [
252062
+ "team"
252063
+ ],
252064
+ "description": "Permanently removes a shared knowledge entry from the team.",
252065
+ "parameters": [
252066
+ {
252067
+ "schema": {
252068
+ "format": "uuid",
252069
+ "type": "string"
252070
+ },
252071
+ "in": "path",
252072
+ "name": "id",
252073
+ "required": true
252074
+ }
252075
+ ],
252076
+ "security": [
252077
+ {
252078
+ "bearerAuth": []
252079
+ },
252080
+ {
252081
+ "apiKeyAuth": []
252082
+ }
252083
+ ],
252084
+ "responses": {
252085
+ "200": {
252086
+ "description": "Successful response",
252087
+ "content": {
252088
+ "application/json": {
252089
+ "schema": {
252090
+ "additionalProperties": false,
252091
+ "type": "object",
252092
+ "required": [
252093
+ "deleted"
252094
+ ],
252095
+ "properties": {
252096
+ "deleted": {
252097
+ "type": "boolean"
252098
+ }
252099
+ }
252100
+ }
252101
+ }
252102
+ }
252103
+ },
252104
+ "401": {
252105
+ "description": "Unauthorized - missing or invalid bearer token",
252106
+ "content": {
252107
+ "application/json": {
252108
+ "schema": {
252109
+ "$ref": "#/components/schemas/ErrorResponse"
252110
+ }
252111
+ }
252112
+ }
252113
+ },
252114
+ "404": {
252115
+ "description": "Resource not found",
252116
+ "content": {
252117
+ "application/json": {
252118
+ "schema": {
252119
+ "additionalProperties": false,
252120
+ "type": "object",
252121
+ "required": [
252122
+ "error"
252123
+ ],
252124
+ "properties": {
252125
+ "error": {
252126
+ "type": "string"
252127
+ },
252128
+ "code": {
252129
+ "type": "string"
252130
+ },
252131
+ "message": {
252132
+ "type": "string"
252133
+ },
252134
+ "statusCode": {
252135
+ "type": "number"
252136
+ }
252137
+ }
252138
+ }
252139
+ }
252140
+ }
252141
+ },
252142
+ "500": {
252143
+ "description": "Internal server error",
252144
+ "content": {
252145
+ "application/json": {
252146
+ "schema": {
252147
+ "additionalProperties": false,
252148
+ "type": "object",
252149
+ "required": [
252150
+ "error"
252151
+ ],
252152
+ "properties": {
252153
+ "error": {
252154
+ "type": "string"
252155
+ },
252156
+ "code": {
252157
+ "type": "string"
252158
+ },
252159
+ "message": {
252160
+ "type": "string"
252161
+ },
252162
+ "statusCode": {
252163
+ "type": "number"
252164
+ }
252165
+ }
252166
+ }
252167
+ }
252168
+ }
252169
+ }
252170
+ }
252171
+ }
252172
+ },
251105
252173
  "/api/v1/team-workspace": {
251106
252174
  "get": {
251107
252175
  "operationId": "getApiV1TeamWorkspace",