@thinkai/tai-api-contract 2.142.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.142.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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.142.0",
3
+ "version": "2.143.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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;
@@ -10170,6 +10214,8 @@ export interface components {
10170
10214
  InsightsRecommendationsDateTo: string;
10171
10215
  /** @description AI provider ids (e.g. `cursor`, `copilot`). Empty/omitted = all configured providers. */
10172
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")[];
10173
10219
  /** @description Include contributors / AI rows not mapped to a team. */
10174
10220
  InsightsRecommendationsIncludeUnmapped: boolean;
10175
10221
  /** @description Include bot accounts in PR/CI stats. */
@@ -10558,6 +10604,8 @@ export type PutAgenticFoundationRepoScopeAppliedDto = components['schemas']['Put
10558
10604
  export type PutAgenticFoundationRepoScopeFailureDto = components['schemas']['PutAgenticFoundationRepoScopeFailureDto'];
10559
10605
  export type PutAgenticFoundationRepoScopeResponseDto = components['schemas']['PutAgenticFoundationRepoScopeResponseDto'];
10560
10606
  export type ActivityLogEventTypeDto = components['schemas']['ActivityLogEventTypeDto'];
10607
+ export type ReportCenterExportRecordBodyDto = components['schemas']['ReportCenterExportRecordBodyDto'];
10608
+ export type ReportCenterExportRecordResponseDto = components['schemas']['ReportCenterExportRecordResponseDto'];
10561
10609
  export type ActivityLogActorDto = components['schemas']['ActivityLogActorDto'];
10562
10610
  export type ActivityLogEntryDto = components['schemas']['ActivityLogEntryDto'];
10563
10611
  export type WorkspaceAbsenceDto = components['schemas']['WorkspaceAbsenceDto'];
@@ -10769,6 +10817,7 @@ export type ParameterInsightsRecommendationsTeams = components['parameters']['In
10769
10817
  export type ParameterInsightsRecommendationsDateFrom = components['parameters']['InsightsRecommendationsDateFrom'];
10770
10818
  export type ParameterInsightsRecommendationsDateTo = components['parameters']['InsightsRecommendationsDateTo'];
10771
10819
  export type ParameterInsightsRecommendationsProvider = components['parameters']['InsightsRecommendationsProvider'];
10820
+ export type ParameterInsightsAiUsageProvider = components['parameters']['InsightsAiUsageProvider'];
10772
10821
  export type ParameterInsightsRecommendationsIncludeUnmapped = components['parameters']['InsightsRecommendationsIncludeUnmapped'];
10773
10822
  export type ParameterInsightsRecommendationsIncludeBots = components['parameters']['InsightsRecommendationsIncludeBots'];
10774
10823
  export type ParameterPaginationLimit = components['parameters']['PaginationLimit'];
@@ -13306,6 +13355,8 @@ export interface operations {
13306
13355
  to?: components["parameters"]["InsightsProductivityTo"];
13307
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). */
13308
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"];
13309
13360
  /** @description Team name filter; send `All teams` to include every team. */
13310
13361
  team?: string;
13311
13362
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13362,6 +13413,8 @@ export interface operations {
13362
13413
  to?: components["parameters"]["InsightsProductivityTo"];
13363
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). */
13364
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"];
13365
13418
  /** @description Team name filter; send `All teams` to include every team. */
13366
13419
  team?: string;
13367
13420
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13418,6 +13471,8 @@ export interface operations {
13418
13471
  to?: components["parameters"]["InsightsProductivityTo"];
13419
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). */
13420
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"];
13421
13476
  /** @description Team name filter; send `All teams` to include every team. */
13422
13477
  team?: string;
13423
13478
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13474,6 +13529,8 @@ export interface operations {
13474
13529
  to?: components["parameters"]["InsightsProductivityTo"];
13475
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). */
13476
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"];
13477
13534
  /** @description Team name filter; send `All teams` to include every team. */
13478
13535
  team?: string;
13479
13536
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13530,6 +13587,8 @@ export interface operations {
13530
13587
  to?: components["parameters"]["InsightsProductivityTo"];
13531
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). */
13532
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"];
13533
13592
  /** @description Team name filter; send `All teams` to include every team. */
13534
13593
  team?: string;
13535
13594
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13650,6 +13709,8 @@ export interface operations {
13650
13709
  to?: components["parameters"]["InsightsProductivityTo"];
13651
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). */
13652
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"];
13653
13714
  /** @description Team name filter; send `All teams` to include every team. */
13654
13715
  team?: string;
13655
13716
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13706,6 +13767,8 @@ export interface operations {
13706
13767
  to?: components["parameters"]["InsightsProductivityTo"];
13707
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). */
13708
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"];
13709
13772
  /** @description Team name filter; send `All teams` to include every team. */
13710
13773
  team?: string;
13711
13774
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -13762,6 +13825,8 @@ export interface operations {
13762
13825
  to?: components["parameters"]["InsightsProductivityTo"];
13763
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). */
13764
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"];
13765
13830
  /** @description Team name filter; send `All teams` to include every team. */
13766
13831
  team?: string;
13767
13832
  /** @description ISO timestamp for the end of the last weekly bucket; omit for current week. */
@@ -17164,6 +17229,61 @@ export interface operations {
17164
17229
  };
17165
17230
  };
17166
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
+ };
17167
17287
  listWorkspaceActivity: {
17168
17288
  parameters: {
17169
17289
  query?: {
@@ -17175,7 +17295,7 @@ export interface operations {
17175
17295
  order?: components["parameters"]["PaginationOrder"];
17176
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. */
17177
17297
  sort?: "when" | "who" | "what" | "why" | "where";
17178
- /** @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. */
17179
17299
  productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
17180
17300
  /** @description Filter to a specific event type. */
17181
17301
  eventType?: components["schemas"]["ActivityLogEventTypeDto"];