@thinkai/tai-api-contract 2.170.0 → 2.171.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 +123 -0
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +157 -1
- package/package.json +1 -1
- package/src/generated/openapi.ts +123 -0
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.171.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}/...`.
|
|
@@ -412,6 +412,162 @@ paths:
|
|
|
412
412
|
error: Forbidden
|
|
413
413
|
code: forbidden
|
|
414
414
|
|
|
415
|
+
/admin/assessment-manifest-validation:
|
|
416
|
+
post:
|
|
417
|
+
tags: [PlatformAdmin]
|
|
418
|
+
summary: Validate an assessment manifest before export
|
|
419
|
+
operationId: runAssessmentManifestValidation
|
|
420
|
+
description: >
|
|
421
|
+
Runs the fail-closed manifest check for one sold assessment. The server
|
|
422
|
+
ignores `manifest.validation` and `manifest.watermark` from the client.
|
|
423
|
+
`buyerDeliverable` is true only when the result is validated and
|
|
424
|
+
`shareMode` is internal. An external share-safe result can be validated
|
|
425
|
+
and is never the buyer file. Unset or exceeded tolerances fail. No
|
|
426
|
+
numeric tolerance is assumed. GitLab and Bitbucket fixtures are not part
|
|
427
|
+
of this operation.
|
|
428
|
+
|
|
429
|
+
**Authorization:** Bearer JWT required. Caller email must appear in `PLATFORM_ADMIN_EMAILS`.
|
|
430
|
+
requestBody:
|
|
431
|
+
required: true
|
|
432
|
+
content:
|
|
433
|
+
application/json:
|
|
434
|
+
schema:
|
|
435
|
+
type: object
|
|
436
|
+
required:
|
|
437
|
+
- manifest
|
|
438
|
+
- workspaceId
|
|
439
|
+
- expectedWorkspaceId
|
|
440
|
+
- expectedRepositoryIds
|
|
441
|
+
- soldWindowComplete
|
|
442
|
+
- premiumAiAssessable
|
|
443
|
+
- namedPersonSectionIds
|
|
444
|
+
- tolerances
|
|
445
|
+
properties:
|
|
446
|
+
manifest:
|
|
447
|
+
type: object
|
|
448
|
+
required:
|
|
449
|
+
- offerId
|
|
450
|
+
- dictionaryVersion
|
|
451
|
+
- validation
|
|
452
|
+
- shareMode
|
|
453
|
+
- watermark
|
|
454
|
+
- scope
|
|
455
|
+
- windows
|
|
456
|
+
- sources
|
|
457
|
+
- consent
|
|
458
|
+
- sections
|
|
459
|
+
properties:
|
|
460
|
+
offerId:
|
|
461
|
+
type: string
|
|
462
|
+
enum: [engineering_readiness_baseline, agentic_ai_roi]
|
|
463
|
+
dictionaryVersion:
|
|
464
|
+
type: string
|
|
465
|
+
validation:
|
|
466
|
+
type: string
|
|
467
|
+
enum: [validated, not_validated]
|
|
468
|
+
shareMode:
|
|
469
|
+
type: string
|
|
470
|
+
enum: [internal, external]
|
|
471
|
+
watermark:
|
|
472
|
+
type: string
|
|
473
|
+
nullable: true
|
|
474
|
+
enum: ["NOT VALIDATED", "SAMPLE · SYNTHETIC DATA"]
|
|
475
|
+
scope:
|
|
476
|
+
type: object
|
|
477
|
+
windows:
|
|
478
|
+
type: object
|
|
479
|
+
sources:
|
|
480
|
+
type: array
|
|
481
|
+
items:
|
|
482
|
+
type: object
|
|
483
|
+
consent:
|
|
484
|
+
type: object
|
|
485
|
+
sections:
|
|
486
|
+
type: array
|
|
487
|
+
items:
|
|
488
|
+
type: object
|
|
489
|
+
workspaceId:
|
|
490
|
+
type: string
|
|
491
|
+
expectedWorkspaceId:
|
|
492
|
+
type: string
|
|
493
|
+
expectedRepositoryIds:
|
|
494
|
+
type: array
|
|
495
|
+
items:
|
|
496
|
+
type: string
|
|
497
|
+
soldWindowComplete:
|
|
498
|
+
type: boolean
|
|
499
|
+
premiumAiAssessable:
|
|
500
|
+
type: boolean
|
|
501
|
+
namedPersonSectionIds:
|
|
502
|
+
type: array
|
|
503
|
+
items:
|
|
504
|
+
type: string
|
|
505
|
+
tolerances:
|
|
506
|
+
type: array
|
|
507
|
+
items:
|
|
508
|
+
type: object
|
|
509
|
+
required: [id, status]
|
|
510
|
+
properties:
|
|
511
|
+
id:
|
|
512
|
+
type: string
|
|
513
|
+
status:
|
|
514
|
+
type: string
|
|
515
|
+
enum: [unset, exceeded, within]
|
|
516
|
+
responses:
|
|
517
|
+
"200":
|
|
518
|
+
description: Validation result. Client validation and watermark inputs are ignored.
|
|
519
|
+
content:
|
|
520
|
+
application/json:
|
|
521
|
+
schema:
|
|
522
|
+
type: object
|
|
523
|
+
required: [buyerDeliverable, validation, watermark, reasons, contentHash]
|
|
524
|
+
properties:
|
|
525
|
+
buyerDeliverable:
|
|
526
|
+
type: boolean
|
|
527
|
+
validation:
|
|
528
|
+
type: string
|
|
529
|
+
enum: [validated, not_validated]
|
|
530
|
+
watermark:
|
|
531
|
+
type: string
|
|
532
|
+
nullable: true
|
|
533
|
+
enum: ["NOT VALIDATED"]
|
|
534
|
+
reasons:
|
|
535
|
+
type: array
|
|
536
|
+
items:
|
|
537
|
+
type: object
|
|
538
|
+
required: [code, message]
|
|
539
|
+
properties:
|
|
540
|
+
code:
|
|
541
|
+
type: string
|
|
542
|
+
message:
|
|
543
|
+
type: string
|
|
544
|
+
contentHash:
|
|
545
|
+
type: string
|
|
546
|
+
"400":
|
|
547
|
+
description: Body failed validation.
|
|
548
|
+
content:
|
|
549
|
+
application/json:
|
|
550
|
+
schema:
|
|
551
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
552
|
+
example:
|
|
553
|
+
error: manifest.offerId is not a known assessment offer
|
|
554
|
+
code: invalid_body
|
|
555
|
+
"401":
|
|
556
|
+
description: Missing or invalid JWT.
|
|
557
|
+
content:
|
|
558
|
+
application/json:
|
|
559
|
+
schema:
|
|
560
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
561
|
+
"403":
|
|
562
|
+
description: Caller is not a platform admin.
|
|
563
|
+
content:
|
|
564
|
+
application/json:
|
|
565
|
+
schema:
|
|
566
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
567
|
+
example:
|
|
568
|
+
error: Forbidden
|
|
569
|
+
code: forbidden
|
|
570
|
+
|
|
415
571
|
/admin/readiness/token-usage:
|
|
416
572
|
get:
|
|
417
573
|
tags: [PlatformAdmin]
|
package/package.json
CHANGED
package/src/generated/openapi.ts
CHANGED
|
@@ -67,6 +67,27 @@ export interface paths {
|
|
|
67
67
|
patch?: never;
|
|
68
68
|
trace?: never;
|
|
69
69
|
};
|
|
70
|
+
"/admin/assessment-manifest-validation": {
|
|
71
|
+
parameters: {
|
|
72
|
+
query?: never;
|
|
73
|
+
header?: never;
|
|
74
|
+
path?: never;
|
|
75
|
+
cookie?: never;
|
|
76
|
+
};
|
|
77
|
+
get?: never;
|
|
78
|
+
put?: never;
|
|
79
|
+
/**
|
|
80
|
+
* Validate an assessment manifest before export
|
|
81
|
+
* @description Runs the fail-closed manifest check for one sold assessment. The server ignores `manifest.validation` and `manifest.watermark` from the client. `buyerDeliverable` is true only when the result is validated and `shareMode` is internal. An external share-safe result can be validated and is never the buyer file. Unset or exceeded tolerances fail. No numeric tolerance is assumed. GitLab and Bitbucket fixtures are not part of this operation.
|
|
82
|
+
* **Authorization:** Bearer JWT required. Caller email must appear in `PLATFORM_ADMIN_EMAILS`.
|
|
83
|
+
*/
|
|
84
|
+
post: operations["runAssessmentManifestValidation"];
|
|
85
|
+
delete?: never;
|
|
86
|
+
options?: never;
|
|
87
|
+
head?: never;
|
|
88
|
+
patch?: never;
|
|
89
|
+
trace?: never;
|
|
90
|
+
};
|
|
70
91
|
"/admin/readiness/token-usage": {
|
|
71
92
|
parameters: {
|
|
72
93
|
query?: never;
|
|
@@ -12014,6 +12035,108 @@ export interface operations {
|
|
|
12014
12035
|
};
|
|
12015
12036
|
};
|
|
12016
12037
|
};
|
|
12038
|
+
runAssessmentManifestValidation: {
|
|
12039
|
+
parameters: {
|
|
12040
|
+
query?: never;
|
|
12041
|
+
header?: never;
|
|
12042
|
+
path?: never;
|
|
12043
|
+
cookie?: never;
|
|
12044
|
+
};
|
|
12045
|
+
requestBody: {
|
|
12046
|
+
content: {
|
|
12047
|
+
"application/json": {
|
|
12048
|
+
manifest: {
|
|
12049
|
+
/** @enum {string} */
|
|
12050
|
+
offerId: "engineering_readiness_baseline" | "agentic_ai_roi";
|
|
12051
|
+
dictionaryVersion: string;
|
|
12052
|
+
/** @enum {string} */
|
|
12053
|
+
validation: "validated" | "not_validated";
|
|
12054
|
+
/** @enum {string} */
|
|
12055
|
+
shareMode: "internal" | "external";
|
|
12056
|
+
/** @enum {string|null} */
|
|
12057
|
+
watermark: "NOT VALIDATED" | "SAMPLE · SYNTHETIC DATA" | null;
|
|
12058
|
+
scope: Record<string, never>;
|
|
12059
|
+
windows: Record<string, never>;
|
|
12060
|
+
sources: Record<string, never>[];
|
|
12061
|
+
consent: Record<string, never>;
|
|
12062
|
+
sections: Record<string, never>[];
|
|
12063
|
+
};
|
|
12064
|
+
workspaceId: string;
|
|
12065
|
+
expectedWorkspaceId: string;
|
|
12066
|
+
expectedRepositoryIds: string[];
|
|
12067
|
+
soldWindowComplete: boolean;
|
|
12068
|
+
premiumAiAssessable: boolean;
|
|
12069
|
+
namedPersonSectionIds: string[];
|
|
12070
|
+
tolerances: {
|
|
12071
|
+
id: string;
|
|
12072
|
+
/** @enum {string} */
|
|
12073
|
+
status: "unset" | "exceeded" | "within";
|
|
12074
|
+
}[];
|
|
12075
|
+
};
|
|
12076
|
+
};
|
|
12077
|
+
};
|
|
12078
|
+
responses: {
|
|
12079
|
+
/** @description Validation result. Client validation and watermark inputs are ignored. */
|
|
12080
|
+
200: {
|
|
12081
|
+
headers: {
|
|
12082
|
+
[name: string]: unknown;
|
|
12083
|
+
};
|
|
12084
|
+
content: {
|
|
12085
|
+
"application/json": {
|
|
12086
|
+
buyerDeliverable: boolean;
|
|
12087
|
+
/** @enum {string} */
|
|
12088
|
+
validation: "validated" | "not_validated";
|
|
12089
|
+
/** @enum {string|null} */
|
|
12090
|
+
watermark: "NOT VALIDATED" | null;
|
|
12091
|
+
reasons: {
|
|
12092
|
+
code: string;
|
|
12093
|
+
message: string;
|
|
12094
|
+
}[];
|
|
12095
|
+
contentHash: string;
|
|
12096
|
+
};
|
|
12097
|
+
};
|
|
12098
|
+
};
|
|
12099
|
+
/** @description Body failed validation. */
|
|
12100
|
+
400: {
|
|
12101
|
+
headers: {
|
|
12102
|
+
[name: string]: unknown;
|
|
12103
|
+
};
|
|
12104
|
+
content: {
|
|
12105
|
+
/**
|
|
12106
|
+
* @example {
|
|
12107
|
+
* "error": "manifest.offerId is not a known assessment offer",
|
|
12108
|
+
* "code": "invalid_body"
|
|
12109
|
+
* }
|
|
12110
|
+
*/
|
|
12111
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
12112
|
+
};
|
|
12113
|
+
};
|
|
12114
|
+
/** @description Missing or invalid JWT. */
|
|
12115
|
+
401: {
|
|
12116
|
+
headers: {
|
|
12117
|
+
[name: string]: unknown;
|
|
12118
|
+
};
|
|
12119
|
+
content: {
|
|
12120
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
12121
|
+
};
|
|
12122
|
+
};
|
|
12123
|
+
/** @description Caller is not a platform admin. */
|
|
12124
|
+
403: {
|
|
12125
|
+
headers: {
|
|
12126
|
+
[name: string]: unknown;
|
|
12127
|
+
};
|
|
12128
|
+
content: {
|
|
12129
|
+
/**
|
|
12130
|
+
* @example {
|
|
12131
|
+
* "error": "Forbidden",
|
|
12132
|
+
* "code": "forbidden"
|
|
12133
|
+
* }
|
|
12134
|
+
*/
|
|
12135
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
12136
|
+
};
|
|
12137
|
+
};
|
|
12138
|
+
};
|
|
12139
|
+
};
|
|
12017
12140
|
adminListReadinessTokenUsage: {
|
|
12018
12141
|
parameters: {
|
|
12019
12142
|
query?: {
|