@thinkai/tai-api-contract 2.162.0 → 2.164.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/openapi.d.ts +171 -6
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +182 -15
- package/package.json +1 -1
- package/src/generated/openapi.ts +171 -6
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.164.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}/...`.
|
|
@@ -1039,7 +1039,6 @@ paths:
|
|
|
1039
1039
|
email: new.member@example.com
|
|
1040
1040
|
role: editor
|
|
1041
1041
|
status: pending
|
|
1042
|
-
invitedByName: Dana Admin
|
|
1043
1042
|
expiresAt: "2026-08-01T12:00:00.000Z"
|
|
1044
1043
|
createdAt: "2026-07-25T12:00:00.000Z"
|
|
1045
1044
|
alreadyMember:
|
|
@@ -6423,6 +6422,91 @@ paths:
|
|
|
6423
6422
|
schema:
|
|
6424
6423
|
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6425
6424
|
|
|
6425
|
+
/workspaces/{workspaceId}/aggregate-use-consent:
|
|
6426
|
+
get:
|
|
6427
|
+
tags: [Workspace]
|
|
6428
|
+
summary: Read anonymized aggregate-use permission
|
|
6429
|
+
operationId: getAggregateUseConsent
|
|
6430
|
+
description: >
|
|
6431
|
+
Returns whether ThinkAI may use this workspace's anonymized aggregate results in
|
|
6432
|
+
marketing and peer benchmarks. A workspace that never chose returns `unset`, which
|
|
6433
|
+
behaves as opted out (`effective: false`). The permission never covers company name,
|
|
6434
|
+
logo, quote, raw report, repository or person identity, or customer reference.
|
|
6435
|
+
Any workspace member may read it.
|
|
6436
|
+
parameters:
|
|
6437
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
6438
|
+
responses:
|
|
6439
|
+
"200":
|
|
6440
|
+
description: Current permission and the sentence reports must print
|
|
6441
|
+
content:
|
|
6442
|
+
application/json:
|
|
6443
|
+
schema:
|
|
6444
|
+
$ref: "#/components/schemas/AggregateUseConsentDto"
|
|
6445
|
+
"401":
|
|
6446
|
+
$ref: "#/components/responses/Unauthorized"
|
|
6447
|
+
"403":
|
|
6448
|
+
$ref: "#/components/responses/Forbidden"
|
|
6449
|
+
"404":
|
|
6450
|
+
description: Workspace does not exist
|
|
6451
|
+
content:
|
|
6452
|
+
application/json:
|
|
6453
|
+
schema:
|
|
6454
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6455
|
+
put:
|
|
6456
|
+
tags: [Workspace]
|
|
6457
|
+
summary: Set anonymized aggregate-use permission
|
|
6458
|
+
operationId: putAggregateUseConsent
|
|
6459
|
+
description: >
|
|
6460
|
+
Workspace admins opt in or out. Every change writes one
|
|
6461
|
+
`workspace.aggregate_use.changed` activity-log row in the same transaction.
|
|
6462
|
+
Moving from `opt_in` to `opt_out` records a withdrawal and stops future extraction.
|
|
6463
|
+
Opt-in requires the current legal-approved notice version; while no notice is
|
|
6464
|
+
approved, opt-in returns `409 aggregate_use_notice_unapproved`. Opt-out is always
|
|
6465
|
+
accepted. A refusal does not change price, delivery, support, or assessment output.
|
|
6466
|
+
parameters:
|
|
6467
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
6468
|
+
requestBody:
|
|
6469
|
+
required: true
|
|
6470
|
+
content:
|
|
6471
|
+
application/json:
|
|
6472
|
+
schema:
|
|
6473
|
+
$ref: "#/components/schemas/AggregateUseConsentPutDto"
|
|
6474
|
+
responses:
|
|
6475
|
+
"200":
|
|
6476
|
+
description: Saved permission
|
|
6477
|
+
content:
|
|
6478
|
+
application/json:
|
|
6479
|
+
schema:
|
|
6480
|
+
$ref: "#/components/schemas/AggregateUseConsentDto"
|
|
6481
|
+
"400":
|
|
6482
|
+
description: "Invalid body (`code`: `invalid_input`)"
|
|
6483
|
+
content:
|
|
6484
|
+
application/json:
|
|
6485
|
+
schema:
|
|
6486
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6487
|
+
"401":
|
|
6488
|
+
$ref: "#/components/responses/Unauthorized"
|
|
6489
|
+
"403":
|
|
6490
|
+
description: "Caller is not a workspace admin (`code`: `workspace_admin_required`)"
|
|
6491
|
+
content:
|
|
6492
|
+
application/json:
|
|
6493
|
+
schema:
|
|
6494
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6495
|
+
"404":
|
|
6496
|
+
description: Workspace does not exist
|
|
6497
|
+
content:
|
|
6498
|
+
application/json:
|
|
6499
|
+
schema:
|
|
6500
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6501
|
+
"409":
|
|
6502
|
+
description: >
|
|
6503
|
+
Opt-in refused because no notice is approved (`aggregate_use_notice_unapproved`)
|
|
6504
|
+
or the submitted notice version is not current (`aggregate_use_notice_stale`).
|
|
6505
|
+
content:
|
|
6506
|
+
application/json:
|
|
6507
|
+
schema:
|
|
6508
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
6509
|
+
|
|
6426
6510
|
/workspaces/{workspaceId}/report-center/exports:
|
|
6427
6511
|
post:
|
|
6428
6512
|
tags: [WorkspaceActivity]
|
|
@@ -6500,7 +6584,7 @@ paths:
|
|
|
6500
6584
|
required: false
|
|
6501
6585
|
description: >
|
|
6502
6586
|
Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events;
|
|
6503
|
-
`agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS + report exports;
|
|
6587
|
+
`agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS + report exports + workspace settings;
|
|
6504
6588
|
`productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area.
|
|
6505
6589
|
schema:
|
|
6506
6590
|
type: string
|
|
@@ -11833,7 +11917,10 @@ components:
|
|
|
11833
11917
|
|
|
11834
11918
|
WorkspaceInvitationDto:
|
|
11835
11919
|
type: object
|
|
11836
|
-
description:
|
|
11920
|
+
description: >
|
|
11921
|
+
Workspace invitation as seen by an authenticated admin or invitee.
|
|
11922
|
+
Inviter identity is omitted from this DTO (mailer uses store rows; public
|
|
11923
|
+
preview exposes `invitedByName` on `WorkspaceInvitationPreviewDto` only).
|
|
11837
11924
|
required: [id, workspaceId, workspaceName, email, role, status, expiresAt, createdAt]
|
|
11838
11925
|
properties:
|
|
11839
11926
|
id:
|
|
@@ -11852,12 +11939,6 @@ components:
|
|
|
11852
11939
|
enum: [admin, editor, viewer]
|
|
11853
11940
|
status:
|
|
11854
11941
|
$ref: "#/components/schemas/WorkspaceInvitationStatusDto"
|
|
11855
|
-
invitedByName:
|
|
11856
|
-
type: string
|
|
11857
|
-
nullable: true
|
|
11858
|
-
invitedByEmail:
|
|
11859
|
-
type: string
|
|
11860
|
-
nullable: true
|
|
11861
11942
|
expiresAt:
|
|
11862
11943
|
type: string
|
|
11863
11944
|
format: date-time
|
|
@@ -15640,18 +15721,15 @@ components:
|
|
|
15640
15721
|
|
|
15641
15722
|
MeProfileDto:
|
|
15642
15723
|
type: object
|
|
15643
|
-
required: [id, email, name
|
|
15724
|
+
required: [id, email, name]
|
|
15644
15725
|
properties:
|
|
15645
15726
|
id:
|
|
15646
15727
|
type: string
|
|
15728
|
+
description: Authenticated subject id (JWT `sub`).
|
|
15647
15729
|
email:
|
|
15648
15730
|
type: string
|
|
15649
15731
|
name:
|
|
15650
15732
|
type: string
|
|
15651
|
-
roles:
|
|
15652
|
-
type: array
|
|
15653
|
-
items:
|
|
15654
|
-
type: string
|
|
15655
15733
|
defaultWorkspaceId:
|
|
15656
15734
|
type: string
|
|
15657
15735
|
nullable: true
|
|
@@ -20593,6 +20671,7 @@ components:
|
|
|
20593
20671
|
- integrations.zelt.added
|
|
20594
20672
|
- integrations.zelt.removed
|
|
20595
20673
|
- report.exported
|
|
20674
|
+
- workspace.aggregate_use.changed
|
|
20596
20675
|
|
|
20597
20676
|
UnsetAssessmentDecisionDto:
|
|
20598
20677
|
type: object
|
|
@@ -20603,6 +20682,94 @@ components:
|
|
|
20603
20682
|
type: string
|
|
20604
20683
|
enum: [unset]
|
|
20605
20684
|
|
|
20685
|
+
AggregateUseNoticeStatusDto:
|
|
20686
|
+
type: object
|
|
20687
|
+
additionalProperties: false
|
|
20688
|
+
required: [status]
|
|
20689
|
+
description: Current legal-approved opt-in notice, or `unset` while opt-in is unavailable.
|
|
20690
|
+
properties:
|
|
20691
|
+
status:
|
|
20692
|
+
type: string
|
|
20693
|
+
enum: [approved, unset]
|
|
20694
|
+
version:
|
|
20695
|
+
type: string
|
|
20696
|
+
description: Present only when `status` is `approved`. Send it back on opt-in.
|
|
20697
|
+
|
|
20698
|
+
AggregateUseConsentDto:
|
|
20699
|
+
type: object
|
|
20700
|
+
additionalProperties: false
|
|
20701
|
+
required:
|
|
20702
|
+
- aggregateUse
|
|
20703
|
+
- effective
|
|
20704
|
+
- noticeVersion
|
|
20705
|
+
- source
|
|
20706
|
+
- recordedAt
|
|
20707
|
+
- recordedBy
|
|
20708
|
+
- withdrawnAt
|
|
20709
|
+
- currentNotice
|
|
20710
|
+
- reportSentence
|
|
20711
|
+
properties:
|
|
20712
|
+
aggregateUse:
|
|
20713
|
+
type: string
|
|
20714
|
+
enum: [opt_in, opt_out, unset]
|
|
20715
|
+
description: Saved choice. `unset` means the workspace never chose and is treated as opted out.
|
|
20716
|
+
effective:
|
|
20717
|
+
type: boolean
|
|
20718
|
+
description: True only for `opt_in`. Benchmark and marketing extraction must check this.
|
|
20719
|
+
noticeVersion:
|
|
20720
|
+
type: string
|
|
20721
|
+
nullable: true
|
|
20722
|
+
description: Notice version accepted with the current opt-in; null otherwise.
|
|
20723
|
+
source:
|
|
20724
|
+
type: string
|
|
20725
|
+
nullable: true
|
|
20726
|
+
enum: [workspace_settings]
|
|
20727
|
+
recordedAt:
|
|
20728
|
+
type: string
|
|
20729
|
+
format: date-time
|
|
20730
|
+
nullable: true
|
|
20731
|
+
description: When the current choice was saved; null when `unset`.
|
|
20732
|
+
recordedBy:
|
|
20733
|
+
type: object
|
|
20734
|
+
nullable: true
|
|
20735
|
+
additionalProperties: false
|
|
20736
|
+
required: [userId, displayName]
|
|
20737
|
+
properties:
|
|
20738
|
+
userId:
|
|
20739
|
+
type: string
|
|
20740
|
+
format: uuid
|
|
20741
|
+
displayName:
|
|
20742
|
+
type: string
|
|
20743
|
+
nullable: true
|
|
20744
|
+
withdrawnAt:
|
|
20745
|
+
type: string
|
|
20746
|
+
format: date-time
|
|
20747
|
+
nullable: true
|
|
20748
|
+
description: Most recent opt-in withdrawal while the workspace remains opted out.
|
|
20749
|
+
currentNotice:
|
|
20750
|
+
$ref: "#/components/schemas/AggregateUseNoticeStatusDto"
|
|
20751
|
+
reportSentence:
|
|
20752
|
+
type: string
|
|
20753
|
+
nullable: true
|
|
20754
|
+
description: >
|
|
20755
|
+
Exact sentence the assessment PDF prints beside `recordedAt`. Opted-out and unset
|
|
20756
|
+
workspaces get the fixed refusal sentence. Opt-in returns the approved sentence for
|
|
20757
|
+
the accepted notice, or null if that notice is unknown, which blocks validation.
|
|
20758
|
+
|
|
20759
|
+
AggregateUseConsentPutDto:
|
|
20760
|
+
type: object
|
|
20761
|
+
additionalProperties: false
|
|
20762
|
+
required: [aggregateUse]
|
|
20763
|
+
properties:
|
|
20764
|
+
aggregateUse:
|
|
20765
|
+
type: string
|
|
20766
|
+
enum: [opt_in, opt_out]
|
|
20767
|
+
noticeVersion:
|
|
20768
|
+
type: string
|
|
20769
|
+
nullable: true
|
|
20770
|
+
minLength: 1
|
|
20771
|
+
description: Required for `opt_in` and must equal `currentNotice.version`. Ignored for `opt_out`.
|
|
20772
|
+
|
|
20606
20773
|
AssessmentDictionaryDto:
|
|
20607
20774
|
type: object
|
|
20608
20775
|
additionalProperties: false
|
package/package.json
CHANGED
package/src/generated/openapi.ts
CHANGED
|
@@ -2420,6 +2420,30 @@ export interface paths {
|
|
|
2420
2420
|
patch?: never;
|
|
2421
2421
|
trace?: never;
|
|
2422
2422
|
};
|
|
2423
|
+
"/workspaces/{workspaceId}/aggregate-use-consent": {
|
|
2424
|
+
parameters: {
|
|
2425
|
+
query?: never;
|
|
2426
|
+
header?: never;
|
|
2427
|
+
path?: never;
|
|
2428
|
+
cookie?: never;
|
|
2429
|
+
};
|
|
2430
|
+
/**
|
|
2431
|
+
* Read anonymized aggregate-use permission
|
|
2432
|
+
* @description Returns whether ThinkAI may use this workspace's anonymized aggregate results in marketing and peer benchmarks. A workspace that never chose returns `unset`, which behaves as opted out (`effective: false`). The permission never covers company name, logo, quote, raw report, repository or person identity, or customer reference. Any workspace member may read it.
|
|
2433
|
+
*/
|
|
2434
|
+
get: operations["getAggregateUseConsent"];
|
|
2435
|
+
/**
|
|
2436
|
+
* Set anonymized aggregate-use permission
|
|
2437
|
+
* @description Workspace admins opt in or out. Every change writes one `workspace.aggregate_use.changed` activity-log row in the same transaction. Moving from `opt_in` to `opt_out` records a withdrawal and stops future extraction. Opt-in requires the current legal-approved notice version; while no notice is approved, opt-in returns `409 aggregate_use_notice_unapproved`. Opt-out is always accepted. A refusal does not change price, delivery, support, or assessment output.
|
|
2438
|
+
*/
|
|
2439
|
+
put: operations["putAggregateUseConsent"];
|
|
2440
|
+
post?: never;
|
|
2441
|
+
delete?: never;
|
|
2442
|
+
options?: never;
|
|
2443
|
+
head?: never;
|
|
2444
|
+
patch?: never;
|
|
2445
|
+
trace?: never;
|
|
2446
|
+
};
|
|
2423
2447
|
"/workspaces/{workspaceId}/report-center/exports": {
|
|
2424
2448
|
parameters: {
|
|
2425
2449
|
query?: never;
|
|
@@ -4724,7 +4748,7 @@ export interface components {
|
|
|
4724
4748
|
* @enum {string}
|
|
4725
4749
|
*/
|
|
4726
4750
|
WorkspaceInvitationStatusDto: "pending" | "accepted" | "expired" | "revoked" | "rejected";
|
|
4727
|
-
/** @description Workspace invitation as seen by an authenticated admin or invitee. */
|
|
4751
|
+
/** @description Workspace invitation as seen by an authenticated admin or invitee. Inviter identity is omitted from this DTO (mailer uses store rows; public preview exposes `invitedByName` on `WorkspaceInvitationPreviewDto` only). */
|
|
4728
4752
|
WorkspaceInvitationDto: {
|
|
4729
4753
|
/** Format: uuid */
|
|
4730
4754
|
id: string;
|
|
@@ -4736,8 +4760,6 @@ export interface components {
|
|
|
4736
4760
|
/** @enum {string} */
|
|
4737
4761
|
role: "admin" | "editor" | "viewer";
|
|
4738
4762
|
status: components["schemas"]["WorkspaceInvitationStatusDto"];
|
|
4739
|
-
invitedByName?: string | null;
|
|
4740
|
-
invitedByEmail?: string | null;
|
|
4741
4763
|
/** Format: date-time */
|
|
4742
4764
|
expiresAt: string;
|
|
4743
4765
|
/** Format: date-time */
|
|
@@ -6528,10 +6550,10 @@ export interface components {
|
|
|
6528
6550
|
heatmap: components["schemas"]["AiToolMemberHeatmapDayDto"][];
|
|
6529
6551
|
};
|
|
6530
6552
|
MeProfileDto: {
|
|
6553
|
+
/** @description Authenticated subject id (JWT `sub`). */
|
|
6531
6554
|
id: string;
|
|
6532
6555
|
email: string;
|
|
6533
6556
|
name: string;
|
|
6534
|
-
roles: string[];
|
|
6535
6557
|
defaultWorkspaceId?: string | null;
|
|
6536
6558
|
/** @description True when the caller's email is on the `PLATFORM_ADMIN_EMAILS` allowlist. Lets the frontend gate platform-admin surfaces (e.g. the privacy-request queue) without duplicating the allowlist client-side. */
|
|
6537
6559
|
isPlatformAdmin?: boolean;
|
|
@@ -8725,11 +8747,55 @@ export interface components {
|
|
|
8725
8747
|
* @description Type of workspace lifecycle event.
|
|
8726
8748
|
* @enum {string}
|
|
8727
8749
|
*/
|
|
8728
|
-
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";
|
|
8750
|
+
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" | "workspace.aggregate_use.changed";
|
|
8729
8751
|
UnsetAssessmentDecisionDto: {
|
|
8730
8752
|
/** @enum {string} */
|
|
8731
8753
|
status: "unset";
|
|
8732
8754
|
};
|
|
8755
|
+
/** @description Current legal-approved opt-in notice, or `unset` while opt-in is unavailable. */
|
|
8756
|
+
AggregateUseNoticeStatusDto: {
|
|
8757
|
+
/** @enum {string} */
|
|
8758
|
+
status: "approved" | "unset";
|
|
8759
|
+
/** @description Present only when `status` is `approved`. Send it back on opt-in. */
|
|
8760
|
+
version?: string;
|
|
8761
|
+
};
|
|
8762
|
+
AggregateUseConsentDto: {
|
|
8763
|
+
/**
|
|
8764
|
+
* @description Saved choice. `unset` means the workspace never chose and is treated as opted out.
|
|
8765
|
+
* @enum {string}
|
|
8766
|
+
*/
|
|
8767
|
+
aggregateUse: "opt_in" | "opt_out" | "unset";
|
|
8768
|
+
/** @description True only for `opt_in`. Benchmark and marketing extraction must check this. */
|
|
8769
|
+
effective: boolean;
|
|
8770
|
+
/** @description Notice version accepted with the current opt-in; null otherwise. */
|
|
8771
|
+
noticeVersion: string | null;
|
|
8772
|
+
/** @enum {string|null} */
|
|
8773
|
+
source: "workspace_settings" | null;
|
|
8774
|
+
/**
|
|
8775
|
+
* Format: date-time
|
|
8776
|
+
* @description When the current choice was saved; null when `unset`.
|
|
8777
|
+
*/
|
|
8778
|
+
recordedAt: string | null;
|
|
8779
|
+
recordedBy: {
|
|
8780
|
+
/** Format: uuid */
|
|
8781
|
+
userId: string;
|
|
8782
|
+
displayName: string | null;
|
|
8783
|
+
} | null;
|
|
8784
|
+
/**
|
|
8785
|
+
* Format: date-time
|
|
8786
|
+
* @description Most recent opt-in withdrawal while the workspace remains opted out.
|
|
8787
|
+
*/
|
|
8788
|
+
withdrawnAt: string | null;
|
|
8789
|
+
currentNotice: components["schemas"]["AggregateUseNoticeStatusDto"];
|
|
8790
|
+
/** @description Exact sentence the assessment PDF prints beside `recordedAt`. Opted-out and unset workspaces get the fixed refusal sentence. Opt-in returns the approved sentence for the accepted notice, or null if that notice is unknown, which blocks validation. */
|
|
8791
|
+
reportSentence: string | null;
|
|
8792
|
+
};
|
|
8793
|
+
AggregateUseConsentPutDto: {
|
|
8794
|
+
/** @enum {string} */
|
|
8795
|
+
aggregateUse: "opt_in" | "opt_out";
|
|
8796
|
+
/** @description Required for `opt_in` and must equal `currentNotice.version`. Ignored for `opt_out`. */
|
|
8797
|
+
noticeVersion?: string | null;
|
|
8798
|
+
};
|
|
8733
8799
|
AssessmentDictionaryDto: {
|
|
8734
8800
|
/** @enum {string} */
|
|
8735
8801
|
version: "2026-10-18.1";
|
|
@@ -11324,6 +11390,9 @@ export type PutAgenticFoundationRepoScopeFailureDto = components['schemas']['Put
|
|
|
11324
11390
|
export type PutAgenticFoundationRepoScopeResponseDto = components['schemas']['PutAgenticFoundationRepoScopeResponseDto'];
|
|
11325
11391
|
export type ActivityLogEventTypeDto = components['schemas']['ActivityLogEventTypeDto'];
|
|
11326
11392
|
export type UnsetAssessmentDecisionDto = components['schemas']['UnsetAssessmentDecisionDto'];
|
|
11393
|
+
export type AggregateUseNoticeStatusDto = components['schemas']['AggregateUseNoticeStatusDto'];
|
|
11394
|
+
export type AggregateUseConsentDto = components['schemas']['AggregateUseConsentDto'];
|
|
11395
|
+
export type AggregateUseConsentPutDto = components['schemas']['AggregateUseConsentPutDto'];
|
|
11327
11396
|
export type AssessmentDictionaryDto = components['schemas']['AssessmentDictionaryDto'];
|
|
11328
11397
|
export type ReportCenterExportRecordBodyDto = components['schemas']['ReportCenterExportRecordBodyDto'];
|
|
11329
11398
|
export type ReportCenterExportRecordResponseDto = components['schemas']['ReportCenterExportRecordResponseDto'];
|
|
@@ -17984,6 +18053,102 @@ export interface operations {
|
|
|
17984
18053
|
};
|
|
17985
18054
|
};
|
|
17986
18055
|
};
|
|
18056
|
+
getAggregateUseConsent: {
|
|
18057
|
+
parameters: {
|
|
18058
|
+
query?: never;
|
|
18059
|
+
header?: never;
|
|
18060
|
+
path: {
|
|
18061
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
18062
|
+
};
|
|
18063
|
+
cookie?: never;
|
|
18064
|
+
};
|
|
18065
|
+
requestBody?: never;
|
|
18066
|
+
responses: {
|
|
18067
|
+
/** @description Current permission and the sentence reports must print */
|
|
18068
|
+
200: {
|
|
18069
|
+
headers: {
|
|
18070
|
+
[name: string]: unknown;
|
|
18071
|
+
};
|
|
18072
|
+
content: {
|
|
18073
|
+
"application/json": components["schemas"]["AggregateUseConsentDto"];
|
|
18074
|
+
};
|
|
18075
|
+
};
|
|
18076
|
+
401: components["responses"]["Unauthorized"];
|
|
18077
|
+
403: components["responses"]["Forbidden"];
|
|
18078
|
+
/** @description Workspace does not exist */
|
|
18079
|
+
404: {
|
|
18080
|
+
headers: {
|
|
18081
|
+
[name: string]: unknown;
|
|
18082
|
+
};
|
|
18083
|
+
content: {
|
|
18084
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
18085
|
+
};
|
|
18086
|
+
};
|
|
18087
|
+
};
|
|
18088
|
+
};
|
|
18089
|
+
putAggregateUseConsent: {
|
|
18090
|
+
parameters: {
|
|
18091
|
+
query?: never;
|
|
18092
|
+
header?: never;
|
|
18093
|
+
path: {
|
|
18094
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
18095
|
+
};
|
|
18096
|
+
cookie?: never;
|
|
18097
|
+
};
|
|
18098
|
+
requestBody: {
|
|
18099
|
+
content: {
|
|
18100
|
+
"application/json": components["schemas"]["AggregateUseConsentPutDto"];
|
|
18101
|
+
};
|
|
18102
|
+
};
|
|
18103
|
+
responses: {
|
|
18104
|
+
/** @description Saved permission */
|
|
18105
|
+
200: {
|
|
18106
|
+
headers: {
|
|
18107
|
+
[name: string]: unknown;
|
|
18108
|
+
};
|
|
18109
|
+
content: {
|
|
18110
|
+
"application/json": components["schemas"]["AggregateUseConsentDto"];
|
|
18111
|
+
};
|
|
18112
|
+
};
|
|
18113
|
+
/** @description Invalid body (`code`: `invalid_input`) */
|
|
18114
|
+
400: {
|
|
18115
|
+
headers: {
|
|
18116
|
+
[name: string]: unknown;
|
|
18117
|
+
};
|
|
18118
|
+
content: {
|
|
18119
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
18120
|
+
};
|
|
18121
|
+
};
|
|
18122
|
+
401: components["responses"]["Unauthorized"];
|
|
18123
|
+
/** @description Caller is not a workspace admin (`code`: `workspace_admin_required`) */
|
|
18124
|
+
403: {
|
|
18125
|
+
headers: {
|
|
18126
|
+
[name: string]: unknown;
|
|
18127
|
+
};
|
|
18128
|
+
content: {
|
|
18129
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
18130
|
+
};
|
|
18131
|
+
};
|
|
18132
|
+
/** @description Workspace does not exist */
|
|
18133
|
+
404: {
|
|
18134
|
+
headers: {
|
|
18135
|
+
[name: string]: unknown;
|
|
18136
|
+
};
|
|
18137
|
+
content: {
|
|
18138
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
18139
|
+
};
|
|
18140
|
+
};
|
|
18141
|
+
/** @description Opt-in refused because no notice is approved (`aggregate_use_notice_unapproved`) or the submitted notice version is not current (`aggregate_use_notice_stale`). */
|
|
18142
|
+
409: {
|
|
18143
|
+
headers: {
|
|
18144
|
+
[name: string]: unknown;
|
|
18145
|
+
};
|
|
18146
|
+
content: {
|
|
18147
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
18148
|
+
};
|
|
18149
|
+
};
|
|
18150
|
+
};
|
|
18151
|
+
};
|
|
17987
18152
|
recordReportCenterExport: {
|
|
17988
18153
|
parameters: {
|
|
17989
18154
|
query?: never;
|
|
@@ -18050,7 +18215,7 @@ export interface operations {
|
|
|
18050
18215
|
order?: components["parameters"]["PaginationOrder"];
|
|
18051
18216
|
/** @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. */
|
|
18052
18217
|
sort?: "when" | "who" | "what" | "why" | "where";
|
|
18053
|
-
/** @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. */
|
|
18218
|
+
/** @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 + workspace settings; `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area. */
|
|
18054
18219
|
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
|
|
18055
18220
|
/** @description Filter to a specific event type. */
|
|
18056
18221
|
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|