@thinkai/tai-api-contract 2.141.0 → 2.143.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.141.0
4
+ version: 2.143.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}/...`.
@@ -2600,6 +2600,7 @@ paths:
2600
2600
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2601
2601
  - $ref: "#/components/parameters/InsightsProductivityTo"
2602
2602
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2603
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2603
2604
  - name: team
2604
2605
  in: query
2605
2606
  description: Team name filter; send `All teams` to include every team.
@@ -2651,6 +2652,7 @@ paths:
2651
2652
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2652
2653
  - $ref: "#/components/parameters/InsightsProductivityTo"
2653
2654
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2655
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2654
2656
  - name: team
2655
2657
  in: query
2656
2658
  description: Team name filter; send `All teams` to include every team.
@@ -2701,6 +2703,7 @@ paths:
2701
2703
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2702
2704
  - $ref: "#/components/parameters/InsightsProductivityTo"
2703
2705
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2706
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2704
2707
  - name: team
2705
2708
  in: query
2706
2709
  description: Team name filter; send `All teams` to include every team.
@@ -2751,6 +2754,7 @@ paths:
2751
2754
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2752
2755
  - $ref: "#/components/parameters/InsightsProductivityTo"
2753
2756
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2757
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2754
2758
  - name: team
2755
2759
  in: query
2756
2760
  description: Team name filter; send `All teams` to include every team.
@@ -2804,6 +2808,7 @@ paths:
2804
2808
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2805
2809
  - $ref: "#/components/parameters/InsightsProductivityTo"
2806
2810
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2811
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2807
2812
  - name: team
2808
2813
  in: query
2809
2814
  description: Team name filter; send `All teams` to include every team.
@@ -2938,6 +2943,7 @@ paths:
2938
2943
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2939
2944
  - $ref: "#/components/parameters/InsightsProductivityTo"
2940
2945
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2946
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2941
2947
  - name: team
2942
2948
  in: query
2943
2949
  description: Team name filter; send `All teams` to include every team.
@@ -2989,6 +2995,7 @@ paths:
2989
2995
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2990
2996
  - $ref: "#/components/parameters/InsightsProductivityTo"
2991
2997
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2998
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2992
2999
  - name: team
2993
3000
  in: query
2994
3001
  description: Team name filter; send `All teams` to include every team.
@@ -3040,6 +3047,7 @@ paths:
3040
3047
  - $ref: "#/components/parameters/InsightsProductivityFrom"
3041
3048
  - $ref: "#/components/parameters/InsightsProductivityTo"
3042
3049
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
3050
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
3043
3051
  - name: team
3044
3052
  in: query
3045
3053
  description: Team name filter; send `All teams` to include every team.
@@ -6375,6 +6383,53 @@ paths:
6375
6383
  schema:
6376
6384
  $ref: "#/components/schemas/ErrorMessageDto"
6377
6385
 
6386
+ /workspaces/{workspaceId}/report-center/exports:
6387
+ post:
6388
+ tags: [WorkspaceActivity]
6389
+ summary: Record a Report Center PDF export
6390
+ operationId: recordReportCenterExport
6391
+ description: >
6392
+ Workspace admin (or platform admin) records that a Report Center PDF was downloaded.
6393
+ Inserts one `report.exported` activity-log row with the request body as secret-free metadata.
6394
+ Does not store PDF bytes. Members who are not workspace admins receive 403.
6395
+ parameters:
6396
+ - $ref: "#/components/parameters/WorkspaceId"
6397
+ requestBody:
6398
+ required: true
6399
+ content:
6400
+ application/json:
6401
+ schema:
6402
+ $ref: "#/components/schemas/ReportCenterExportRecordBodyDto"
6403
+ responses:
6404
+ "201":
6405
+ description: Export recorded
6406
+ content:
6407
+ application/json:
6408
+ schema:
6409
+ $ref: "#/components/schemas/ReportCenterExportRecordResponseDto"
6410
+ "400":
6411
+ description: Invalid body
6412
+ content:
6413
+ application/json:
6414
+ schema:
6415
+ $ref: "#/components/schemas/ErrorMessageDto"
6416
+ "401":
6417
+ $ref: "#/components/responses/Unauthorized"
6418
+ "403":
6419
+ $ref: "#/components/responses/Forbidden"
6420
+ "404":
6421
+ description: Workspace does not exist
6422
+ content:
6423
+ application/json:
6424
+ schema:
6425
+ $ref: "#/components/schemas/ErrorMessageDto"
6426
+ "501":
6427
+ description: Activity log is not supported by this backend build
6428
+ content:
6429
+ application/json:
6430
+ schema:
6431
+ $ref: "#/components/schemas/ErrorMessageDto"
6432
+
6378
6433
  /workspaces/{workspaceId}/activity:
6379
6434
  get:
6380
6435
  tags: [WorkspaceActivity]
@@ -6405,7 +6460,7 @@ paths:
6405
6460
  required: false
6406
6461
  description: >
6407
6462
  Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events;
6408
- `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS;
6463
+ `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS + report exports;
6409
6464
  `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area.
6410
6465
  schema:
6411
6466
  type: string
@@ -10426,6 +10481,19 @@ components:
10426
10481
  type: string
10427
10482
  style: form
10428
10483
  explode: true
10484
+ InsightsAiUsageProvider:
10485
+ name: provider
10486
+ in: query
10487
+ description: >
10488
+ AI provider ids to include. Repeat the parameter or send comma-separated values.
10489
+ Empty or omitted includes all supported providers.
10490
+ schema:
10491
+ type: array
10492
+ items:
10493
+ type: string
10494
+ enum: [cursor, claude]
10495
+ style: form
10496
+ explode: true
10429
10497
  InsightsRecommendationsIncludeUnmapped:
10430
10498
  name: includeUnmapped
10431
10499
  in: query
@@ -18967,6 +19035,94 @@ components:
18967
19035
  - integrations.grafana.sync_failed
18968
19036
  - integrations.zelt.added
18969
19037
  - integrations.zelt.removed
19038
+ - report.exported
19039
+
19040
+ ReportCenterExportRecordBodyDto:
19041
+ type: object
19042
+ description: >
19043
+ Metadata for a successful Report Center PDF download. Secret-free; no table payloads.
19044
+ Recorded as `report.exported` on the workspace activity log.
19045
+ required:
19046
+ - rangeId
19047
+ - department
19048
+ - team
19049
+ - sectionIds
19050
+ - preset
19051
+ - customized
19052
+ - timezone
19053
+ - filename
19054
+ properties:
19055
+ rangeId:
19056
+ type: string
19057
+ minLength: 1
19058
+ maxLength: 128
19059
+ description: Applied insights range id (e.g. `30d`, `cr:2026-01-01:2026-01-31`).
19060
+ department:
19061
+ type: string
19062
+ minLength: 1
19063
+ maxLength: 256
19064
+ team:
19065
+ type: string
19066
+ minLength: 1
19067
+ maxLength: 256
19068
+ selectedProductivityTeamIds:
19069
+ type: array
19070
+ maxItems: 256
19071
+ items:
19072
+ type: string
19073
+ minLength: 1
19074
+ maxLength: 128
19075
+ sectionIds:
19076
+ type: array
19077
+ minItems: 1
19078
+ maxItems: 64
19079
+ items:
19080
+ type: string
19081
+ minLength: 1
19082
+ maxLength: 128
19083
+ preset:
19084
+ type: string
19085
+ minLength: 1
19086
+ maxLength: 64
19087
+ description: >
19088
+ Preset id used as the starting point (e.g. `leadership`, `productivity`, `full`, `custom`).
19089
+ customized:
19090
+ type: boolean
19091
+ description: True when the admin changed section checks after picking a preset.
19092
+ timezone:
19093
+ type: string
19094
+ minLength: 1
19095
+ maxLength: 128
19096
+ description: IANA timezone printed on the PDF cover.
19097
+ filename:
19098
+ type: string
19099
+ minLength: 1
19100
+ maxLength: 256
19101
+ providerIds:
19102
+ type: array
19103
+ maxItems: 32
19104
+ items:
19105
+ type: string
19106
+ minLength: 1
19107
+ maxLength: 64
19108
+ repoIds:
19109
+ type: array
19110
+ maxItems: 512
19111
+ items:
19112
+ type: string
19113
+ minLength: 1
19114
+ maxLength: 256
19115
+
19116
+ ReportCenterExportRecordResponseDto:
19117
+ type: object
19118
+ required: [ok, activityEntryId]
19119
+ properties:
19120
+ ok:
19121
+ type: boolean
19122
+ enum: [true]
19123
+ activityEntryId:
19124
+ type: string
19125
+ format: uuid
18970
19126
 
18971
19127
  ActivityLogActorDto:
18972
19128
  type: object
@@ -20721,6 +20877,16 @@ components:
20721
20877
  description: >
20722
20878
  When true, re-enqueue even if the repository is already indexing or was
20723
20879
  indexed within the last 10 minutes.
20880
+ indexOnly:
20881
+ type: boolean
20882
+ default: false
20883
+ description: >
20884
+ When true, each enqueued knowledge job clones the repository, builds the
20885
+ code graph, marks the index ready, and finishes with wiki tracks skipped.
20886
+ It does not write wiki pages and does not require an execution key.
20887
+ Omit or false to keep the full pipeline, including wiki. Distinct from
20888
+ skipLlm, which still writes a skeleton wiki. A job that is already
20889
+ queued or running keeps the options it was enqueued with.
20724
20890
 
20725
20891
  CodeChatSyncIndexesResultDto:
20726
20892
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.141.0",
3
+ "version": "2.143.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,8 +20,8 @@
20
20
  },
21
21
  "devDependencies": {
22
22
  "@stoplight/spectral-cli": "^6.16.3",
23
- "@types/node": "^26.6.2",
24
- "jsonpath-plus": "^10.3.0",
23
+ "@types/node": "^26.6.3",
24
+ "jsonpath-plus": "^11.1.0",
25
25
  "openapi-typescript": "^7.13.0",
26
26
  "typescript": "~6.0.3"
27
27
  },
@@ -2400,6 +2400,26 @@ export interface paths {
2400
2400
  patch?: never;
2401
2401
  trace?: never;
2402
2402
  };
2403
+ "/workspaces/{workspaceId}/report-center/exports": {
2404
+ parameters: {
2405
+ query?: never;
2406
+ header?: never;
2407
+ path?: never;
2408
+ cookie?: never;
2409
+ };
2410
+ get?: never;
2411
+ put?: never;
2412
+ /**
2413
+ * Record a Report Center PDF export
2414
+ * @description Workspace admin (or platform admin) records that a Report Center PDF was downloaded. Inserts one `report.exported` activity-log row with the request body as secret-free metadata. Does not store PDF bytes. Members who are not workspace admins receive 403.
2415
+ */
2416
+ post: operations["recordReportCenterExport"];
2417
+ delete?: never;
2418
+ options?: never;
2419
+ head?: never;
2420
+ patch?: never;
2421
+ trace?: never;
2422
+ };
2403
2423
  "/workspaces/{workspaceId}/activity": {
2404
2424
  parameters: {
2405
2425
  query?: never;
@@ -8098,7 +8118,31 @@ export interface components {
8098
8118
  * @description Type of workspace lifecycle event.
8099
8119
  * @enum {string}
8100
8120
  */
8101
- ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "code_insights.design_run_started" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.invite_accepted" | "member.invite_rejected" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.zelt.sync_started" | "hris.zelt.sync_completed" | "hris.zelt.sync_failed" | "hris.hibob.sync_started" | "hris.hibob.sync_completed" | "hris.hibob.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "integrations.code_intelligence.settings_changed" | "integrations.code_intelligence.execution_key.added" | "integrations.code_intelligence.execution_key.updated" | "integrations.code_intelligence.execution_key.removed" | "integrations.code_intelligence.execution_key.check_failed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed" | "integrations.zelt.added" | "integrations.zelt.removed";
8121
+ ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "code_insights.design_run_started" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.invite_accepted" | "member.invite_rejected" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.zelt.sync_started" | "hris.zelt.sync_completed" | "hris.zelt.sync_failed" | "hris.hibob.sync_started" | "hris.hibob.sync_completed" | "hris.hibob.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "integrations.code_intelligence.settings_changed" | "integrations.code_intelligence.execution_key.added" | "integrations.code_intelligence.execution_key.updated" | "integrations.code_intelligence.execution_key.removed" | "integrations.code_intelligence.execution_key.check_failed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed" | "integrations.zelt.added" | "integrations.zelt.removed" | "report.exported";
8122
+ /** @description Metadata for a successful Report Center PDF download. Secret-free; no table payloads. Recorded as `report.exported` on the workspace activity log. */
8123
+ ReportCenterExportRecordBodyDto: {
8124
+ /** @description Applied insights range id (e.g. `30d`, `cr:2026-01-01:2026-01-31`). */
8125
+ rangeId: string;
8126
+ department: string;
8127
+ team: string;
8128
+ selectedProductivityTeamIds?: string[];
8129
+ sectionIds: string[];
8130
+ /** @description Preset id used as the starting point (e.g. `leadership`, `productivity`, `full`, `custom`). */
8131
+ preset: string;
8132
+ /** @description True when the admin changed section checks after picking a preset. */
8133
+ customized: boolean;
8134
+ /** @description IANA timezone printed on the PDF cover. */
8135
+ timezone: string;
8136
+ filename: string;
8137
+ providerIds?: string[];
8138
+ repoIds?: string[];
8139
+ };
8140
+ ReportCenterExportRecordResponseDto: {
8141
+ /** @enum {boolean} */
8142
+ ok: true;
8143
+ /** Format: uuid */
8144
+ activityEntryId: string;
8145
+ };
8102
8146
  ActivityLogActorDto: {
8103
8147
  /** Format: uuid */
8104
8148
  userId: string;
@@ -8945,6 +8989,11 @@ export interface components {
8945
8989
  * @default false
8946
8990
  */
8947
8991
  force: boolean;
8992
+ /**
8993
+ * @description When true, each enqueued knowledge job clones the repository, builds the code graph, marks the index ready, and finishes with wiki tracks skipped. It does not write wiki pages and does not require an execution key. Omit or false to keep the full pipeline, including wiki. Distinct from skipLlm, which still writes a skeleton wiki. A job that is already queued or running keeps the options it was enqueued with.
8994
+ * @default false
8995
+ */
8996
+ indexOnly: boolean;
8948
8997
  };
8949
8998
  CodeChatSyncIndexesResultDto: {
8950
8999
  enqueued: number;
@@ -10165,6 +10214,8 @@ export interface components {
10165
10214
  InsightsRecommendationsDateTo: string;
10166
10215
  /** @description AI provider ids (e.g. `cursor`, `copilot`). Empty/omitted = all configured providers. */
10167
10216
  InsightsRecommendationsProvider: string[];
10217
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
10218
+ InsightsAiUsageProvider: ("cursor" | "claude")[];
10168
10219
  /** @description Include contributors / AI rows not mapped to a team. */
10169
10220
  InsightsRecommendationsIncludeUnmapped: boolean;
10170
10221
  /** @description Include bot accounts in PR/CI stats. */
@@ -10553,6 +10604,8 @@ export type PutAgenticFoundationRepoScopeAppliedDto = components['schemas']['Put
10553
10604
  export type PutAgenticFoundationRepoScopeFailureDto = components['schemas']['PutAgenticFoundationRepoScopeFailureDto'];
10554
10605
  export type PutAgenticFoundationRepoScopeResponseDto = components['schemas']['PutAgenticFoundationRepoScopeResponseDto'];
10555
10606
  export type ActivityLogEventTypeDto = components['schemas']['ActivityLogEventTypeDto'];
10607
+ export type ReportCenterExportRecordBodyDto = components['schemas']['ReportCenterExportRecordBodyDto'];
10608
+ export type ReportCenterExportRecordResponseDto = components['schemas']['ReportCenterExportRecordResponseDto'];
10556
10609
  export type ActivityLogActorDto = components['schemas']['ActivityLogActorDto'];
10557
10610
  export type ActivityLogEntryDto = components['schemas']['ActivityLogEntryDto'];
10558
10611
  export type WorkspaceAbsenceDto = components['schemas']['WorkspaceAbsenceDto'];
@@ -10764,6 +10817,7 @@ export type ParameterInsightsRecommendationsTeams = components['parameters']['In
10764
10817
  export type ParameterInsightsRecommendationsDateFrom = components['parameters']['InsightsRecommendationsDateFrom'];
10765
10818
  export type ParameterInsightsRecommendationsDateTo = components['parameters']['InsightsRecommendationsDateTo'];
10766
10819
  export type ParameterInsightsRecommendationsProvider = components['parameters']['InsightsRecommendationsProvider'];
10820
+ export type ParameterInsightsAiUsageProvider = components['parameters']['InsightsAiUsageProvider'];
10767
10821
  export type ParameterInsightsRecommendationsIncludeUnmapped = components['parameters']['InsightsRecommendationsIncludeUnmapped'];
10768
10822
  export type ParameterInsightsRecommendationsIncludeBots = components['parameters']['InsightsRecommendationsIncludeBots'];
10769
10823
  export type ParameterPaginationLimit = components['parameters']['PaginationLimit'];
@@ -13301,6 +13355,8 @@ export interface operations {
13301
13355
  to?: components["parameters"]["InsightsProductivityTo"];
13302
13356
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13303
13357
  department?: components["parameters"]["InsightsDepartmentFilter"];
13358
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13359
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13304
13360
  /** @description Team name filter; send `All teams` to include every team. */
13305
13361
  team?: string;
13306
13362
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13357,6 +13413,8 @@ export interface operations {
13357
13413
  to?: components["parameters"]["InsightsProductivityTo"];
13358
13414
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13359
13415
  department?: components["parameters"]["InsightsDepartmentFilter"];
13416
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13417
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13360
13418
  /** @description Team name filter; send `All teams` to include every team. */
13361
13419
  team?: string;
13362
13420
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13413,6 +13471,8 @@ export interface operations {
13413
13471
  to?: components["parameters"]["InsightsProductivityTo"];
13414
13472
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13415
13473
  department?: components["parameters"]["InsightsDepartmentFilter"];
13474
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13475
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13416
13476
  /** @description Team name filter; send `All teams` to include every team. */
13417
13477
  team?: string;
13418
13478
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13469,6 +13529,8 @@ export interface operations {
13469
13529
  to?: components["parameters"]["InsightsProductivityTo"];
13470
13530
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13471
13531
  department?: components["parameters"]["InsightsDepartmentFilter"];
13532
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13533
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13472
13534
  /** @description Team name filter; send `All teams` to include every team. */
13473
13535
  team?: string;
13474
13536
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13525,6 +13587,8 @@ export interface operations {
13525
13587
  to?: components["parameters"]["InsightsProductivityTo"];
13526
13588
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13527
13589
  department?: components["parameters"]["InsightsDepartmentFilter"];
13590
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13591
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13528
13592
  /** @description Team name filter; send `All teams` to include every team. */
13529
13593
  team?: string;
13530
13594
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13645,6 +13709,8 @@ export interface operations {
13645
13709
  to?: components["parameters"]["InsightsProductivityTo"];
13646
13710
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13647
13711
  department?: components["parameters"]["InsightsDepartmentFilter"];
13712
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13713
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13648
13714
  /** @description Team name filter; send `All teams` to include every team. */
13649
13715
  team?: string;
13650
13716
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13701,6 +13767,8 @@ export interface operations {
13701
13767
  to?: components["parameters"]["InsightsProductivityTo"];
13702
13768
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13703
13769
  department?: components["parameters"]["InsightsDepartmentFilter"];
13770
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13771
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13704
13772
  /** @description Team name filter; send `All teams` to include every team. */
13705
13773
  team?: string;
13706
13774
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13757,6 +13825,8 @@ export interface operations {
13757
13825
  to?: components["parameters"]["InsightsProductivityTo"];
13758
13826
  /** @description Department filter; send `All departments` to include every department. Scoped using imported `thinkai_org_structure` members when present, otherwise SPA org chart `department` nodes and their descendant teams. When neither source defines the requested department, insights return no scoped teams or contributors (not org-wide data). */
13759
13827
  department?: components["parameters"]["InsightsDepartmentFilter"];
13828
+ /** @description AI provider ids to include. Repeat the parameter or send comma-separated values. Empty or omitted includes all supported providers. */
13829
+ provider?: components["parameters"]["InsightsAiUsageProvider"];
13760
13830
  /** @description Team name filter; send `All teams` to include every team. */
13761
13831
  team?: string;
13762
13832
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -17159,6 +17229,61 @@ export interface operations {
17159
17229
  };
17160
17230
  };
17161
17231
  };
17232
+ recordReportCenterExport: {
17233
+ parameters: {
17234
+ query?: never;
17235
+ header?: never;
17236
+ path: {
17237
+ workspaceId: components["parameters"]["WorkspaceId"];
17238
+ };
17239
+ cookie?: never;
17240
+ };
17241
+ requestBody: {
17242
+ content: {
17243
+ "application/json": components["schemas"]["ReportCenterExportRecordBodyDto"];
17244
+ };
17245
+ };
17246
+ responses: {
17247
+ /** @description Export recorded */
17248
+ 201: {
17249
+ headers: {
17250
+ [name: string]: unknown;
17251
+ };
17252
+ content: {
17253
+ "application/json": components["schemas"]["ReportCenterExportRecordResponseDto"];
17254
+ };
17255
+ };
17256
+ /** @description Invalid body */
17257
+ 400: {
17258
+ headers: {
17259
+ [name: string]: unknown;
17260
+ };
17261
+ content: {
17262
+ "application/json": components["schemas"]["ErrorMessageDto"];
17263
+ };
17264
+ };
17265
+ 401: components["responses"]["Unauthorized"];
17266
+ 403: components["responses"]["Forbidden"];
17267
+ /** @description Workspace does not exist */
17268
+ 404: {
17269
+ headers: {
17270
+ [name: string]: unknown;
17271
+ };
17272
+ content: {
17273
+ "application/json": components["schemas"]["ErrorMessageDto"];
17274
+ };
17275
+ };
17276
+ /** @description Activity log is not supported by this backend build */
17277
+ 501: {
17278
+ headers: {
17279
+ [name: string]: unknown;
17280
+ };
17281
+ content: {
17282
+ "application/json": components["schemas"]["ErrorMessageDto"];
17283
+ };
17284
+ };
17285
+ };
17286
+ };
17162
17287
  listWorkspaceActivity: {
17163
17288
  parameters: {
17164
17289
  query?: {
@@ -17170,7 +17295,7 @@ export interface operations {
17170
17295
  order?: components["parameters"]["PaginationOrder"];
17171
17296
  /** @description Server-side sort column (the activity "5 W's"). Combined with `order` (asc/desc). Defaults to `when` (occurredAt). `occurredAt`/`id` is always the tiebreaker. */
17172
17297
  sort?: "when" | "who" | "what" | "why" | "where";
17173
- /** @description Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events; `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS; `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area. */
17298
+ /** @description Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events; `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS + report exports; `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area. */
17174
17299
  productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
17175
17300
  /** @description Filter to a specific event type. */
17176
17301
  eventType?: components["schemas"]["ActivityLogEventTypeDto"];