@kindgi/api 0.1.2 → 0.1.3
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/app.d.ts.map +1 -1
- package/dist/app.js +2 -1
- package/dist/app.js.map +1 -1
- package/dist/cost-binding.d.ts +81 -5
- package/dist/cost-binding.d.ts.map +1 -1
- package/dist/cost-binding.js +6 -0
- package/dist/cost-binding.js.map +1 -1
- package/dist/hitl-binding.d.ts +20 -5
- package/dist/hitl-binding.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +3 -2
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +5 -1
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +8 -1
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/openapi/operations.d.ts.map +1 -1
- package/dist/openapi/operations.js +83 -18
- package/dist/openapi/operations.js.map +1 -1
- package/dist/openapi/schemas.d.ts +18 -0
- package/dist/openapi/schemas.d.ts.map +1 -1
- package/dist/openapi/schemas.js +202 -7
- package/dist/openapi/schemas.js.map +1 -1
- package/dist/provenance-binding.d.ts +27 -1
- package/dist/provenance-binding.d.ts.map +1 -1
- package/dist/provenance-binding.js.map +1 -1
- package/dist/reviewer-binding.d.ts +10 -2
- package/dist/reviewer-binding.d.ts.map +1 -1
- package/dist/reviewer-role.d.ts +13 -0
- package/dist/reviewer-role.d.ts.map +1 -0
- package/dist/reviewer-role.js +27 -0
- package/dist/reviewer-role.js.map +1 -0
- package/dist/routes/approvals.d.ts +5 -4
- package/dist/routes/approvals.d.ts.map +1 -1
- package/dist/routes/approvals.js +52 -16
- package/dist/routes/approvals.js.map +1 -1
- package/dist/routes/conversations.d.ts +7 -1
- package/dist/routes/conversations.d.ts.map +1 -1
- package/dist/routes/conversations.js +41 -1
- package/dist/routes/conversations.js.map +1 -1
- package/dist/routes/cost.d.ts.map +1 -1
- package/dist/routes/cost.js +95 -9
- package/dist/routes/cost.js.map +1 -1
- package/dist/routes/identity.d.ts +7 -0
- package/dist/routes/identity.d.ts.map +1 -1
- package/dist/routes/identity.js +3 -2
- package/dist/routes/identity.js.map +1 -1
- package/dist/routes/provenance.d.ts.map +1 -1
- package/dist/routes/provenance.js +32 -1
- package/dist/routes/provenance.js.map +1 -1
- package/dist/routes/runs.d.ts +0 -7
- package/dist/routes/runs.d.ts.map +1 -1
- package/dist/routes/runs.js +44 -20
- package/dist/routes/runs.js.map +1 -1
- package/dist/routes/scope-params.d.ts +16 -1
- package/dist/routes/scope-params.d.ts.map +1 -1
- package/dist/routes/scope-params.js +28 -0
- package/dist/routes/scope-params.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook-endpoint-binding.d.ts +11 -0
- package/dist/webhook-endpoint-binding.d.ts.map +1 -1
- package/dist/webhook-endpoint-binding.js.map +1 -1
- package/openapi.json +599 -24
- package/package.json +21 -21
- package/src/app.ts +5 -1
- package/src/cost-binding.ts +96 -5
- package/src/hitl-binding.ts +20 -4
- package/src/index.ts +3 -0
- package/src/middleware/auth.ts +3 -2
- package/src/middleware/idempotency.ts +7 -1
- package/src/openapi/operations.ts +93 -18
- package/src/openapi/schemas.ts +221 -7
- package/src/provenance-binding.ts +42 -1
- package/src/reviewer-binding.ts +10 -2
- package/src/reviewer-role.ts +35 -0
- package/src/routes/approvals.ts +70 -19
- package/src/routes/conversations.ts +57 -1
- package/src/routes/cost.ts +104 -20
- package/src/routes/identity.ts +10 -2
- package/src/routes/provenance.ts +48 -1
- package/src/routes/runs.ts +54 -22
- package/src/routes/scope-params.ts +35 -1
- package/src/types.ts +4 -3
- package/src/webhook-endpoint-binding.ts +11 -0
|
@@ -140,6 +140,15 @@ const TopLevelQueryParam: ParameterSpec = {
|
|
|
140
140
|
schema: { type: 'boolean' },
|
|
141
141
|
};
|
|
142
142
|
|
|
143
|
+
const RunAgentIdQueryParam: ParameterSpec = {
|
|
144
|
+
name: 'agentId',
|
|
145
|
+
in: 'query',
|
|
146
|
+
required: false,
|
|
147
|
+
description:
|
|
148
|
+
"Only this agent's turns, at any version. Turns that ran before Kindgi 0.1.3 don't name their agent and aren't matched.",
|
|
149
|
+
schema: { type: 'string', minLength: 1 },
|
|
150
|
+
};
|
|
151
|
+
|
|
143
152
|
const RunIncludeQueryParam: ParameterSpec = {
|
|
144
153
|
name: 'include',
|
|
145
154
|
in: 'query',
|
|
@@ -532,7 +541,7 @@ const CostToQueryParam: ParameterSpec = {
|
|
|
532
541
|
in: 'query',
|
|
533
542
|
required: false,
|
|
534
543
|
description:
|
|
535
|
-
'ISO 8601 timestamp; records with `occurredAt
|
|
544
|
+
'ISO 8601 timestamp; records with `occurredAt < to` (exclusive). Required on `/v1/cost/aggregate` (or both endpoints omitted for default last-30-days window).',
|
|
536
545
|
schema: { type: 'string', format: 'date-time' },
|
|
537
546
|
};
|
|
538
547
|
|
|
@@ -541,10 +550,53 @@ const CostGroupByQueryParam: ParameterSpec = {
|
|
|
541
550
|
in: 'query',
|
|
542
551
|
required: true,
|
|
543
552
|
description:
|
|
544
|
-
|
|
553
|
+
"Comma-separated list of dimensions to aggregate over. Each value must be one of `agentId | runId | category | providerId | day | month | tenant | conversationId | model | servedModel | projectId | orgId | rootRunId | flowId`. `model` is the model actually called; `servedModel` the exact version the vendor reported; `orgId` the org of the record's project. Duplicates collapse.",
|
|
554
|
+
schema: { type: 'string' },
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
const CostModelQueryParam: ParameterSpec = {
|
|
558
|
+
name: 'model',
|
|
559
|
+
in: 'query',
|
|
560
|
+
required: false,
|
|
561
|
+
description: 'Filter model calls to this model, the one actually called (exact match).',
|
|
545
562
|
schema: { type: 'string' },
|
|
546
563
|
};
|
|
547
564
|
|
|
565
|
+
const CostServedModelQueryParam: ParameterSpec = {
|
|
566
|
+
name: 'servedModel',
|
|
567
|
+
in: 'query',
|
|
568
|
+
required: false,
|
|
569
|
+
description: 'Filter model calls to the exact model version the vendor reported (exact match).',
|
|
570
|
+
schema: { type: 'string' },
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
const CostRootRunIdQueryParam: ParameterSpec = {
|
|
574
|
+
name: 'rootRunId',
|
|
575
|
+
in: 'query',
|
|
576
|
+
required: false,
|
|
577
|
+
description:
|
|
578
|
+
'Every record of the run tree whose root is this run: a flow run and the agent turns and sub-flows it started.',
|
|
579
|
+
schema: { type: 'string', format: 'uuid' },
|
|
580
|
+
};
|
|
581
|
+
|
|
582
|
+
const CostIncludeDescendantsQueryParam: ParameterSpec = {
|
|
583
|
+
name: 'includeDescendants',
|
|
584
|
+
in: 'query',
|
|
585
|
+
required: false,
|
|
586
|
+
description:
|
|
587
|
+
"With `runId`: the run's records and those of every run it started, at any depth. `true` or `false` (default).",
|
|
588
|
+
schema: { type: 'boolean', default: false },
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
const CostIncludeQueryParam: ParameterSpec = {
|
|
592
|
+
name: 'include',
|
|
593
|
+
in: 'query',
|
|
594
|
+
required: false,
|
|
595
|
+
description:
|
|
596
|
+
"Extra fields, comma-separated. `rawUsage`: each model call's usage object exactly as the vendor reported it.",
|
|
597
|
+
schema: { type: 'string', enum: ['rawUsage'] },
|
|
598
|
+
};
|
|
599
|
+
|
|
548
600
|
const ProviderIdPathParam: ParameterSpec = {
|
|
549
601
|
name: 'providerId',
|
|
550
602
|
in: 'path',
|
|
@@ -951,14 +1003,17 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
951
1003
|
parameters: [
|
|
952
1004
|
LimitQueryParam,
|
|
953
1005
|
CursorQueryParam,
|
|
1006
|
+
ScopeKindQueryParam,
|
|
1007
|
+
ScopeIdQueryParam,
|
|
954
1008
|
ParentRunIdQueryParam,
|
|
955
1009
|
TopLevelQueryParam,
|
|
1010
|
+
RunAgentIdQueryParam,
|
|
956
1011
|
RunIncludeQueryParam,
|
|
957
1012
|
],
|
|
958
1013
|
responses: {
|
|
959
1014
|
'200': { description: 'Page of runs.', schema: ref('RunCollectionPage') },
|
|
960
1015
|
...CommonAuthErrors,
|
|
961
|
-
'400': ErrorResponse('Malformed cursor or
|
|
1016
|
+
'400': ErrorResponse('Malformed cursor, filter or scope.'),
|
|
962
1017
|
},
|
|
963
1018
|
},
|
|
964
1019
|
{
|
|
@@ -971,6 +1026,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
971
1026
|
security: 'bearer',
|
|
972
1027
|
parameters: [RunIdPathParam],
|
|
973
1028
|
responses: {
|
|
1029
|
+
'400': ErrorResponse('`runId` is not a run id (a UUID).'),
|
|
974
1030
|
'200': { description: 'Run row.', schema: ref('Run') },
|
|
975
1031
|
...CommonAuthErrors,
|
|
976
1032
|
'404': ErrorResponse('No run with that id under this tenant.'),
|
|
@@ -1022,6 +1078,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1022
1078
|
security: 'bearer',
|
|
1023
1079
|
parameters: [RunIdPathParam, JournalSinceQueryParam],
|
|
1024
1080
|
responses: {
|
|
1081
|
+
'400': ErrorResponse('`runId` is not a run id (a UUID).'),
|
|
1025
1082
|
'200': { description: 'Journal page.', schema: ref('RunJournalPage') },
|
|
1026
1083
|
...CommonAuthErrors,
|
|
1027
1084
|
'404': ErrorResponse('No run with that id under this tenant.'),
|
|
@@ -1039,6 +1096,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1039
1096
|
security: 'bearer',
|
|
1040
1097
|
parameters: [RunIdPathParam, LastEventIdParam],
|
|
1041
1098
|
responses: {
|
|
1099
|
+
'400': ErrorResponse('`runId` is not a run id (a UUID).'),
|
|
1042
1100
|
'200': {
|
|
1043
1101
|
description: 'text/event-stream. Each frame is one RunEvent.',
|
|
1044
1102
|
contentType: 'text/event-stream',
|
|
@@ -1060,6 +1118,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1060
1118
|
security: 'bearer-or-public-run',
|
|
1061
1119
|
parameters: [RunIdPathParam],
|
|
1062
1120
|
responses: {
|
|
1121
|
+
'400': ErrorResponse('`runId` is not a run id (a UUID).'),
|
|
1063
1122
|
'200': { description: "The run's progress.", schema: ref('RunProgress') },
|
|
1064
1123
|
...CommonAuthErrors,
|
|
1065
1124
|
'404': ErrorResponse('No run with that id that the token may read.'),
|
|
@@ -1077,6 +1136,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1077
1136
|
security: 'bearer-or-public-run',
|
|
1078
1137
|
parameters: [RunIdPathParam, LastEventIdParam],
|
|
1079
1138
|
responses: {
|
|
1139
|
+
'400': ErrorResponse('`runId` is not a run id (a UUID).'),
|
|
1080
1140
|
'200': {
|
|
1081
1141
|
description: 'text/event-stream. Each frame is one RunProgressEvent.',
|
|
1082
1142
|
contentType: 'text/event-stream',
|
|
@@ -1278,12 +1338,14 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1278
1338
|
operationId: 'approvals.list',
|
|
1279
1339
|
summary: 'List approvals visible to the caller',
|
|
1280
1340
|
description:
|
|
1281
|
-
|
|
1341
|
+
"Requires a reviewer: a token that carries a `reviewerRole`, or whose user is a registered reviewer (the roster gives the role). Role-scoped: reviewers only see approvals whose `requiredRole` rank ≤ their rank (standard < senior < admin). `scopeKind`/`scopeId` narrow to one project's approvals, or every project's in an org; approvals from before Kindgi 0.1.3 have no project and are listed only without a scope.",
|
|
1282
1342
|
tags: ['approvals'],
|
|
1283
1343
|
security: 'bearer',
|
|
1284
1344
|
parameters: [
|
|
1285
1345
|
LimitQueryParam,
|
|
1286
1346
|
CursorQueryParam,
|
|
1347
|
+
ScopeKindQueryParam,
|
|
1348
|
+
ScopeIdQueryParam,
|
|
1287
1349
|
ApprovalStatusQueryParam,
|
|
1288
1350
|
ApprovalRequiredRoleQueryParam,
|
|
1289
1351
|
CreatedAfterQueryParam,
|
|
@@ -1291,8 +1353,8 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1291
1353
|
responses: {
|
|
1292
1354
|
'200': { description: 'Page of approvals.', schema: ref('ApprovalCollectionPage') },
|
|
1293
1355
|
...CommonAuthErrors,
|
|
1294
|
-
'400': ErrorResponse('Malformed query parameter.'),
|
|
1295
|
-
'403': ErrorResponse('
|
|
1356
|
+
'400': ErrorResponse('Malformed query parameter or scope.'),
|
|
1357
|
+
'403': ErrorResponse("The caller isn't a reviewer, or asked for a tier above its own."),
|
|
1296
1358
|
},
|
|
1297
1359
|
},
|
|
1298
1360
|
{
|
|
@@ -1302,14 +1364,14 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1302
1364
|
operationId: 'approvals.get',
|
|
1303
1365
|
summary: 'Fetch a single approval',
|
|
1304
1366
|
description:
|
|
1305
|
-
'Returns 404 for ids that exist but require a higher role than the caller (avoids cross-tier existence leaks — see API-ROUTE-CONVENTIONS.md §2.4).',
|
|
1367
|
+
'Returns 404 for ids that exist but require a higher role than the caller (avoids cross-tier existence leaks — see API-ROUTE-CONVENTIONS.md §2.4). A decided approval carries its `decision`: what the reviewer decided, why, and who (`decidedBy`, `user:<userId>`).',
|
|
1306
1368
|
tags: ['approvals'],
|
|
1307
1369
|
security: 'bearer',
|
|
1308
1370
|
parameters: [ApprovalIdPathParam],
|
|
1309
1371
|
responses: {
|
|
1310
1372
|
'200': { description: 'Approval.', schema: ref('Approval') },
|
|
1311
1373
|
...CommonAuthErrors,
|
|
1312
|
-
'403': ErrorResponse('
|
|
1374
|
+
'403': ErrorResponse("The caller isn't a reviewer."),
|
|
1313
1375
|
'404': ErrorResponse('No approval with that id — or the caller cannot see it.'),
|
|
1314
1376
|
},
|
|
1315
1377
|
},
|
|
@@ -1320,7 +1382,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1320
1382
|
operationId: 'approvals.complete',
|
|
1321
1383
|
summary: 'Submit a decision on an approval',
|
|
1322
1384
|
description:
|
|
1323
|
-
|
|
1385
|
+
"Records the decision (`HitlBinding.submitReview`). When the approval carries a `waitTokenId` and the decision is `approve` or `reject`, also completes the waitpoint so the suspended run resumes, with `{ decided, rationale?, decidedBy, approvalId }`: the run's journal records who decided which approval (`decidedBy` is `user:<userId>`).",
|
|
1324
1386
|
tags: ['approvals'],
|
|
1325
1387
|
security: 'bearer',
|
|
1326
1388
|
parameters: [ApprovalIdPathParam, IdempotencyKeyParam],
|
|
@@ -1418,7 +1480,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1418
1480
|
responses: {
|
|
1419
1481
|
'200': { description: 'Signed audit bundle.', schema: ref('ExportAuditBundleResult') },
|
|
1420
1482
|
...CommonMutationErrors,
|
|
1421
|
-
'403': ErrorResponse('
|
|
1483
|
+
'403': ErrorResponse("The caller isn't a reviewer."),
|
|
1422
1484
|
'404': ErrorResponse(
|
|
1423
1485
|
'Approval not found, signing key id unknown, or signing not configured on this deployment.',
|
|
1424
1486
|
),
|
|
@@ -1881,12 +1943,14 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1881
1943
|
operationId: 'conversations.list',
|
|
1882
1944
|
summary: 'List conversations',
|
|
1883
1945
|
description:
|
|
1884
|
-
|
|
1946
|
+
"Cursor-paginated. Fixed sort: `openedAt desc, id desc`. Filters: `?agentId=`, `?status=open|closed`, and `scopeKind`/`scopeId` for one project's conversations, or every project's in an org. Conversations from before Kindgi 0.1.3 have no project and are listed only without a scope.",
|
|
1885
1947
|
tags: ['conversations'],
|
|
1886
1948
|
security: 'bearer',
|
|
1887
1949
|
parameters: [
|
|
1888
1950
|
LimitQueryParam,
|
|
1889
1951
|
CursorQueryParam,
|
|
1952
|
+
ScopeKindQueryParam,
|
|
1953
|
+
ScopeIdQueryParam,
|
|
1890
1954
|
AgentIdQueryParam,
|
|
1891
1955
|
ConversationStatusQueryParam,
|
|
1892
1956
|
],
|
|
@@ -1896,7 +1960,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1896
1960
|
schema: ref('ConversationCollectionPage'),
|
|
1897
1961
|
},
|
|
1898
1962
|
...CommonAuthErrors,
|
|
1899
|
-
'400': ErrorResponse('Malformed query parameter.'),
|
|
1963
|
+
'400': ErrorResponse('Malformed query parameter or scope.'),
|
|
1900
1964
|
},
|
|
1901
1965
|
},
|
|
1902
1966
|
{
|
|
@@ -1921,7 +1985,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
1921
1985
|
operationId: 'conversations.open',
|
|
1922
1986
|
summary: 'Open a conversation',
|
|
1923
1987
|
description:
|
|
1924
|
-
'Pins `(agentId, agentVersion)` at open time. `title` defaults to `"Untitled conversation"` when omitted; `scope` accepts arbitrary JSON.',
|
|
1988
|
+
'Pins `(agentId, agentVersion)` at open time. `title` defaults to `"Untitled conversation"` when omitted; `projectId` puts it in a project (lists filter by it; omitted, the Default project); `scope` accepts arbitrary JSON.',
|
|
1925
1989
|
tags: ['conversations'],
|
|
1926
1990
|
security: 'bearer',
|
|
1927
1991
|
parameters: [IdempotencyKeyParam],
|
|
@@ -2243,12 +2307,14 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2243
2307
|
operationId: 'provenance.list',
|
|
2244
2308
|
summary: 'List provenance records',
|
|
2245
2309
|
description:
|
|
2246
|
-
|
|
2310
|
+
"Cursor-paginated. Metadata rows only — clients fetch the DAG payload via `GET /v1/provenance/{runId}`. Fixed sort: `createdAt desc, id desc`. Filters: `?runId=`, `?agentId=`, `?createdAfter=`, and `scopeKind`/`scopeId` for one project's records, or every project's in an org (records from before Kindgi 0.1.3 have no project and are listed only without a scope).",
|
|
2247
2311
|
tags: ['provenance'],
|
|
2248
2312
|
security: 'bearer',
|
|
2249
2313
|
parameters: [
|
|
2250
2314
|
LimitQueryParam,
|
|
2251
2315
|
CursorQueryParam,
|
|
2316
|
+
ScopeKindQueryParam,
|
|
2317
|
+
ScopeIdQueryParam,
|
|
2252
2318
|
ProvenanceRunIdQueryParam,
|
|
2253
2319
|
ProvenanceAgentIdQueryParam,
|
|
2254
2320
|
ProvenanceCreatedAfterQueryParam,
|
|
@@ -2256,7 +2322,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2256
2322
|
responses: {
|
|
2257
2323
|
'200': { description: 'Page of records.', schema: ref('ProvenanceCollectionPage') },
|
|
2258
2324
|
...CommonAuthErrors,
|
|
2259
|
-
'400': ErrorResponse('Malformed cursor
|
|
2325
|
+
'400': ErrorResponse('Malformed cursor, `createdAfter` timestamp or scope.'),
|
|
2260
2326
|
},
|
|
2261
2327
|
},
|
|
2262
2328
|
{
|
|
@@ -2764,7 +2830,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2764
2830
|
operationId: 'cost.records.list',
|
|
2765
2831
|
summary: 'List cost records',
|
|
2766
2832
|
description:
|
|
2767
|
-
|
|
2833
|
+
"Cursor-paginated. Filters (all AND): `runId` (with `includeDescendants`, its whole subtree), `rootRunId`, `agentId`, `conversationId`, `category`, `providerId`, `model`, `servedModel`, `from`, `to`. Sort order is fixed: `occurredAt desc, id desc`. Records represent one accounted resource event each — a model call (`category` `llm.inference`: one record per call, with its model, usage and what the vendor said about it), tool invocation, storage write, sandbox execution, etc. `include=rawUsage` adds each model call's usage as the vendor reported it.",
|
|
2768
2834
|
tags: ['cost'],
|
|
2769
2835
|
security: 'bearer',
|
|
2770
2836
|
parameters: [
|
|
@@ -2775,11 +2841,16 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2775
2841
|
CostConversationIdQueryParam,
|
|
2776
2842
|
CostCategoryQueryParam,
|
|
2777
2843
|
CostProviderIdQueryParam,
|
|
2844
|
+
CostModelQueryParam,
|
|
2845
|
+
CostServedModelQueryParam,
|
|
2846
|
+
CostRootRunIdQueryParam,
|
|
2847
|
+
CostIncludeDescendantsQueryParam,
|
|
2778
2848
|
CostFromQueryParam,
|
|
2779
2849
|
CostToQueryParam,
|
|
2780
2850
|
ScopeKindQueryParam,
|
|
2781
2851
|
ScopeIdQueryParam,
|
|
2782
2852
|
InheritQueryParam,
|
|
2853
|
+
CostIncludeQueryParam,
|
|
2783
2854
|
],
|
|
2784
2855
|
responses: {
|
|
2785
2856
|
'200': { description: 'Page of cost records.', schema: ref('CostRecordCollectionPage') },
|
|
@@ -2795,7 +2866,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2795
2866
|
summary: 'Fetch a cost record',
|
|
2796
2867
|
tags: ['cost'],
|
|
2797
2868
|
security: 'bearer',
|
|
2798
|
-
parameters: [CostRecordIdPathParam],
|
|
2869
|
+
parameters: [CostRecordIdPathParam, CostIncludeQueryParam],
|
|
2799
2870
|
responses: {
|
|
2800
2871
|
'200': { description: 'Cost record.', schema: ref('CostRecord') },
|
|
2801
2872
|
...CommonAuthErrors,
|
|
@@ -2809,7 +2880,7 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2809
2880
|
operationId: 'cost.aggregate',
|
|
2810
2881
|
summary: 'Aggregate cost across a time window',
|
|
2811
2882
|
description:
|
|
2812
|
-
|
|
2883
|
+
"Primary consumer path for dashboards. `groupBy` is required (comma-separated dimensions from the closed set); time range is required (both `from` and `to`, or both omitted for the default last-30-days window echoed back in `timeRange`). Filters compose on top of the time window. `?scopeKind + ?scopeId` narrow the aggregate to a scope: `org` covers every project in the org, so one call sums an org's spend. Each group, and the total, carries its cost and its token sums (`tokens`). `inherit` has no effect on cost records, which always belong to a project.",
|
|
2813
2884
|
tags: ['cost'],
|
|
2814
2885
|
security: 'bearer',
|
|
2815
2886
|
parameters: [
|
|
@@ -2821,6 +2892,10 @@ export const OPERATIONS: readonly OperationSpec[] = [
|
|
|
2821
2892
|
CostAgentIdQueryParam,
|
|
2822
2893
|
CostRunIdQueryParam,
|
|
2823
2894
|
CostConversationIdQueryParam,
|
|
2895
|
+
CostModelQueryParam,
|
|
2896
|
+
CostServedModelQueryParam,
|
|
2897
|
+
CostRootRunIdQueryParam,
|
|
2898
|
+
CostIncludeDescendantsQueryParam,
|
|
2824
2899
|
ScopeKindQueryParam,
|
|
2825
2900
|
ScopeIdQueryParam,
|
|
2826
2901
|
InheritQueryParam,
|