@thinkai/tai-api-contract 2.97.0 → 2.99.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.97.0
4
+ version: 2.99.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}/...`.
@@ -3539,6 +3539,53 @@ paths:
3539
3539
  application/json:
3540
3540
  schema:
3541
3541
  $ref: "#/components/schemas/ErrorMessageDto"
3542
+ post:
3543
+ tags: [CodeInsights]
3544
+ summary: Code Insights — enqueue Design risks analysis
3545
+ operationId: postCodeInsightsDesignAnalyze
3546
+ description: >
3547
+ Enqueues an on-demand Design risks run (`run_kind=code_insights_design`) for the
3548
+ repository. Reuses the readiness worker queue but never grades the readiness rubric.
3549
+ Editor/admin only. Returns `409` when a design run is already queued or running for
3550
+ the same provider slug (independent of readiness runs).
3551
+ parameters:
3552
+ - $ref: "#/components/parameters/WorkspaceId"
3553
+ - name: repoId
3554
+ in: path
3555
+ required: true
3556
+ description: Internal repo UUID (`tai_workspace_repos.id`).
3557
+ schema:
3558
+ type: string
3559
+ format: uuid
3560
+ responses:
3561
+ "202":
3562
+ description: Design risks analysis enqueued
3563
+ content:
3564
+ application/json:
3565
+ schema:
3566
+ $ref: "#/components/schemas/CodeInsightsDesignAnalyzeResponseDto"
3567
+ "400":
3568
+ description: Malformed repoId, unsupported provider, or GitHub not connected
3569
+ content:
3570
+ application/json:
3571
+ schema:
3572
+ $ref: "#/components/schemas/ErrorMessageDto"
3573
+ "401":
3574
+ $ref: "#/components/responses/Unauthorized"
3575
+ "403":
3576
+ $ref: "#/components/responses/Forbidden"
3577
+ "404":
3578
+ description: Workspace or repo does not exist
3579
+ content:
3580
+ application/json:
3581
+ schema:
3582
+ $ref: "#/components/schemas/ErrorMessageDto"
3583
+ "409":
3584
+ description: An active Design risks run already exists for this repo slug
3585
+ content:
3586
+ application/json:
3587
+ schema:
3588
+ $ref: "#/components/schemas/ErrorMessageDto"
3542
3589
 
3543
3590
  /workspaces/{workspaceId}/integrations/ai-tool/{provider}/members:
3544
3591
  get:
@@ -7234,7 +7281,6 @@ paths:
7234
7281
  "401":
7235
7282
  $ref: "#/components/responses/Unauthorized"
7236
7283
 
7237
-
7238
7284
  /workspaces/{workspaceId}/code-chat/indexes:
7239
7285
  get:
7240
7286
  tags: [CodeChat]
@@ -8886,7 +8932,7 @@ components:
8886
8932
  type: string
8887
8933
  minLength: 1
8888
8934
  maxLength: 512
8889
- pattern: '^[^/]+/[^/]+$'
8935
+ pattern: "^[^/]+/[^/]+$"
8890
8936
  example: thinkai-llc/thinkai-platform-backend
8891
8937
  ProjectId:
8892
8938
  name: projectId
@@ -9281,8 +9327,7 @@ components:
9281
9327
  WorkspaceInvitationDto:
9282
9328
  type: object
9283
9329
  description: Workspace invitation as seen by an authenticated admin or invitee.
9284
- required:
9285
- [id, workspaceId, workspaceName, email, role, status, expiresAt, createdAt]
9330
+ required: [id, workspaceId, workspaceName, email, role, status, expiresAt, createdAt]
9286
9331
  properties:
9287
9332
  id:
9288
9333
  type: string
@@ -10453,7 +10498,17 @@ components:
10453
10498
  properties:
10454
10499
  deliveryModel:
10455
10500
  type: string
10456
- enum: [auto, k8s_microservices, mobile_store, web_hosting, data_pipelines, monorepo, library, hybrid]
10501
+ enum:
10502
+ [
10503
+ auto,
10504
+ k8s_microservices,
10505
+ mobile_store,
10506
+ web_hosting,
10507
+ data_pipelines,
10508
+ monorepo,
10509
+ library,
10510
+ hybrid,
10511
+ ]
10457
10512
  roles:
10458
10513
  type: object
10459
10514
  additionalProperties:
@@ -10468,7 +10523,17 @@ components:
10468
10523
  properties:
10469
10524
  deliveryModel:
10470
10525
  type: string
10471
- enum: [auto, k8s_microservices, mobile_store, web_hosting, data_pipelines, monorepo, library, hybrid]
10526
+ enum:
10527
+ [
10528
+ auto,
10529
+ k8s_microservices,
10530
+ mobile_store,
10531
+ web_hosting,
10532
+ data_pipelines,
10533
+ monorepo,
10534
+ library,
10535
+ hybrid,
10536
+ ]
10472
10537
  ciProvider:
10473
10538
  type: string
10474
10539
  enum: [github_actions, jenkins, gitlab, bitbucket, hybrid, external_documented]
@@ -11026,8 +11091,7 @@ components:
11026
11091
  ProductivityInsightsTeamLeaderItemDto:
11027
11092
  type: object
11028
11093
  additionalProperties: false
11029
- required:
11030
- [rank, teamId, teamName, periodAvgMergedPrs]
11094
+ required: [rank, teamId, teamName, periodAvgMergedPrs]
11031
11095
  properties:
11032
11096
  rank:
11033
11097
  type: integer
@@ -11205,8 +11269,7 @@ components:
11205
11269
  ProductivityInsightsContributorActivityDayDto:
11206
11270
  type: object
11207
11271
  additionalProperties: false
11208
- required:
11209
- [date, dayIndex, mergedPrCount, mergedPrs, absent, failureSignal, failures]
11272
+ required: [date, dayIndex, mergedPrCount, mergedPrs, absent, failureSignal, failures]
11210
11273
  properties:
11211
11274
  date:
11212
11275
  type: string
@@ -11247,7 +11310,10 @@ components:
11247
11310
  $ref: "#/components/schemas/ProductivityInsightsContributorFailureItemDto"
11248
11311
  mergedPrItems:
11249
11312
  type: array
11250
- description: Optional PR rows with GitHub links when ingest stored URLs.
11313
+ description: >
11314
+ Optional merged PR rows for day drilldown (label, optional GitHub URL, optional
11315
+ ship-weight score / pending flag). Includes label-only rows so unscored or
11316
+ URL-less merges still surface ship-weight state.
11251
11317
  items:
11252
11318
  $ref: "#/components/schemas/ProductivityInsightsContributorMergedPrItemDto"
11253
11319
 
@@ -11261,6 +11327,12 @@ components:
11261
11327
  url:
11262
11328
  type: string
11263
11329
  format: uri
11330
+ shipWeight:
11331
+ type: number
11332
+ description: v13 ship-weight score for this PR when scored (typically 0–10).
11333
+ shipWeightPending:
11334
+ type: boolean
11335
+ description: True when this GitHub PR is still awaiting ship-weight scoring.
11264
11336
 
11265
11337
  ProductivityInsightsContributorFailureItemDto:
11266
11338
  type: object
@@ -11418,8 +11490,7 @@ components:
11418
11490
  ProductivityInsightsNeedsAttentionItemDto:
11419
11491
  type: object
11420
11492
  additionalProperties: false
11421
- required:
11422
- [rank, entityId, entityType, name, periodAvgMergedPrs]
11493
+ required: [rank, entityId, entityType, name, periodAvgMergedPrs]
11423
11494
  properties:
11424
11495
  rank:
11425
11496
  type: integer
@@ -11575,8 +11646,7 @@ components:
11575
11646
  AiUsageSpendAggregatedTeamsSummaryDto:
11576
11647
  type: object
11577
11648
  additionalProperties: false
11578
- required:
11579
- [totalTokenCount, totalSpendCents, activeUsers, activeTools, totalEngineers]
11649
+ required: [totalTokenCount, totalSpendCents, activeUsers, activeTools, totalEngineers]
11580
11650
  properties:
11581
11651
  totalTokenCount:
11582
11652
  type: integer
@@ -11787,8 +11857,7 @@ components:
11787
11857
  AiUsageSpendAiAssistedCodeDayDto:
11788
11858
  type: object
11789
11859
  additionalProperties: false
11790
- required:
11791
- [date, aiAssistedCodePercent, totalLoc, aiLoc, humanLoc, dataQuality]
11860
+ required: [date, aiAssistedCodePercent, totalLoc, aiLoc, humanLoc, dataQuality]
11792
11861
  properties:
11793
11862
  date:
11794
11863
  type: string
@@ -11823,15 +11892,7 @@ components:
11823
11892
  type: object
11824
11893
  additionalProperties: false
11825
11894
  required:
11826
- [
11827
- bucketStart,
11828
- bucketEnd,
11829
- aiAssistedCodePercent,
11830
- totalLoc,
11831
- aiLoc,
11832
- humanLoc,
11833
- dataQuality,
11834
- ]
11895
+ [bucketStart, bucketEnd, aiAssistedCodePercent, totalLoc, aiLoc, humanLoc, dataQuality]
11835
11896
  properties:
11836
11897
  bucketStart:
11837
11898
  type: string
@@ -12739,7 +12800,18 @@ components:
12739
12800
  AiToolMemberDetailDto:
12740
12801
  type: object
12741
12802
  additionalProperties: false
12742
- required: [externalId, email, isRemoved, spendCents, tokenCount, activeDays, modelBreakdown, productBreakdown, heatmap]
12803
+ required:
12804
+ [
12805
+ externalId,
12806
+ email,
12807
+ isRemoved,
12808
+ spendCents,
12809
+ tokenCount,
12810
+ activeDays,
12811
+ modelBreakdown,
12812
+ productBreakdown,
12813
+ heatmap,
12814
+ ]
12743
12815
  properties:
12744
12816
  externalId:
12745
12817
  type: string
@@ -12947,7 +13019,17 @@ components:
12947
13019
  PrivacyRequestDto:
12948
13020
  type: object
12949
13021
  required:
12950
- [id, referenceCode, requestType, status, intakeChannel, subjectEmail, createdAt, updatedAt, slaDueAt]
13022
+ [
13023
+ id,
13024
+ referenceCode,
13025
+ requestType,
13026
+ status,
13027
+ intakeChannel,
13028
+ subjectEmail,
13029
+ createdAt,
13030
+ updatedAt,
13031
+ slaDueAt,
13032
+ ]
12951
13033
  properties:
12952
13034
  id:
12953
13035
  type: string
@@ -13027,7 +13109,15 @@ components:
13027
13109
  eventType:
13028
13110
  type: string
13029
13111
  enum:
13030
- [submitted, identity_verified, status_changed, assigned, export_generated, fulfillment_noted, duplicate_rejected]
13112
+ [
13113
+ submitted,
13114
+ identity_verified,
13115
+ status_changed,
13116
+ assigned,
13117
+ export_generated,
13118
+ fulfillment_noted,
13119
+ duplicate_rejected,
13120
+ ]
13031
13121
  actorEmail:
13032
13122
  type: string
13033
13123
  nullable: true
@@ -13428,7 +13518,8 @@ components:
13428
13518
  of eligible repos. Lets the UI render per-repo "size / limit" (compare each repo's `size`
13429
13519
  in `GithubInstalledRepoDto` to `maxRepoSizeKb`) and workspace "N / cap" usage
13430
13520
  (`eligibleRepoCount` / `maxReposPerWorkspace`).
13431
- required: [maxRepoSizeKb, maxReposPerWorkspace, excludeArchived, excludeForks, eligibleRepoCount]
13521
+ required:
13522
+ [maxRepoSizeKb, maxReposPerWorkspace, excludeArchived, excludeForks, eligibleRepoCount]
13432
13523
  properties:
13433
13524
  maxRepoSizeKb:
13434
13525
  type: integer
@@ -14299,8 +14390,7 @@ components:
14299
14390
  TechStackDto:
14300
14391
  type: object
14301
14392
  additionalProperties: false
14302
- required:
14303
- [sourceControl, cicd, pm, monitoring, aiTools, security, knowledgeDocs, hrPeople]
14393
+ required: [sourceControl, cicd, pm, monitoring, aiTools, security, knowledgeDocs, hrPeople]
14304
14394
  properties:
14305
14395
  sourceControl:
14306
14396
  $ref: "#/components/schemas/TechCategoryDto"
@@ -14944,7 +15034,14 @@ components:
14944
15034
  archivedReason:
14945
15035
  type: string
14946
15036
  nullable: true
14947
- enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
15037
+ enum:
15038
+ [
15039
+ github_removed,
15040
+ installation_disconnected,
15041
+ installation_replaced,
15042
+ superseded,
15043
+ user_removed,
15044
+ ]
14948
15045
  description: Why the repo was archived. `user_removed` means excluded from Agentic Foundation scope only. Only present when `archivedAt` is set.
14949
15046
  eligibilityStatus:
14950
15047
  type: string
@@ -15140,7 +15237,14 @@ components:
15140
15237
  archivedReason:
15141
15238
  type: string
15142
15239
  nullable: true
15143
- enum: [github_removed, installation_disconnected, installation_replaced, superseded, user_removed]
15240
+ enum:
15241
+ [
15242
+ github_removed,
15243
+ installation_disconnected,
15244
+ installation_replaced,
15245
+ superseded,
15246
+ user_removed,
15247
+ ]
15144
15248
  eligibilityStatus:
15145
15249
  type: string
15146
15250
  enum: [eligible, ineligible]
@@ -15204,14 +15308,7 @@ components:
15204
15308
 
15205
15309
  AgenticFoundationDashboardSummaryDto:
15206
15310
  type: object
15207
- required:
15208
- [
15209
- repoCount,
15210
- averageOverallScore,
15211
- issueCount,
15212
- criticalIssueCount,
15213
- issuesByFixStatus,
15214
- ]
15311
+ required: [repoCount, averageOverallScore, issueCount, criticalIssueCount, issuesByFixStatus]
15215
15312
  properties:
15216
15313
  repoCount:
15217
15314
  type: integer
@@ -15345,8 +15442,7 @@ components:
15345
15442
 
15346
15443
  ReadinessAuditEntryDto:
15347
15444
  type: object
15348
- required:
15349
- [id, occurredAt, eventType, actionLabel, actorName]
15445
+ required: [id, occurredAt, eventType, actionLabel, actorName]
15350
15446
  properties:
15351
15447
  id:
15352
15448
  type: string
@@ -15575,8 +15671,7 @@ components:
15575
15671
 
15576
15672
  ReadinessFixGuideDto:
15577
15673
  type: object
15578
- required:
15579
- [issueId, repoId, rubricId, sourceRunId, status, markdown, criterionTitle]
15674
+ required: [issueId, repoId, rubricId, sourceRunId, status, markdown, criterionTitle]
15580
15675
  properties:
15581
15676
  issueId:
15582
15677
  type: string
@@ -16182,7 +16277,8 @@ components:
16182
16277
 
16183
16278
  YourAiJourneyPrSignalsWeekDto:
16184
16279
  type: object
16185
- required: [bucketStart, bucketEnd, weekLabel, prsPerDeveloperPerWeek, changeFailureRatePercent]
16280
+ required:
16281
+ [bucketStart, bucketEnd, weekLabel, prsPerDeveloperPerWeek, changeFailureRatePercent]
16186
16282
  properties:
16187
16283
  bucketStart:
16188
16284
  type: string
@@ -16377,7 +16473,21 @@ components:
16377
16473
 
16378
16474
  YourAiJourneyAiSpendDto:
16379
16475
  type: object
16380
- required: [workspaceId, generatedAt, windowStart, windowEnd, totalSpendCents, totalTokenCount, activeUsers, aiAssistedPrRatio, prThroughputDeltaPercent, usageDeltaPercent, weeks, providers]
16476
+ required:
16477
+ [
16478
+ workspaceId,
16479
+ generatedAt,
16480
+ windowStart,
16481
+ windowEnd,
16482
+ totalSpendCents,
16483
+ totalTokenCount,
16484
+ activeUsers,
16485
+ aiAssistedPrRatio,
16486
+ prThroughputDeltaPercent,
16487
+ usageDeltaPercent,
16488
+ weeks,
16489
+ providers,
16490
+ ]
16381
16491
  properties:
16382
16492
  workspaceId:
16383
16493
  type: string
@@ -16545,6 +16655,7 @@ components:
16545
16655
  - readiness.scan_completed
16546
16656
  - readiness.scan_failed
16547
16657
  - readiness.scan_partial
16658
+ - code_insights.design_run_started
16548
16659
  - integrations.agent_execution.provider_changed
16549
16660
  - integrations.repo_eligibility.overrides_changed
16550
16661
  - integrations.repo_eligibility.languages_refresh_requested
@@ -16686,7 +16797,8 @@ components:
16686
16797
 
16687
16798
  WorkspaceAbsenceDto:
16688
16799
  type: object
16689
- required: [source, employeeEmail, absenceType, startDate, endDate, halfDayStart, halfDayEnd, status]
16800
+ required:
16801
+ [source, employeeEmail, absenceType, startDate, endDate, halfDayStart, halfDayEnd, status]
16690
16802
  properties:
16691
16803
  source:
16692
16804
  type: string
@@ -17354,8 +17466,15 @@ components:
17354
17466
  properties:
17355
17467
  weekStartIso: { type: string, format: date }
17356
17468
  mergedPrs: { type: number }
17469
+ shipWeightSum:
17470
+ type: number
17471
+ description: Sum of ship-weight scores for merged PRs in this week bucket.
17357
17472
  ciFailRatePct: { type: number }
17358
- hasCiMetrics: { type: boolean, description: False when CI metrics were not available for this week bucket. }
17473
+ hasCiMetrics:
17474
+ {
17475
+ type: boolean,
17476
+ description: False when CI metrics were not available for this week bucket.,
17477
+ }
17359
17478
 
17360
17479
  InsightsRecommendationsVelocityQuality:
17361
17480
  type: object
@@ -17367,6 +17486,9 @@ components:
17367
17486
  $ref: "#/components/schemas/InsightsVelocityQualityWeek"
17368
17487
  targetFailRatePct: { type: number }
17369
17488
  volumeGrowthPct: { type: number }
17489
+ shipWeightVolumeGrowthPct:
17490
+ type: number
17491
+ description: Ship-weight volume growth vs the prior equal-length window.
17370
17492
 
17371
17493
  InsightsRecommendationsVelocityQualityResponse:
17372
17494
  allOf:
@@ -17655,7 +17777,19 @@ components:
17655
17777
 
17656
17778
  CodeChatIndexDto:
17657
17779
  type: object
17658
- required: [id, workspaceId, repoId, providerSlug, repoName, status, nodeCount, edgeCount, createdAt, updatedAt]
17780
+ required:
17781
+ [
17782
+ id,
17783
+ workspaceId,
17784
+ repoId,
17785
+ providerSlug,
17786
+ repoName,
17787
+ status,
17788
+ nodeCount,
17789
+ edgeCount,
17790
+ createdAt,
17791
+ updatedAt,
17792
+ ]
17659
17793
  properties:
17660
17794
  id: { type: string, format: uuid }
17661
17795
  workspaceId: { type: string, format: uuid }
@@ -17882,7 +18016,19 @@ components:
17882
18016
 
17883
18017
  CodeChatWikiPageDto:
17884
18018
  type: object
17885
- required: [id, indexId, workspaceId, slug, title, bodyMd, sortOrder, sourcePaths, createdAt, updatedAt]
18019
+ required:
18020
+ [
18021
+ id,
18022
+ indexId,
18023
+ workspaceId,
18024
+ slug,
18025
+ title,
18026
+ bodyMd,
18027
+ sortOrder,
18028
+ sourcePaths,
18029
+ createdAt,
18030
+ updatedAt,
18031
+ ]
17886
18032
  properties:
17887
18033
  id: { type: string, format: uuid }
17888
18034
  indexId: { type: string, format: uuid }
@@ -18281,7 +18427,19 @@ components:
18281
18427
 
18282
18428
  CodeInsightsFindingCategory:
18283
18429
  type: string
18284
- enum: [duplication, complexity, proliferation, coverage, anemic_domain, context_leak, tx_boundary, error_handling, config_cohesion, resilience_patterns]
18430
+ enum:
18431
+ [
18432
+ duplication,
18433
+ complexity,
18434
+ proliferation,
18435
+ coverage,
18436
+ anemic_domain,
18437
+ context_leak,
18438
+ tx_boundary,
18439
+ error_handling,
18440
+ config_cohesion,
18441
+ resilience_patterns,
18442
+ ]
18285
18443
  description: >
18286
18444
  Deterministic categories (`duplication`, `complexity`, `proliferation`,
18287
18445
  `coverage`) plus LLM semantic detectors (`anemic_domain`, `context_leak`,
@@ -18439,7 +18597,8 @@ components:
18439
18597
 
18440
18598
  CodeInsightsRepoListItemDto:
18441
18599
  type: object
18442
- required: [repoId, repoName, language, providerSlug, webUrl, badges, findingsBySeverity, provenance]
18600
+ required:
18601
+ [repoId, repoName, language, providerSlug, webUrl, badges, findingsBySeverity, provenance]
18443
18602
  properties:
18444
18603
  repoId:
18445
18604
  type: string
@@ -18504,7 +18663,18 @@ components:
18504
18663
 
18505
18664
  CodeInsightsRepoDetailDto:
18506
18665
  type: object
18507
- required: [repoId, repoName, language, providerSlug, webUrl, metrics, hotspots, findings]
18666
+ required:
18667
+ [
18668
+ repoId,
18669
+ repoName,
18670
+ language,
18671
+ providerSlug,
18672
+ webUrl,
18673
+ metrics,
18674
+ hotspots,
18675
+ findings,
18676
+ designAnalysis,
18677
+ ]
18508
18678
  properties:
18509
18679
  repoId:
18510
18680
  type: string
@@ -18530,7 +18700,47 @@ components:
18530
18700
  type: array
18531
18701
  items:
18532
18702
  $ref: "#/components/schemas/CodeInsightsFindingDto"
18533
- description: Findings from the latest scan only (history is retention-bounded).
18703
+ description: >
18704
+ Deterministic findings from the latest metrics scan plus LLM findings from the
18705
+ latest **succeeded** Design risks run only. Stale LLM rows from older design runs
18706
+ are not returned.
18707
+ designAnalysis:
18708
+ allOf:
18709
+ - $ref: "#/components/schemas/CodeInsightsDesignAnalysisDto"
18710
+ nullable: true
18711
+ description: >
18712
+ Latest Design risks run of any status (for UI polling). Null when Design risks
18713
+ has never been enqueued for this repo.
18714
+
18715
+ CodeInsightsDesignAnalysisDto:
18716
+ type: object
18717
+ required: [runId, status, finishedAt, errorCode, errorDetail]
18718
+ properties:
18719
+ runId:
18720
+ type: string
18721
+ format: uuid
18722
+ status:
18723
+ type: string
18724
+ enum: [queued, running, succeeded, failed, partial_failed]
18725
+ finishedAt:
18726
+ type: string
18727
+ format: date-time
18728
+ nullable: true
18729
+ errorCode:
18730
+ type: string
18731
+ nullable: true
18732
+ errorDetail:
18733
+ type: string
18734
+ nullable: true
18735
+
18736
+ CodeInsightsDesignAnalyzeResponseDto:
18737
+ type: object
18738
+ required: [runId]
18739
+ properties:
18740
+ runId:
18741
+ type: string
18742
+ format: uuid
18743
+ description: Enqueued Design risks run id (`tai_workspace_readiness_runs.id`).
18534
18744
 
18535
18745
  CodeInsightsOrgHotspotDto:
18536
18746
  allOf:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.97.0",
3
+ "version": "2.99.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,8 +20,8 @@
20
20
  },
21
21
  "dependencies": {},
22
22
  "devDependencies": {
23
- "@stoplight/spectral-cli": "^6.16.2",
24
- "@types/node": "^26.1.2",
23
+ "@stoplight/spectral-cli": "^6.16.3",
24
+ "@types/node": "^26.2.0",
25
25
  "jsonpath-plus": "^10.3.0",
26
26
  "openapi-typescript": "^7.13.0",
27
27
  "typescript": "~6.0.3"