@thinkai/tai-api-contract 2.55.0 → 2.57.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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.55.0
4
+ version: 2.57.0
5
5
  description: >
6
6
  Contract surface for the AI Driven SDLC backend used by ThinkAI.
7
7
  Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
@@ -64,6 +64,8 @@ tags:
64
64
  description: >
65
65
  Data subject access / erasure / portability request intake and privacy-ops management (DSAR, issue #611).
66
66
  Public and authenticated submission; platform-admin queue, export, and fulfillment.
67
+ - name: Platform
68
+ description: Platform-wide banner surfaces (global outage/maintenance banner, issue #284).
67
69
 
68
70
  paths:
69
71
  /admin/users/{userId}:
@@ -694,6 +696,98 @@ paths:
694
696
  schema:
695
697
  $ref: "#/components/schemas/ErrorMessageDto"
696
698
 
699
+ /platform/banner:
700
+ get:
701
+ tags: [Platform]
702
+ summary: Global platform banner
703
+ operationId: getPlatformBanner
704
+ security: []
705
+ description: >
706
+ Returns the active global outage or maintenance banner for the platform shell, if any.
707
+ No authentication required so signed-in users can see incident messaging during partial outages.
708
+ When both a database-managed banner and a runtime-config fallback exist, the database value wins.
709
+ responses:
710
+ "200":
711
+ description: Active platform banner (if any)
712
+ content:
713
+ application/json:
714
+ schema:
715
+ $ref: "#/components/schemas/PlatformBannerViewDto"
716
+
717
+ /admin/platform/banner:
718
+ get:
719
+ tags: [PlatformAdmin]
720
+ summary: Read stored and effective global platform banner
721
+ operationId: adminGetPlatformBanner
722
+ description: >
723
+ Platform admins only. Returns the database-stored banner (`stored`) for editing and the
724
+ merged banner users see (`effective`, DB wins over runtime-config fallback). Requires Bearer
725
+ JWT from an email on `PLATFORM_ADMIN_EMAILS`.
726
+ responses:
727
+ "200":
728
+ description: Admin platform banner view
729
+ content:
730
+ application/json:
731
+ schema:
732
+ $ref: "#/components/schemas/PlatformAdminBannerDto"
733
+ "401":
734
+ $ref: "#/components/responses/Unauthorized"
735
+ "403":
736
+ description: Caller is not a platform admin.
737
+ content:
738
+ application/json:
739
+ schema:
740
+ $ref: "#/components/schemas/ErrorMessageDto"
741
+ "503":
742
+ description: Platform banner persistence unavailable.
743
+ content:
744
+ application/json:
745
+ schema:
746
+ $ref: "#/components/schemas/ErrorMessageDto"
747
+ put:
748
+ tags: [PlatformAdmin]
749
+ summary: Set or clear global platform banner
750
+ operationId: adminUpsertPlatformBanner
751
+ description: >
752
+ Platform admins may activate, update, or clear (`banner: null`) the global outage/maintenance banner
753
+ shown in the authenticated SPA shell. Requires Bearer JWT from an email on `PLATFORM_ADMIN_EMAILS`.
754
+ requestBody:
755
+ required: true
756
+ content:
757
+ application/json:
758
+ schema:
759
+ $ref: "#/components/schemas/PlatformBannerUpsertDto"
760
+ responses:
761
+ "200":
762
+ description: Updated platform banner
763
+ content:
764
+ application/json:
765
+ schema:
766
+ $ref: "#/components/schemas/PlatformBannerViewDto"
767
+ "400":
768
+ description: Invalid banner payload
769
+ content:
770
+ application/json:
771
+ schema:
772
+ $ref: "#/components/schemas/ErrorMessageDto"
773
+ "401":
774
+ $ref: "#/components/responses/Unauthorized"
775
+ "403":
776
+ description: Caller is not a platform admin.
777
+ content:
778
+ application/json:
779
+ schema:
780
+ $ref: "#/components/schemas/ErrorMessageDto"
781
+ example:
782
+ error: Forbidden
783
+ code: forbidden
784
+ "503":
785
+ description: Platform banner persistence unavailable.
786
+ content:
787
+ application/json:
788
+ schema:
789
+ $ref: "#/components/schemas/ErrorMessageDto"
790
+
697
791
  /me:
698
792
  get:
699
793
  tags: [Me]
@@ -4666,6 +4760,53 @@ paths:
4666
4760
  schema:
4667
4761
  $ref: "#/components/schemas/ErrorMessageDto"
4668
4762
 
4763
+ /workspaces/{workspaceId}/agentic-foundation/repo-scope:
4764
+ put:
4765
+ tags: [AgenticFoundation]
4766
+ summary: Update Agentic Foundation repository scope
4767
+ description: >
4768
+ Bulk include/exclude materialized repos from Agentic Foundation by toggling the existing
4769
+ `user_removed` archive state. Excluded repos remain integrated for productivity metrics.
4770
+ Only workspace admins may call this endpoint. Partial failures are reported per repo.
4771
+ operationId: putAgenticFoundationRepoScope
4772
+ parameters:
4773
+ - $ref: "#/components/parameters/WorkspaceId"
4774
+ requestBody:
4775
+ required: true
4776
+ content:
4777
+ application/json:
4778
+ schema:
4779
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeBodyDto"
4780
+ example:
4781
+ changes:
4782
+ - repoId: 00000000-0000-0000-0000-000000000101
4783
+ included: false
4784
+ - repoId: 00000000-0000-0000-0000-000000000102
4785
+ included: true
4786
+ responses:
4787
+ "200":
4788
+ description: Scope changes applied (possibly with per-repo failures)
4789
+ content:
4790
+ application/json:
4791
+ schema:
4792
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeResponseDto"
4793
+ "400":
4794
+ description: Invalid request body
4795
+ content:
4796
+ application/json:
4797
+ schema:
4798
+ $ref: "#/components/schemas/ErrorMessageDto"
4799
+ "401":
4800
+ $ref: "#/components/responses/Unauthorized"
4801
+ "403":
4802
+ $ref: "#/components/responses/Forbidden"
4803
+ "404":
4804
+ description: Workspace does not exist
4805
+ content:
4806
+ application/json:
4807
+ schema:
4808
+ $ref: "#/components/schemas/ErrorMessageDto"
4809
+
4669
4810
  /workspaces/{workspaceId}/agentic-foundation/dashboard:
4670
4811
  get:
4671
4812
  tags: [AgenticFoundation]
@@ -11129,8 +11270,8 @@ components:
11129
11270
  archivedReason:
11130
11271
  type: string
11131
11272
  nullable: true
11132
- enum: [github_removed, installation_disconnected, installation_replaced, superseded]
11133
- description: Why the repo was archived. Only present when `archivedAt` is set.
11273
+ enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
11274
+ description: Why the repo was archived. `user_removed` means excluded from Agentic Foundation scope only. Only present when `archivedAt` is set.
11134
11275
  eligibilityStatus:
11135
11276
  type: string
11136
11277
  enum: [eligible, ineligible]
@@ -11273,7 +11414,7 @@ components:
11273
11414
  archivedReason:
11274
11415
  type: string
11275
11416
  nullable: true
11276
- enum: [github_removed, installation_disconnected, installation_replaced, superseded]
11417
+ enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
11277
11418
  eligibilityStatus:
11278
11419
  type: string
11279
11420
  enum: [eligible, ineligible]
@@ -11883,6 +12024,67 @@ components:
11883
12024
  type: string
11884
12025
  format: date-time
11885
12026
 
12027
+ PlatformBannerDto:
12028
+ type: object
12029
+ required: [id, kind, title, message, dismissible]
12030
+ properties:
12031
+ id:
12032
+ type: string
12033
+ description: Stable identifier used for dismiss persistence in the SPA.
12034
+ kind:
12035
+ type: string
12036
+ enum: [maintenance, outage, info]
12037
+ title:
12038
+ type: string
12039
+ message:
12040
+ type: string
12041
+ dismissible:
12042
+ type: boolean
12043
+ statusPageUrl:
12044
+ type: string
12045
+ description: Optional link to the public status page (status.aidrivensdlc.com).
12046
+ startsAt:
12047
+ type: string
12048
+ format: date-time
12049
+ description: When set, the banner is hidden before this instant (UTC).
12050
+ endsAt:
12051
+ type: string
12052
+ format: date-time
12053
+ description: When set, the banner is hidden after this instant (UTC).
12054
+
12055
+ PlatformBannerViewDto:
12056
+ type: object
12057
+ required: [banner]
12058
+ properties:
12059
+ banner:
12060
+ allOf:
12061
+ - $ref: "#/components/schemas/PlatformBannerDto"
12062
+ nullable: true
12063
+
12064
+ PlatformBannerUpsertDto:
12065
+ type: object
12066
+ required: [banner]
12067
+ properties:
12068
+ banner:
12069
+ allOf:
12070
+ - $ref: "#/components/schemas/PlatformBannerDto"
12071
+ nullable: true
12072
+ description: Pass null to clear the active database-managed banner.
12073
+
12074
+ PlatformAdminBannerDto:
12075
+ type: object
12076
+ required: [stored, effective]
12077
+ properties:
12078
+ stored:
12079
+ allOf:
12080
+ - $ref: "#/components/schemas/PlatformBannerDto"
12081
+ nullable: true
12082
+ description: Banner persisted in the database (editable via PUT).
12083
+ effective:
12084
+ allOf:
12085
+ - $ref: "#/components/schemas/PlatformBannerViewDto"
12086
+ description: Merged banner shown in the SPA (stored wins over runtime-config fallback).
12087
+
11886
12088
  NotificationDto:
11887
12089
  type: object
11888
12090
  required: [id, type, title, message, read, createdAt]
@@ -12453,6 +12655,77 @@ components:
12453
12655
  nullable: true
12454
12656
  description: ID of the freshly enqueued readiness scan run (only present on re-add).
12455
12657
 
12658
+ PutAgenticFoundationRepoScopeChangeDto:
12659
+ type: object
12660
+ required: [repoId, included]
12661
+ properties:
12662
+ repoId:
12663
+ type: string
12664
+ format: uuid
12665
+ included:
12666
+ type: boolean
12667
+ description: >
12668
+ `true` to include in Agentic Foundation scope (unarchive user_removed).
12669
+ `false` to exclude (soft-archive with archived_reason user_removed).
12670
+
12671
+ PutAgenticFoundationRepoScopeBodyDto:
12672
+ type: object
12673
+ required: [changes]
12674
+ properties:
12675
+ changes:
12676
+ type: array
12677
+ minItems: 1
12678
+ maxItems: 200
12679
+ items:
12680
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeChangeDto"
12681
+
12682
+ PutAgenticFoundationRepoScopeAppliedDto:
12683
+ type: object
12684
+ required: [repoId, status]
12685
+ properties:
12686
+ repoId:
12687
+ type: string
12688
+ format: uuid
12689
+ status:
12690
+ type: string
12691
+ enum: [Active, Inactive]
12692
+ runId:
12693
+ type: string
12694
+ format: uuid
12695
+ nullable: true
12696
+
12697
+ PutAgenticFoundationRepoScopeFailureDto:
12698
+ type: object
12699
+ required: [repoId, code, message]
12700
+ properties:
12701
+ repoId:
12702
+ type: string
12703
+ format: uuid
12704
+ code:
12705
+ type: string
12706
+ enum:
12707
+ - not_found
12708
+ - scan_in_progress
12709
+ - not_archived
12710
+ - already_active
12711
+ - system_archived
12712
+ - forbidden
12713
+ message:
12714
+ type: string
12715
+
12716
+ PutAgenticFoundationRepoScopeResponseDto:
12717
+ type: object
12718
+ required: [applied, failures]
12719
+ properties:
12720
+ applied:
12721
+ type: array
12722
+ items:
12723
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeAppliedDto"
12724
+ failures:
12725
+ type: array
12726
+ items:
12727
+ $ref: "#/components/schemas/PutAgenticFoundationRepoScopeFailureDto"
12728
+
12456
12729
  ActivityLogEventTypeDto:
12457
12730
  type: string
12458
12731
  description: Type of workspace lifecycle event.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.55.0",
3
+ "version": "2.57.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",