@mitralab.io/sdk-core 0.2.0-beta.2 → 0.2.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.
@@ -0,0 +1,2902 @@
1
+ {
2
+ "contract": "SDK-PARITY-001",
3
+ "version": "0.2.0",
4
+ "description": "Canonical semantic and HTTP contract fixtures for the Mitra runtime SDKs.",
5
+ "sources": {
6
+ "mcp": {
7
+ "repository": "mitralab-dev/mitra-mcp-server",
8
+ "ref": "origin/alpha",
9
+ "commit": "4034ae9086d7599ff1767af0845803f616132b9d",
10
+ "paths": [
11
+ "src/main/java/io/mitralab/mcp/tools/datamanager/DataManagerRecordTools.java",
12
+ "src/main/java/io/mitralab/mcp/tools/datamanager/DataManagerCustomQueryTools.java",
13
+ "src/main/java/io/mitralab/mcp/tools/functions/FunctionTools.java",
14
+ "src/main/java/io/mitralab/mcp/tools/iam/IamTools.java",
15
+ "src/main/java/io/mitralab/mcp/tools/integration/IntegrationProxyTools.java",
16
+ "src/main/java/io/mitralab/mcp/tools/integration/IntegrationResourceTools.java"
17
+ ]
18
+ },
19
+ "dataManagerAlpha": {
20
+ "repository": "mitralab-dev/mitra-data-manager",
21
+ "ref": "origin/alpha",
22
+ "commit": "50dac9514c6b79b0da34280955e4afeaa24f9f84",
23
+ "request": "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/CustomQueryExecuteRequest.java",
24
+ "controller": "api/src/main/java/io/mitralab/datamanager/infrastructure/api/CustomQueryController.java",
25
+ "response": "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/QueryExecuteResponse.java",
26
+ "errorHandler": "api/src/main/java/io/mitralab/datamanager/infrastructure/api/exception/GlobalExceptionHandler.java",
27
+ "controllerTest": "api/src/test/java/io/mitralab/datamanager/api/CustomQueryControllerTest.java"
28
+ },
29
+ "dataManagerBuilder": {
30
+ "repository": "mitralab-dev/mitra-data-manager",
31
+ "ref": "origin/alpha",
32
+ "commit": "50dac9514c6b79b0da34280955e4afeaa24f9f84",
33
+ "paths": [
34
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/SqlBatchController.java",
35
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/BatchExecuteResponse.java",
36
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/BatchItemResponse.java",
37
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/DdlBatchStatementRequest.java",
38
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/DmlBatchStatementRequest.java",
39
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/SchemaController.java",
40
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/DataSourceController.java",
41
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/DataSourceBulkResponse.java",
42
+ "api/src/main/java/io/mitralab/datamanager/infrastructure/api/dto/DataSourceBulkUpdateItemRequest.java"
43
+ ]
44
+ },
45
+ "functionsBuilder": {
46
+ "repository": "mitralab-dev/mitra-functions",
47
+ "ref": "origin/alpha",
48
+ "commit": "d9921f620afff62ea8a047d2f301b41c725b35cb",
49
+ "paths": [
50
+ "src/main/java/io/mitralab/functions/infrastructure/api/FunctionController.java",
51
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionCreateRequest.java",
52
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionPatchRequest.java",
53
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionResponse.java",
54
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionShortResponse.java",
55
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionBulkCreateRequest.java",
56
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionBulkUpdateRequest.java",
57
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionBulkPatchRequest.java",
58
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionBulkDeleteRequest.java",
59
+ "src/main/java/io/mitralab/functions/infrastructure/api/dto/FunctionBulkDeleteResponse.java"
60
+ ]
61
+ },
62
+ "integrationBuilder": {
63
+ "repository": "mitralab-dev/mitra-integration",
64
+ "ref": "origin/alpha",
65
+ "commit": "cfd4b1ce6e36c07b88de7e67e0fa3b9adb9f158b",
66
+ "paths": [
67
+ "src/main/java/io/mitralab/integration/infrastructure/api/TemplateConfigController.java",
68
+ "src/main/java/io/mitralab/integration/infrastructure/api/dto/BulkCreateTemplateConfigsRequest.java",
69
+ "src/main/java/io/mitralab/integration/infrastructure/api/dto/BulkUpdateTemplateConfigsRequest.java",
70
+ "src/main/java/io/mitralab/integration/infrastructure/api/dto/BulkDeleteTemplateConfigsRequest.java",
71
+ "src/main/java/io/mitralab/integration/infrastructure/api/dto/TemplateConfigBulkResponse.java",
72
+ "src/main/java/io/mitralab/integration/infrastructure/api/dto/TestConnectionResponse.java"
73
+ ]
74
+ },
75
+ "iamBuilder": {
76
+ "repository": "mitralab-dev/mitra-iam",
77
+ "ref": "origin/alpha",
78
+ "commit": "6337ced228bfd0c2244a23a09142a34ac7e87aad",
79
+ "paths": [
80
+ "src/main/java/io/mitralab/iam/domain/entity/ClusterType.java",
81
+ "src/main/java/io/mitralab/iam/infrastructure/api/AuthController.java",
82
+ "src/main/java/io/mitralab/iam/infrastructure/api/MemberController.java",
83
+ "src/main/java/io/mitralab/iam/infrastructure/api/dto/CurrentUserResponse.java",
84
+ "src/main/java/io/mitralab/iam/infrastructure/api/dto/TenantResponse.java",
85
+ "src/main/java/io/mitralab/iam/infrastructure/api/dto/EffectiveAppUserResponse.java"
86
+ ]
87
+ },
88
+ "mcpBuilder": {
89
+ "repository": "mitralab-dev/mitra-mcp-server",
90
+ "ref": "origin/alpha",
91
+ "commit": "4034ae9086d7599ff1767af0845803f616132b9d",
92
+ "paths": [
93
+ "src/main/java/io/mitralab/mcp/tools/datamanager/DataManagerQueryTools.java",
94
+ "src/main/java/io/mitralab/mcp/tools/datamanager/DataManagerSchemaTools.java",
95
+ "src/main/java/io/mitralab/mcp/tools/datamanager/DataManagerDataSourceTools.java",
96
+ "src/main/java/io/mitralab/mcp/tools/functions/FunctionTools.java",
97
+ "src/main/java/io/mitralab/mcp/tools/integration/IntegrationProxyTools.java"
98
+ ]
99
+ }
100
+ },
101
+ "matrix": [
102
+ {
103
+ "operation": "auth.me",
104
+ "mcpTool": "getMe",
105
+ "javascript": "auth.me()",
106
+ "python": "auth.me()",
107
+ "endpoint": "GET /iam/api/v1/auth/me",
108
+ "mcpTransportParity": "exact"
109
+ },
110
+ {
111
+ "operation": "entities.list",
112
+ "mcpTool": "listRecords",
113
+ "javascript": "entities.getTable(table).list(options)",
114
+ "python": "entities.table(table).list(**options)",
115
+ "endpoint": "GET /data-manager/api/v1/tables/{table}/records",
116
+ "mcpTransportParity": "semantic-only"
117
+ },
118
+ {
119
+ "operation": "entities.filter",
120
+ "mcpTool": "listRecords",
121
+ "javascript": "entities.getTable(table).filter(query, sort, limit, skip, fields)",
122
+ "python": "entities.table(table).filter(query, sort=sort, limit=limit, skip=skip, fields=fields)",
123
+ "endpoint": "GET /data-manager/api/v1/tables/{table}/records",
124
+ "mcpTransportParity": "semantic-only"
125
+ },
126
+ {
127
+ "operation": "entities.get",
128
+ "mcpTool": "getRecord",
129
+ "javascript": "entities.getTable(table).get(id)",
130
+ "python": "entities.table(table).get(id)",
131
+ "endpoint": "GET /data-manager/api/v1/tables/{table}/records/{id}",
132
+ "mcpTransportParity": "semantic-only"
133
+ },
134
+ {
135
+ "operation": "entities.create",
136
+ "mcpTool": "createRecord",
137
+ "javascript": "entities.getTable(table).create(data)",
138
+ "python": "entities.table(table).create(data)",
139
+ "endpoint": "POST /data-manager/api/v1/tables/{table}/records",
140
+ "mcpTransportParity": "semantic-only"
141
+ },
142
+ {
143
+ "operation": "entities.bulkCreate",
144
+ "mcpTool": "bulkCreateRecords",
145
+ "javascript": "entities.getTable(table).bulkCreate(data)",
146
+ "python": "entities.table(table).bulk_create(data)",
147
+ "endpoint": "POST /data-manager/api/v1/tables/{table}/records/bulk",
148
+ "mcpTransportParity": "semantic-only"
149
+ },
150
+ {
151
+ "operation": "entities.update",
152
+ "mcpTool": "updateRecord",
153
+ "javascript": "entities.getTable(table).update(id, data)",
154
+ "python": "entities.table(table).update(id, data)",
155
+ "endpoint": "PUT /data-manager/api/v1/tables/{table}/records/{id}",
156
+ "mcpTransportParity": "semantic-only"
157
+ },
158
+ {
159
+ "operation": "entities.delete",
160
+ "mcpTool": "deleteRecord",
161
+ "javascript": "entities.getTable(table).delete(id)",
162
+ "python": "entities.table(table).delete(id)",
163
+ "endpoint": "DELETE /data-manager/api/v1/tables/{table}/records/{id}",
164
+ "mcpTransportParity": "semantic-only"
165
+ },
166
+ {
167
+ "operation": "entities.deleteMany",
168
+ "mcpTool": "deleteManyRecords",
169
+ "javascript": "entities.getTable(table).deleteMany(query)",
170
+ "python": "entities.table(table).delete_many(query)",
171
+ "endpoint": "DELETE /data-manager/api/v1/tables/{table}/records",
172
+ "mcpTransportParity": "semantic-only"
173
+ },
174
+ {
175
+ "operation": "queries.execute",
176
+ "mcpTool": "executeCustomQuery",
177
+ "javascript": "queries.execute(id, parameters)",
178
+ "python": "queries.execute(id, parameters)",
179
+ "endpoint": "POST /data-manager/api/v1/custom-queries/{id}/execute",
180
+ "mcpTransportParity": "exact"
181
+ },
182
+ {
183
+ "operation": "functions.execute",
184
+ "mcpTool": "executeFunction",
185
+ "javascript": "functions.execute(id, input)",
186
+ "python": "functions.execute(id, input)",
187
+ "endpoint": "POST /functions/api/v1/functions/{id}/execute",
188
+ "mcpTransportParity": "exact"
189
+ },
190
+ {
191
+ "operation": "functions.executeAsync",
192
+ "mcpTool": null,
193
+ "javascript": "functions.executeAsync(id, input)",
194
+ "python": "functions.execute_async(id, input)",
195
+ "endpoint": "POST /functions/api/v1/functions/{id}/execute",
196
+ "mcpTransportParity": "sdk-only"
197
+ },
198
+ {
199
+ "operation": "functions.getExecution",
200
+ "mcpTool": "getExecution",
201
+ "javascript": "functions.getExecution(id)",
202
+ "python": "functions.get_execution(id)",
203
+ "endpoint": "GET /functions/api/v1/executions/{id}",
204
+ "mcpTransportParity": "semantic-only"
205
+ },
206
+ {
207
+ "operation": "functions.cancelExecution",
208
+ "mcpTool": null,
209
+ "javascript": "functions.cancelExecution(id)",
210
+ "python": "functions.cancel_execution(id)",
211
+ "endpoint": "POST /functions/api/v1/executions/{id}/cancel",
212
+ "mcpTransportParity": "sdk-only"
213
+ },
214
+ {
215
+ "operation": "integration.execute",
216
+ "mcpTool": "executeIntegrationTemplateConfig",
217
+ "javascript": "integration.execute(configId, request)",
218
+ "python": "integration.execute(config_id, request)",
219
+ "endpoint": "POST /integration/api/v1/proxy/template-configs/{id}/execute",
220
+ "mcpTransportParity": "semantic-only"
221
+ },
222
+ {
223
+ "operation": "integration.executeResource",
224
+ "mcpTool": "executeIntegrationResource",
225
+ "javascript": "integration.executeResource(resourceId, parameters)",
226
+ "python": "integration.execute_resource(resource_id, parameters)",
227
+ "endpoint": "POST /integration/api/v1/proxy/resources/{id}/execute",
228
+ "mcpTransportParity": "exact"
229
+ },
230
+ {
231
+ "operation": "sql.executeDdl",
232
+ "mcpTool": "executeDdlBatch",
233
+ "javascript": "sql.executeDdl(statements)",
234
+ "python": "sql.execute_ddl(statements)",
235
+ "endpoint": "POST /data-manager/api/v1/sql/ddl/execute",
236
+ "mcpTransportParity": "exact"
237
+ },
238
+ {
239
+ "operation": "sql.executeDml",
240
+ "mcpTool": "executeDmlBatch",
241
+ "javascript": "sql.executeDml(statements)",
242
+ "python": "sql.execute_dml(statements)",
243
+ "endpoint": "POST /data-manager/api/v1/sql/dml/execute",
244
+ "mcpTransportParity": "exact"
245
+ },
246
+ {
247
+ "operation": "sql.listTables",
248
+ "mcpTool": "listTables",
249
+ "javascript": "sql.listTables(options)",
250
+ "python": "sql.list_tables(**options)",
251
+ "endpoint": "GET /data-manager/api/v1/tables",
252
+ "mcpTransportParity": "semantic-only"
253
+ },
254
+ {
255
+ "operation": "dataSources.bulkCreate",
256
+ "mcpTool": "bulkCreateDataSources",
257
+ "javascript": "dataSources.bulkCreate(dataSources)",
258
+ "python": "data_sources.bulk_create(data_sources)",
259
+ "endpoint": "POST /data-manager/api/v1/data-sources",
260
+ "mcpTransportParity": "semantic-only"
261
+ },
262
+ {
263
+ "operation": "dataSources.bulkUpdate",
264
+ "mcpTool": "bulkUpdateDataSources",
265
+ "javascript": "dataSources.bulkUpdate(dataSources)",
266
+ "python": "data_sources.bulk_update(data_sources)",
267
+ "endpoint": "PUT /data-manager/api/v1/data-sources/{id}",
268
+ "mcpTransportParity": "semantic-only"
269
+ },
270
+ {
271
+ "operation": "dataSources.bulkDelete",
272
+ "mcpTool": "bulkDeleteDataSources",
273
+ "javascript": "dataSources.bulkDelete(dataSourceIds)",
274
+ "python": "data_sources.bulk_delete(data_source_ids)",
275
+ "endpoint": "DELETE /data-manager/api/v1/data-sources/{id}",
276
+ "mcpTransportParity": "semantic-only"
277
+ },
278
+ {
279
+ "operation": "functionsAdmin.bulkCreate",
280
+ "mcpTool": "bulkCreateFunctions",
281
+ "javascript": "functionsAdmin.bulkCreate(functions)",
282
+ "python": "functions_admin.bulk_create(functions)",
283
+ "endpoint": "POST /functions/api/v1/functions/bulk",
284
+ "mcpTransportParity": "exact"
285
+ },
286
+ {
287
+ "operation": "functionsAdmin.bulkUpdate",
288
+ "mcpTool": null,
289
+ "javascript": "functionsAdmin.bulkUpdate(functions)",
290
+ "python": "functions_admin.bulk_update(functions)",
291
+ "endpoint": "PUT /functions/api/v1/functions/bulk",
292
+ "mcpTransportParity": "sdk-only"
293
+ },
294
+ {
295
+ "operation": "functionsAdmin.bulkPatch",
296
+ "mcpTool": "bulkUpdateFunctions",
297
+ "javascript": "functionsAdmin.bulkPatch(functions)",
298
+ "python": "functions_admin.bulk_patch(functions)",
299
+ "endpoint": "PATCH /functions/api/v1/functions/bulk",
300
+ "mcpTransportParity": "exact"
301
+ },
302
+ {
303
+ "operation": "functionsAdmin.bulkDelete",
304
+ "mcpTool": "bulkDeleteFunctions",
305
+ "javascript": "functionsAdmin.bulkDelete(selector)",
306
+ "python": "functions_admin.bulk_delete(selector)",
307
+ "endpoint": "POST /functions/api/v1/functions/bulk-delete",
308
+ "mcpTransportParity": "exact"
309
+ },
310
+ {
311
+ "operation": "integrationAdmin.bulkCreate",
312
+ "mcpTool": "bulkCreateIntegrationConfigs",
313
+ "javascript": "integrationAdmin.bulkCreate(configs)",
314
+ "python": "integration_admin.bulk_create(configs)",
315
+ "endpoint": "POST /integration/api/v1/template-configs/bulk",
316
+ "mcpTransportParity": "exact"
317
+ },
318
+ {
319
+ "operation": "integrationAdmin.bulkUpdate",
320
+ "mcpTool": "bulkUpdateIntegrationConfigs",
321
+ "javascript": "integrationAdmin.bulkUpdate(configs)",
322
+ "python": "integration_admin.bulk_update(configs)",
323
+ "endpoint": "PUT /integration/api/v1/template-configs/bulk",
324
+ "mcpTransportParity": "exact"
325
+ },
326
+ {
327
+ "operation": "integrationAdmin.bulkDelete",
328
+ "mcpTool": "bulkDeleteIntegrationConfigs",
329
+ "javascript": "integrationAdmin.bulkDelete(configIds)",
330
+ "python": "integration_admin.bulk_delete(config_ids)",
331
+ "endpoint": "POST /integration/api/v1/template-configs/bulk-delete",
332
+ "mcpTransportParity": "exact"
333
+ },
334
+ {
335
+ "operation": "integrationAdmin.testCredentials",
336
+ "mcpTool": "testIntegrationCredentials",
337
+ "javascript": "integrationAdmin.testCredentials(request)",
338
+ "python": "integration_admin.test_credentials(request)",
339
+ "endpoint": "POST /integration/api/v1/template-configs/test",
340
+ "mcpTransportParity": "exact"
341
+ },
342
+ {
343
+ "operation": "integrationAdmin.testConfig",
344
+ "mcpTool": "testIntegrationConfig",
345
+ "javascript": "integrationAdmin.testConfig(configId)",
346
+ "python": "integration_admin.test_config(config_id)",
347
+ "endpoint": "POST /integration/api/v1/template-configs/{id}/test",
348
+ "mcpTransportParity": "exact"
349
+ },
350
+ {
351
+ "operation": "integrationAdmin.list",
352
+ "mcpTool": null,
353
+ "javascript": "integrationAdmin.list(options)",
354
+ "python": "integration_admin.list(**options)",
355
+ "endpoint": "GET /integration/api/v1/template-configs",
356
+ "mcpTransportParity": "sdk-only"
357
+ },
358
+ {
359
+ "operation": "members.list",
360
+ "mcpTool": null,
361
+ "javascript": "members.list()",
362
+ "python": "members.list()",
363
+ "endpoint": "GET /iam/api/v1/members/current-app",
364
+ "mcpTransportParity": "sdk-only"
365
+ }
366
+ ],
367
+ "customQueryExecution": {
368
+ "sdkTarget": "alpha",
369
+ "requestBody": {
370
+ "parameters": {
371
+ "status": "active"
372
+ }
373
+ },
374
+ "dataSourceResolution": "authenticated-app",
375
+ "declaresDataSourceId": false,
376
+ "adapterRequirement": "Use the app-scoped JWT so Data Manager resolves the current app Data Source."
377
+ },
378
+ "consumerRequirements": {
379
+ "@mitralab.io/sdk-core": {
380
+ "successCases": "all",
381
+ "responseValidationCases": "all"
382
+ },
383
+ "@mitralab.io/functions-sdk": {
384
+ "httpAdapterCases": "all"
385
+ },
386
+ "mitra-functions-sdk": {
387
+ "successCases": "all",
388
+ "responseValidationCases": "all",
389
+ "httpAdapterCases": "all"
390
+ }
391
+ },
392
+ "cases": [
393
+ {
394
+ "id": "auth.me.success",
395
+ "kind": "success",
396
+ "operation": "auth.me",
397
+ "input": {},
398
+ "request": {
399
+ "service": "auth",
400
+ "method": "GET",
401
+ "path": "/api/v1/auth/me"
402
+ },
403
+ "response": {
404
+ "status": 200,
405
+ "body": {
406
+ "id": "user-1",
407
+ "tenant": {
408
+ "id": "tenant-1",
409
+ "shortId": "AAAAAAAAAAAAAAAAAAAAEA",
410
+ "legacyId": null,
411
+ "slug": "tenant-one",
412
+ "clusterType": "SHARED",
413
+ "name": "Tenant One",
414
+ "description": null,
415
+ "hexColor": null,
416
+ "icon": null,
417
+ "infraStatus": "ACTIVE",
418
+ "active": true
419
+ },
420
+ "name": "Test User",
421
+ "email": "user@example.com",
422
+ "imageUrl": null,
423
+ "planId": "plan-1",
424
+ "onboardingCompleted": false,
425
+ "language": "pt-BR"
426
+ }
427
+ },
428
+ "expectedResult": {
429
+ "id": "user-1",
430
+ "tenant": {
431
+ "id": "tenant-1",
432
+ "shortId": "AAAAAAAAAAAAAAAAAAAAEA",
433
+ "legacyId": null,
434
+ "slug": "tenant-one",
435
+ "clusterType": "SHARED",
436
+ "name": "Tenant One",
437
+ "description": null,
438
+ "hexColor": null,
439
+ "icon": null,
440
+ "infraStatus": "ACTIVE",
441
+ "active": true
442
+ },
443
+ "name": "Test User",
444
+ "email": "user@example.com",
445
+ "imageUrl": null,
446
+ "planId": "plan-1",
447
+ "onboardingCompleted": false,
448
+ "language": "pt-BR"
449
+ }
450
+ },
451
+ {
452
+ "id": "entities.list.success",
453
+ "kind": "success",
454
+ "operation": "entities.list",
455
+ "input": {
456
+ "table": "Order items",
457
+ "options": {
458
+ "sort": "-created_at",
459
+ "limit": 2,
460
+ "skip": 4,
461
+ "fields": ["id", "status"]
462
+ }
463
+ },
464
+ "request": {
465
+ "service": "dataManager",
466
+ "method": "GET",
467
+ "path": "/api/v1/tables/Order%20items/records",
468
+ "params": {
469
+ "sort": "-created_at",
470
+ "limit": 2,
471
+ "skip": 4,
472
+ "fields": "id,status"
473
+ }
474
+ },
475
+ "response": {
476
+ "status": 200,
477
+ "body": {
478
+ "data": [
479
+ {
480
+ "id": "order-5",
481
+ "status": "active"
482
+ },
483
+ {
484
+ "id": "order-6",
485
+ "status": "pending"
486
+ }
487
+ ],
488
+ "limit": 2,
489
+ "skip": 4,
490
+ "total": 8,
491
+ "hasMore": true
492
+ }
493
+ },
494
+ "expectedResult": {
495
+ "data": [
496
+ {
497
+ "id": "order-5",
498
+ "status": "active"
499
+ },
500
+ {
501
+ "id": "order-6",
502
+ "status": "pending"
503
+ }
504
+ ],
505
+ "limit": 2,
506
+ "skip": 4,
507
+ "total": 8,
508
+ "hasMore": true
509
+ }
510
+ },
511
+ {
512
+ "id": "entities.filter.success",
513
+ "kind": "success",
514
+ "operation": "entities.filter",
515
+ "input": {
516
+ "table": "Orders",
517
+ "query": {
518
+ "status": "active"
519
+ },
520
+ "sort": "name",
521
+ "limit": 5,
522
+ "skip": 0,
523
+ "fields": ["id", "status"]
524
+ },
525
+ "request": {
526
+ "service": "dataManager",
527
+ "method": "GET",
528
+ "path": "/api/v1/tables/Orders/records",
529
+ "params": {
530
+ "q": "{\"status\":\"active\"}",
531
+ "sort": "name",
532
+ "limit": 5,
533
+ "skip": 0,
534
+ "fields": "id,status"
535
+ }
536
+ },
537
+ "response": {
538
+ "status": 200,
539
+ "body": {
540
+ "data": [
541
+ {
542
+ "id": "order-1",
543
+ "status": "active"
544
+ }
545
+ ],
546
+ "limit": 5,
547
+ "skip": 0,
548
+ "total": 1,
549
+ "hasMore": false
550
+ }
551
+ },
552
+ "expectedResult": {
553
+ "data": [
554
+ {
555
+ "id": "order-1",
556
+ "status": "active"
557
+ }
558
+ ],
559
+ "limit": 5,
560
+ "skip": 0,
561
+ "total": 1,
562
+ "hasMore": false
563
+ }
564
+ },
565
+ {
566
+ "id": "entities.get.success",
567
+ "kind": "success",
568
+ "operation": "entities.get",
569
+ "input": {
570
+ "table": "Orders",
571
+ "id": "order/1"
572
+ },
573
+ "request": {
574
+ "service": "dataManager",
575
+ "method": "GET",
576
+ "path": "/api/v1/tables/Orders/records/order%2F1"
577
+ },
578
+ "response": {
579
+ "status": 200,
580
+ "body": {
581
+ "id": "order/1",
582
+ "status": "active"
583
+ }
584
+ },
585
+ "expectedResult": {
586
+ "id": "order/1",
587
+ "status": "active"
588
+ }
589
+ },
590
+ {
591
+ "id": "entities.create.success",
592
+ "kind": "success",
593
+ "operation": "entities.create",
594
+ "input": {
595
+ "table": "Orders",
596
+ "data": {
597
+ "status": "draft"
598
+ }
599
+ },
600
+ "request": {
601
+ "service": "dataManager",
602
+ "method": "POST",
603
+ "path": "/api/v1/tables/Orders/records",
604
+ "body": {
605
+ "status": "draft"
606
+ }
607
+ },
608
+ "response": {
609
+ "status": 201,
610
+ "body": {
611
+ "id": "order-2",
612
+ "status": "draft"
613
+ }
614
+ },
615
+ "expectedResult": {
616
+ "id": "order-2",
617
+ "status": "draft"
618
+ }
619
+ },
620
+ {
621
+ "id": "entities.bulk-create.success",
622
+ "kind": "success",
623
+ "operation": "entities.bulkCreate",
624
+ "input": {
625
+ "table": "Orders",
626
+ "data": [
627
+ {
628
+ "status": "draft"
629
+ },
630
+ {
631
+ "status": "active"
632
+ }
633
+ ]
634
+ },
635
+ "request": {
636
+ "service": "dataManager",
637
+ "method": "POST",
638
+ "path": "/api/v1/tables/Orders/records/bulk",
639
+ "body": [
640
+ {
641
+ "status": "draft"
642
+ },
643
+ {
644
+ "status": "active"
645
+ }
646
+ ]
647
+ },
648
+ "response": {
649
+ "status": 201,
650
+ "body": [
651
+ {
652
+ "id": "order-3",
653
+ "status": "draft"
654
+ },
655
+ {
656
+ "id": "order-4",
657
+ "status": "active"
658
+ }
659
+ ]
660
+ },
661
+ "expectedResult": [
662
+ {
663
+ "id": "order-3",
664
+ "status": "draft"
665
+ },
666
+ {
667
+ "id": "order-4",
668
+ "status": "active"
669
+ }
670
+ ]
671
+ },
672
+ {
673
+ "id": "entities.update.success",
674
+ "kind": "success",
675
+ "operation": "entities.update",
676
+ "input": {
677
+ "table": "Orders",
678
+ "id": "order-2",
679
+ "data": {
680
+ "status": "active"
681
+ }
682
+ },
683
+ "request": {
684
+ "service": "dataManager",
685
+ "method": "PUT",
686
+ "path": "/api/v1/tables/Orders/records/order-2",
687
+ "body": {
688
+ "status": "active"
689
+ }
690
+ },
691
+ "response": {
692
+ "status": 200,
693
+ "body": {
694
+ "id": "order-2",
695
+ "status": "active"
696
+ }
697
+ },
698
+ "expectedResult": {
699
+ "id": "order-2",
700
+ "status": "active"
701
+ }
702
+ },
703
+ {
704
+ "id": "entities.delete.success",
705
+ "kind": "success",
706
+ "operation": "entities.delete",
707
+ "input": {
708
+ "table": "Orders",
709
+ "id": "order-2"
710
+ },
711
+ "request": {
712
+ "service": "dataManager",
713
+ "method": "DELETE",
714
+ "path": "/api/v1/tables/Orders/records/order-2"
715
+ },
716
+ "response": {
717
+ "status": 204,
718
+ "empty": true
719
+ }
720
+ },
721
+ {
722
+ "id": "entities.delete-many.success",
723
+ "kind": "success",
724
+ "operation": "entities.deleteMany",
725
+ "input": {
726
+ "table": "Orders",
727
+ "query": {
728
+ "status": "archived"
729
+ }
730
+ },
731
+ "request": {
732
+ "service": "dataManager",
733
+ "method": "DELETE",
734
+ "path": "/api/v1/tables/Orders/records",
735
+ "params": {
736
+ "q": "{\"status\":\"archived\"}"
737
+ }
738
+ },
739
+ "response": {
740
+ "status": 200,
741
+ "body": {
742
+ "deleted": 2
743
+ }
744
+ },
745
+ "expectedResult": {
746
+ "deleted": 2
747
+ }
748
+ },
749
+ {
750
+ "id": "queries.execute.success",
751
+ "kind": "success",
752
+ "operation": "queries.execute",
753
+ "input": {
754
+ "id": "00000000-0000-4000-8000-000000000101",
755
+ "parameters": {
756
+ "status": "active"
757
+ }
758
+ },
759
+ "request": {
760
+ "service": "dataManager",
761
+ "method": "POST",
762
+ "path": "/api/v1/custom-queries/00000000-0000-4000-8000-000000000101/execute",
763
+ "body": {
764
+ "parameters": {
765
+ "status": "active"
766
+ }
767
+ }
768
+ },
769
+ "response": {
770
+ "status": 200,
771
+ "body": {
772
+ "rows": [
773
+ {
774
+ "total": 2
775
+ }
776
+ ],
777
+ "durationMs": 7
778
+ }
779
+ },
780
+ "expectedResult": {
781
+ "rows": [
782
+ {
783
+ "total": 2
784
+ }
785
+ ],
786
+ "durationMs": 7
787
+ }
788
+ },
789
+ {
790
+ "id": "functions.execute.success",
791
+ "kind": "success",
792
+ "operation": "functions.execute",
793
+ "input": {
794
+ "id": "00000000-0000-4000-8000-000000000201",
795
+ "body": {
796
+ "orderId": "order-1"
797
+ }
798
+ },
799
+ "request": {
800
+ "service": "functions",
801
+ "method": "POST",
802
+ "path": "/api/v1/functions/00000000-0000-4000-8000-000000000201/execute",
803
+ "headers": {
804
+ "X-Invocation-Type": "sync"
805
+ },
806
+ "body": {
807
+ "input": {
808
+ "orderId": "order-1"
809
+ }
810
+ }
811
+ },
812
+ "response": {
813
+ "status": 200,
814
+ "body": {
815
+ "id": "00000000-0000-4000-8000-000000000301",
816
+ "functionId": "00000000-0000-4000-8000-000000000201",
817
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
818
+ "status": "SUCCESS",
819
+ "input": {
820
+ "orderId": "order-1"
821
+ },
822
+ "output": {
823
+ "ok": true
824
+ },
825
+ "errorMessage": null,
826
+ "logs": null,
827
+ "durationMs": 10,
828
+ "startedAt": "2026-08-14T20:00:00Z",
829
+ "finishedAt": "2026-08-14T20:00:01Z",
830
+ "createdAt": "2026-08-14T20:00:00Z"
831
+ }
832
+ },
833
+ "expectedResult": {
834
+ "id": "00000000-0000-4000-8000-000000000301",
835
+ "functionId": "00000000-0000-4000-8000-000000000201",
836
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
837
+ "status": "SUCCESS",
838
+ "input": {
839
+ "orderId": "order-1"
840
+ },
841
+ "output": {
842
+ "ok": true
843
+ },
844
+ "errorMessage": null,
845
+ "logs": null,
846
+ "durationMs": 10,
847
+ "startedAt": "2026-08-14T20:00:00Z",
848
+ "finishedAt": "2026-08-14T20:00:01Z",
849
+ "createdAt": "2026-08-14T20:00:00Z"
850
+ }
851
+ },
852
+ {
853
+ "id": "functions.execute-async.success",
854
+ "kind": "success",
855
+ "operation": "functions.executeAsync",
856
+ "input": {
857
+ "id": "00000000-0000-4000-8000-000000000201",
858
+ "body": {
859
+ "orderId": "order-2"
860
+ }
861
+ },
862
+ "request": {
863
+ "service": "functions",
864
+ "method": "POST",
865
+ "path": "/api/v1/functions/00000000-0000-4000-8000-000000000201/execute",
866
+ "headers": {
867
+ "X-Invocation-Type": "async"
868
+ },
869
+ "body": {
870
+ "input": {
871
+ "orderId": "order-2"
872
+ }
873
+ }
874
+ },
875
+ "response": {
876
+ "status": 202,
877
+ "body": {
878
+ "id": "00000000-0000-4000-8000-000000000302",
879
+ "functionId": "00000000-0000-4000-8000-000000000201",
880
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
881
+ "status": "PENDING",
882
+ "input": {
883
+ "orderId": "order-2"
884
+ },
885
+ "output": null,
886
+ "errorMessage": null,
887
+ "logs": null,
888
+ "durationMs": null,
889
+ "startedAt": null,
890
+ "finishedAt": null,
891
+ "createdAt": "2026-08-14T20:01:00Z"
892
+ }
893
+ },
894
+ "expectedResult": {
895
+ "id": "00000000-0000-4000-8000-000000000302",
896
+ "functionId": "00000000-0000-4000-8000-000000000201",
897
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
898
+ "status": "PENDING",
899
+ "input": {
900
+ "orderId": "order-2"
901
+ },
902
+ "output": null,
903
+ "errorMessage": null,
904
+ "logs": null,
905
+ "durationMs": null,
906
+ "startedAt": null,
907
+ "finishedAt": null,
908
+ "createdAt": "2026-08-14T20:01:00Z"
909
+ }
910
+ },
911
+ {
912
+ "id": "functions.get-execution.success",
913
+ "kind": "success",
914
+ "operation": "functions.getExecution",
915
+ "input": {
916
+ "id": "00000000-0000-4000-8000-000000000302"
917
+ },
918
+ "request": {
919
+ "service": "functions",
920
+ "method": "GET",
921
+ "path": "/api/v1/executions/00000000-0000-4000-8000-000000000302"
922
+ },
923
+ "response": {
924
+ "status": 200,
925
+ "body": {
926
+ "id": "00000000-0000-4000-8000-000000000302",
927
+ "functionId": "00000000-0000-4000-8000-000000000201",
928
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
929
+ "status": "SUCCESS",
930
+ "input": {
931
+ "orderId": "order-2"
932
+ },
933
+ "output": {
934
+ "ok": true
935
+ },
936
+ "errorMessage": null,
937
+ "logs": "done",
938
+ "durationMs": 12,
939
+ "startedAt": "2026-08-14T20:01:00Z",
940
+ "finishedAt": "2026-08-14T20:01:01Z",
941
+ "createdAt": "2026-08-14T20:01:00Z"
942
+ }
943
+ },
944
+ "expectedResult": {
945
+ "id": "00000000-0000-4000-8000-000000000302",
946
+ "functionId": "00000000-0000-4000-8000-000000000201",
947
+ "functionVersionId": "00000000-0000-4000-8000-000000000211",
948
+ "status": "SUCCESS",
949
+ "input": {
950
+ "orderId": "order-2"
951
+ },
952
+ "output": {
953
+ "ok": true
954
+ },
955
+ "errorMessage": null,
956
+ "logs": "done",
957
+ "durationMs": 12,
958
+ "startedAt": "2026-08-14T20:01:00Z",
959
+ "finishedAt": "2026-08-14T20:01:01Z",
960
+ "createdAt": "2026-08-14T20:01:00Z"
961
+ }
962
+ },
963
+ {
964
+ "id": "functions.cancel-execution.success",
965
+ "kind": "success",
966
+ "operation": "functions.cancelExecution",
967
+ "input": {
968
+ "id": "00000000-0000-4000-8000-000000000302"
969
+ },
970
+ "request": {
971
+ "service": "functions",
972
+ "method": "POST",
973
+ "path": "/api/v1/executions/00000000-0000-4000-8000-000000000302/cancel"
974
+ },
975
+ "response": {
976
+ "status": 204,
977
+ "empty": true
978
+ }
979
+ },
980
+ {
981
+ "id": "integration.execute.success",
982
+ "kind": "success",
983
+ "operation": "integration.execute",
984
+ "input": {
985
+ "id": "00000000-0000-4000-8000-000000000401",
986
+ "proxyRequest": {
987
+ "method": "POST",
988
+ "endpoint": "/orders",
989
+ "headers": {
990
+ "x-client": "sdk"
991
+ },
992
+ "body": {
993
+ "id": "order-1"
994
+ },
995
+ "queryParams": {
996
+ "dryRun": true
997
+ }
998
+ }
999
+ },
1000
+ "request": {
1001
+ "service": "integration",
1002
+ "method": "POST",
1003
+ "path": "/api/v1/proxy/template-configs/00000000-0000-4000-8000-000000000401/execute",
1004
+ "body": {
1005
+ "method": "POST",
1006
+ "endpoint": "/orders",
1007
+ "headers": {
1008
+ "x-client": "sdk"
1009
+ },
1010
+ "body": {
1011
+ "id": "order-1"
1012
+ },
1013
+ "queryParams": {
1014
+ "dryRun": true
1015
+ },
1016
+ "source": "SDK"
1017
+ }
1018
+ },
1019
+ "response": {
1020
+ "status": 200,
1021
+ "body": {
1022
+ "status": 201,
1023
+ "headers": {
1024
+ "content-type": "application/json"
1025
+ },
1026
+ "body": {
1027
+ "id": "remote-order-1"
1028
+ },
1029
+ "durationMs": 18,
1030
+ "executionId": "integration-execution-1"
1031
+ }
1032
+ },
1033
+ "expectedResult": {
1034
+ "status": 201,
1035
+ "headers": {
1036
+ "content-type": "application/json"
1037
+ },
1038
+ "body": {
1039
+ "id": "remote-order-1"
1040
+ },
1041
+ "durationMs": 18,
1042
+ "executionId": "integration-execution-1"
1043
+ }
1044
+ },
1045
+ {
1046
+ "id": "integration.execute-resource.success",
1047
+ "kind": "success",
1048
+ "operation": "integration.executeResource",
1049
+ "input": {
1050
+ "id": "00000000-0000-4000-8000-000000000402",
1051
+ "parameters": {
1052
+ "limit": 10
1053
+ }
1054
+ },
1055
+ "request": {
1056
+ "service": "integration",
1057
+ "method": "POST",
1058
+ "path": "/api/v1/proxy/resources/00000000-0000-4000-8000-000000000402/execute",
1059
+ "body": {
1060
+ "params": {
1061
+ "limit": 10
1062
+ }
1063
+ }
1064
+ },
1065
+ "response": {
1066
+ "status": 200,
1067
+ "body": {
1068
+ "status": 200,
1069
+ "headers": {
1070
+ "content-type": "application/json"
1071
+ },
1072
+ "body": {
1073
+ "ok": true
1074
+ },
1075
+ "durationMs": 20,
1076
+ "executionId": "integration-execution-2"
1077
+ }
1078
+ },
1079
+ "expectedResult": {
1080
+ "status": 200,
1081
+ "headers": {
1082
+ "content-type": "application/json"
1083
+ },
1084
+ "body": {
1085
+ "ok": true
1086
+ },
1087
+ "durationMs": 20,
1088
+ "executionId": "integration-execution-2"
1089
+ }
1090
+ },
1091
+ {
1092
+ "id": "sql.execute-ddl.success",
1093
+ "kind": "success",
1094
+ "operation": "sql.executeDdl",
1095
+ "input": {
1096
+ "statements": [
1097
+ {
1098
+ "sql": "CREATE TABLE reports (id INT PRIMARY KEY)"
1099
+ }
1100
+ ]
1101
+ },
1102
+ "request": {
1103
+ "service": "dataManager",
1104
+ "method": "POST",
1105
+ "path": "/api/v1/sql/ddl/execute",
1106
+ "body": {
1107
+ "statements": [
1108
+ {
1109
+ "sql": "CREATE TABLE reports (id INT PRIMARY KEY)"
1110
+ }
1111
+ ]
1112
+ }
1113
+ },
1114
+ "response": {
1115
+ "status": 200,
1116
+ "body": {
1117
+ "results": [
1118
+ {
1119
+ "index": 0,
1120
+ "durationMs": 12
1121
+ }
1122
+ ],
1123
+ "executedCount": 1,
1124
+ "totalDurationMs": 14
1125
+ }
1126
+ },
1127
+ "expectedResult": {
1128
+ "results": [
1129
+ {
1130
+ "index": 0,
1131
+ "durationMs": 12
1132
+ }
1133
+ ],
1134
+ "executedCount": 1,
1135
+ "totalDurationMs": 14
1136
+ }
1137
+ },
1138
+ {
1139
+ "id": "sql.execute-dml.success",
1140
+ "kind": "success",
1141
+ "operation": "sql.executeDml",
1142
+ "input": {
1143
+ "statements": [
1144
+ {
1145
+ "sql": "INSERT INTO reports (id, name) VALUES (:id, :name)",
1146
+ "parameters": {
1147
+ "id": 1,
1148
+ "name": "Monthly"
1149
+ }
1150
+ }
1151
+ ]
1152
+ },
1153
+ "request": {
1154
+ "service": "dataManager",
1155
+ "method": "POST",
1156
+ "path": "/api/v1/sql/dml/execute",
1157
+ "body": {
1158
+ "statements": [
1159
+ {
1160
+ "sql": "INSERT INTO reports (id, name) VALUES (:id, :name)",
1161
+ "parameters": {
1162
+ "id": 1,
1163
+ "name": "Monthly"
1164
+ }
1165
+ }
1166
+ ]
1167
+ }
1168
+ },
1169
+ "response": {
1170
+ "status": 200,
1171
+ "body": {
1172
+ "results": [
1173
+ {
1174
+ "index": 0,
1175
+ "affectedRows": 1,
1176
+ "durationMs": 8
1177
+ }
1178
+ ],
1179
+ "executedCount": 1,
1180
+ "totalDurationMs": 9
1181
+ }
1182
+ },
1183
+ "expectedResult": {
1184
+ "results": [
1185
+ {
1186
+ "index": 0,
1187
+ "affectedRows": 1,
1188
+ "durationMs": 8
1189
+ }
1190
+ ],
1191
+ "executedCount": 1,
1192
+ "totalDurationMs": 9
1193
+ }
1194
+ },
1195
+ {
1196
+ "id": "sql.list-tables.success",
1197
+ "kind": "success",
1198
+ "operation": "sql.listTables",
1199
+ "input": {
1200
+ "listTablesOptions": {
1201
+ "scope": "APP",
1202
+ "includeColumns": true
1203
+ }
1204
+ },
1205
+ "request": {
1206
+ "service": "dataManager",
1207
+ "method": "GET",
1208
+ "path": "/api/v1/tables",
1209
+ "params": {
1210
+ "scope": "APP",
1211
+ "includeColumns": true
1212
+ }
1213
+ },
1214
+ "response": {
1215
+ "status": 200,
1216
+ "body": [
1217
+ {
1218
+ "schema": "app_schema",
1219
+ "tables": [
1220
+ {
1221
+ "tableName": "reports",
1222
+ "columns": [
1223
+ {
1224
+ "name": "id",
1225
+ "type": "INTEGER",
1226
+ "primaryKey": true,
1227
+ "nullable": false,
1228
+ "defaultValue": null
1229
+ }
1230
+ ],
1231
+ "foreignKeys": [
1232
+ {
1233
+ "columns": ["owner_id"],
1234
+ "referencedTable": "owners",
1235
+ "referencedColumns": ["id"]
1236
+ }
1237
+ ]
1238
+ }
1239
+ ]
1240
+ }
1241
+ ]
1242
+ },
1243
+ "expectedResult": [
1244
+ {
1245
+ "schema": "app_schema",
1246
+ "tables": [
1247
+ {
1248
+ "tableName": "reports",
1249
+ "columns": [
1250
+ {
1251
+ "name": "id",
1252
+ "type": "INTEGER",
1253
+ "primaryKey": true,
1254
+ "nullable": false,
1255
+ "defaultValue": null
1256
+ }
1257
+ ],
1258
+ "foreignKeys": [
1259
+ {
1260
+ "columns": ["owner_id"],
1261
+ "referencedTable": "owners",
1262
+ "referencedColumns": ["id"]
1263
+ }
1264
+ ]
1265
+ }
1266
+ ]
1267
+ }
1268
+ ]
1269
+ },
1270
+ {
1271
+ "id": "data-sources.bulk-create.success",
1272
+ "kind": "success",
1273
+ "operation": "dataSources.bulkCreate",
1274
+ "input": {
1275
+ "dataSources": [
1276
+ {
1277
+ "name": "Reporting",
1278
+ "instanceType": "EXTERNAL",
1279
+ "dbType": "POSTGRES",
1280
+ "writeConnectionConfig": {
1281
+ "host": "db.example.com",
1282
+ "port": 5432,
1283
+ "databaseName": "reporting",
1284
+ "username": "reader",
1285
+ "credential": "write-only-credential"
1286
+ }
1287
+ }
1288
+ ]
1289
+ },
1290
+ "request": {
1291
+ "service": "dataManager",
1292
+ "method": "POST",
1293
+ "path": "/api/v1/data-sources",
1294
+ "body": {
1295
+ "name": "Reporting",
1296
+ "instanceType": "EXTERNAL",
1297
+ "dbType": "POSTGRES",
1298
+ "writeConnectionConfig": {
1299
+ "host": "db.example.com",
1300
+ "port": 5432,
1301
+ "databaseName": "reporting",
1302
+ "username": "reader",
1303
+ "credential": "write-only-credential"
1304
+ }
1305
+ }
1306
+ },
1307
+ "response": {
1308
+ "status": 201,
1309
+ "body": {
1310
+ "id": "00000000-0000-4000-8000-000000000501",
1311
+ "legacyId": null,
1312
+ "appId": "00000000-0000-4000-8000-000000000500",
1313
+ "name": "Reporting",
1314
+ "instanceType": "EXTERNAL",
1315
+ "dbType": "POSTGRES",
1316
+ "writeConnectionConfig": {
1317
+ "host": "db.example.com",
1318
+ "port": 5432,
1319
+ "schema": null,
1320
+ "databaseName": "reporting",
1321
+ "username": "reader",
1322
+ "credential": null,
1323
+ "maxPoolSize": null,
1324
+ "connectionTimeoutMs": null,
1325
+ "idleTimeoutMs": null,
1326
+ "minimumIdle": null,
1327
+ "maxLifetimeMs": null,
1328
+ "additionalParams": null
1329
+ },
1330
+ "readConnectionConfig": null,
1331
+ "connectionStatus": null,
1332
+ "lastCheckedAt": null,
1333
+ "storageQuota": null
1334
+ }
1335
+ },
1336
+ "expectedResult": {
1337
+ "results": [
1338
+ {
1339
+ "index": 0,
1340
+ "success": true,
1341
+ "dataSourceId": "00000000-0000-4000-8000-000000000501",
1342
+ "errorCode": null,
1343
+ "message": null
1344
+ }
1345
+ ],
1346
+ "processedCount": 1,
1347
+ "succeededCount": 1,
1348
+ "failedCount": 0
1349
+ }
1350
+ },
1351
+ {
1352
+ "id": "data-sources.bulk-update.success",
1353
+ "kind": "success",
1354
+ "operation": "dataSources.bulkUpdate",
1355
+ "input": {
1356
+ "dataSources": [
1357
+ {
1358
+ "dataSourceId": "00000000-0000-4000-8000-000000000501",
1359
+ "name": "Reporting",
1360
+ "instanceType": "EXTERNAL",
1361
+ "dbType": "POSTGRES",
1362
+ "writeConnectionConfig": {
1363
+ "host": "db.example.com",
1364
+ "port": 5432,
1365
+ "databaseName": "reporting",
1366
+ "username": "reader"
1367
+ }
1368
+ }
1369
+ ]
1370
+ },
1371
+ "request": {
1372
+ "service": "dataManager",
1373
+ "method": "PUT",
1374
+ "path": "/api/v1/data-sources/00000000-0000-4000-8000-000000000501",
1375
+ "body": {
1376
+ "name": "Reporting",
1377
+ "instanceType": "EXTERNAL",
1378
+ "dbType": "POSTGRES",
1379
+ "writeConnectionConfig": {
1380
+ "host": "db.example.com",
1381
+ "port": 5432,
1382
+ "databaseName": "reporting",
1383
+ "username": "reader"
1384
+ }
1385
+ }
1386
+ },
1387
+ "response": {
1388
+ "status": 200,
1389
+ "body": {
1390
+ "id": "00000000-0000-4000-8000-000000000501",
1391
+ "legacyId": null,
1392
+ "appId": "00000000-0000-4000-8000-000000000500",
1393
+ "name": "Reporting",
1394
+ "instanceType": "EXTERNAL",
1395
+ "dbType": "POSTGRES",
1396
+ "writeConnectionConfig": {
1397
+ "host": "db.example.com",
1398
+ "port": 5432,
1399
+ "schema": null,
1400
+ "databaseName": "reporting",
1401
+ "username": "reader",
1402
+ "credential": null,
1403
+ "maxPoolSize": null,
1404
+ "connectionTimeoutMs": null,
1405
+ "idleTimeoutMs": null,
1406
+ "minimumIdle": null,
1407
+ "maxLifetimeMs": null,
1408
+ "additionalParams": null
1409
+ },
1410
+ "readConnectionConfig": null,
1411
+ "connectionStatus": null,
1412
+ "lastCheckedAt": null,
1413
+ "storageQuota": null
1414
+ }
1415
+ },
1416
+ "expectedResult": {
1417
+ "results": [
1418
+ {
1419
+ "index": 0,
1420
+ "success": true,
1421
+ "dataSourceId": "00000000-0000-4000-8000-000000000501",
1422
+ "errorCode": null,
1423
+ "message": null
1424
+ }
1425
+ ],
1426
+ "processedCount": 1,
1427
+ "succeededCount": 1,
1428
+ "failedCount": 0
1429
+ }
1430
+ },
1431
+ {
1432
+ "id": "data-sources.bulk-delete.success",
1433
+ "kind": "success",
1434
+ "operation": "dataSources.bulkDelete",
1435
+ "input": {
1436
+ "dataSourceIds": ["00000000-0000-4000-8000-000000000502"]
1437
+ },
1438
+ "request": {
1439
+ "service": "dataManager",
1440
+ "method": "DELETE",
1441
+ "path": "/api/v1/data-sources/00000000-0000-4000-8000-000000000502"
1442
+ },
1443
+ "response": {
1444
+ "status": 200,
1445
+ "empty": true
1446
+ },
1447
+ "expectedResult": {
1448
+ "results": [
1449
+ {
1450
+ "index": 0,
1451
+ "success": true,
1452
+ "dataSourceId": "00000000-0000-4000-8000-000000000502",
1453
+ "errorCode": null,
1454
+ "message": null
1455
+ }
1456
+ ],
1457
+ "processedCount": 1,
1458
+ "succeededCount": 1,
1459
+ "failedCount": 0
1460
+ }
1461
+ },
1462
+ {
1463
+ "id": "functions-admin.bulk-create.success",
1464
+ "kind": "success",
1465
+ "operation": "functionsAdmin.bulkCreate",
1466
+ "input": {
1467
+ "functions": [
1468
+ {
1469
+ "name": "sync orders",
1470
+ "description": "Pushes orders downstream",
1471
+ "runtime": "JAVASCRIPT",
1472
+ "code": "export default async () => ({ ok: true })",
1473
+ "inputSchema": {
1474
+ "type": "object"
1475
+ },
1476
+ "outputSchema": {
1477
+ "type": "object"
1478
+ },
1479
+ "secrets": ["ORDERS_TOKEN"]
1480
+ }
1481
+ ]
1482
+ },
1483
+ "request": {
1484
+ "service": "functions",
1485
+ "method": "POST",
1486
+ "path": "/api/v1/functions/bulk",
1487
+ "body": {
1488
+ "functions": [
1489
+ {
1490
+ "name": "sync orders",
1491
+ "description": "Pushes orders downstream",
1492
+ "runtime": "JAVASCRIPT",
1493
+ "code": "export default async () => ({ ok: true })",
1494
+ "inputSchema": {
1495
+ "type": "object"
1496
+ },
1497
+ "outputSchema": {
1498
+ "type": "object"
1499
+ },
1500
+ "secrets": ["ORDERS_TOKEN"]
1501
+ }
1502
+ ]
1503
+ }
1504
+ },
1505
+ "response": {
1506
+ "status": 201,
1507
+ "body": [
1508
+ {
1509
+ "id": "00000000-0000-4000-8000-000000000601",
1510
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1511
+ "appId": "00000000-0000-4000-8000-000000000012",
1512
+ "legacyId": null,
1513
+ "name": "sync orders",
1514
+ "description": "Pushes orders downstream",
1515
+ "runtime": "JAVASCRIPT",
1516
+ "dataSourceId": null,
1517
+ "visibility": "PRIVATE",
1518
+ "currentVersion": {
1519
+ "id": "00000000-0000-4000-8000-000000000611",
1520
+ "functionId": "00000000-0000-4000-8000-000000000601",
1521
+ "status": "DRAFT",
1522
+ "code": "export default async () => ({ ok: true })",
1523
+ "inputSchema": {
1524
+ "type": "object"
1525
+ },
1526
+ "outputSchema": {
1527
+ "type": "object"
1528
+ },
1529
+ "secrets": ["ORDERS_TOKEN"],
1530
+ "createdAt": "2026-08-18T12:00:00Z"
1531
+ },
1532
+ "cronExpression": null,
1533
+ "cronInputJson": null,
1534
+ "cronEnabled": null,
1535
+ "createdAt": "2026-08-18T12:00:00Z",
1536
+ "updatedAt": "2026-08-18T12:00:00Z"
1537
+ }
1538
+ ]
1539
+ },
1540
+ "expectedResult": [
1541
+ {
1542
+ "id": "00000000-0000-4000-8000-000000000601",
1543
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1544
+ "appId": "00000000-0000-4000-8000-000000000012",
1545
+ "legacyId": null,
1546
+ "name": "sync orders",
1547
+ "description": "Pushes orders downstream",
1548
+ "runtime": "JAVASCRIPT",
1549
+ "dataSourceId": null,
1550
+ "visibility": "PRIVATE",
1551
+ "currentVersion": {
1552
+ "id": "00000000-0000-4000-8000-000000000611",
1553
+ "functionId": "00000000-0000-4000-8000-000000000601",
1554
+ "status": "DRAFT",
1555
+ "code": "export default async () => ({ ok: true })",
1556
+ "inputSchema": {
1557
+ "type": "object"
1558
+ },
1559
+ "outputSchema": {
1560
+ "type": "object"
1561
+ },
1562
+ "secrets": ["ORDERS_TOKEN"],
1563
+ "createdAt": "2026-08-18T12:00:00Z"
1564
+ },
1565
+ "cronExpression": null,
1566
+ "cronInputJson": null,
1567
+ "cronEnabled": null,
1568
+ "createdAt": "2026-08-18T12:00:00Z",
1569
+ "updatedAt": "2026-08-18T12:00:00Z"
1570
+ }
1571
+ ]
1572
+ },
1573
+ {
1574
+ "id": "functions-admin.bulk-update.success",
1575
+ "kind": "success",
1576
+ "operation": "functionsAdmin.bulkUpdate",
1577
+ "input": {
1578
+ "functionUpdates": [
1579
+ {
1580
+ "id": "00000000-0000-4000-8000-000000000601",
1581
+ "update": {
1582
+ "name": "sync orders",
1583
+ "code": "export default async () => ({ ok: false })"
1584
+ }
1585
+ }
1586
+ ]
1587
+ },
1588
+ "request": {
1589
+ "service": "functions",
1590
+ "method": "PUT",
1591
+ "path": "/api/v1/functions/bulk",
1592
+ "body": {
1593
+ "functions": [
1594
+ {
1595
+ "id": "00000000-0000-4000-8000-000000000601",
1596
+ "update": {
1597
+ "name": "sync orders",
1598
+ "code": "export default async () => ({ ok: false })"
1599
+ }
1600
+ }
1601
+ ]
1602
+ }
1603
+ },
1604
+ "response": {
1605
+ "status": 200,
1606
+ "body": [
1607
+ {
1608
+ "id": "00000000-0000-4000-8000-000000000601",
1609
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1610
+ "appId": "00000000-0000-4000-8000-000000000012",
1611
+ "legacyId": null,
1612
+ "name": "sync orders",
1613
+ "description": null,
1614
+ "runtime": "JAVASCRIPT",
1615
+ "dataSourceId": null,
1616
+ "visibility": "PRIVATE",
1617
+ "currentVersion": {
1618
+ "id": "00000000-0000-4000-8000-000000000611",
1619
+ "functionId": "00000000-0000-4000-8000-000000000601",
1620
+ "status": "DRAFT",
1621
+ "code": "export default async () => ({ ok: false })",
1622
+ "inputSchema": null,
1623
+ "outputSchema": null,
1624
+ "secrets": null,
1625
+ "createdAt": "2026-08-18T12:05:00Z"
1626
+ },
1627
+ "cronExpression": null,
1628
+ "cronInputJson": null,
1629
+ "cronEnabled": null,
1630
+ "createdAt": "2026-08-18T12:00:00Z",
1631
+ "updatedAt": "2026-08-18T12:05:00Z"
1632
+ }
1633
+ ]
1634
+ },
1635
+ "expectedResult": [
1636
+ {
1637
+ "id": "00000000-0000-4000-8000-000000000601",
1638
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1639
+ "appId": "00000000-0000-4000-8000-000000000012",
1640
+ "legacyId": null,
1641
+ "name": "sync orders",
1642
+ "description": null,
1643
+ "runtime": "JAVASCRIPT",
1644
+ "dataSourceId": null,
1645
+ "visibility": "PRIVATE",
1646
+ "currentVersion": {
1647
+ "id": "00000000-0000-4000-8000-000000000611",
1648
+ "functionId": "00000000-0000-4000-8000-000000000601",
1649
+ "status": "DRAFT",
1650
+ "code": "export default async () => ({ ok: false })",
1651
+ "inputSchema": null,
1652
+ "outputSchema": null,
1653
+ "secrets": null,
1654
+ "createdAt": "2026-08-18T12:05:00Z"
1655
+ },
1656
+ "cronExpression": null,
1657
+ "cronInputJson": null,
1658
+ "cronEnabled": null,
1659
+ "createdAt": "2026-08-18T12:00:00Z",
1660
+ "updatedAt": "2026-08-18T12:05:00Z"
1661
+ }
1662
+ ]
1663
+ },
1664
+ {
1665
+ "id": "functions-admin.bulk-patch.success",
1666
+ "kind": "success",
1667
+ "operation": "functionsAdmin.bulkPatch",
1668
+ "input": {
1669
+ "functionPatches": [
1670
+ {
1671
+ "id": "00000000-0000-4000-8000-000000000601",
1672
+ "update": {
1673
+ "description": "Preserved patch semantics",
1674
+ "secrets": []
1675
+ }
1676
+ }
1677
+ ]
1678
+ },
1679
+ "request": {
1680
+ "service": "functions",
1681
+ "method": "PATCH",
1682
+ "path": "/api/v1/functions/bulk",
1683
+ "body": {
1684
+ "functions": [
1685
+ {
1686
+ "id": "00000000-0000-4000-8000-000000000601",
1687
+ "update": {
1688
+ "description": "Preserved patch semantics",
1689
+ "secrets": []
1690
+ }
1691
+ }
1692
+ ]
1693
+ }
1694
+ },
1695
+ "response": {
1696
+ "status": 200,
1697
+ "body": [
1698
+ {
1699
+ "id": "00000000-0000-4000-8000-000000000601",
1700
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1701
+ "appId": "00000000-0000-4000-8000-000000000012",
1702
+ "legacyId": null,
1703
+ "name": "sync orders",
1704
+ "description": "Preserved patch semantics",
1705
+ "runtime": "JAVASCRIPT",
1706
+ "dataSourceId": null,
1707
+ "visibility": "PRIVATE",
1708
+ "currentVersion": null,
1709
+ "cronExpression": null,
1710
+ "cronInputJson": null,
1711
+ "cronEnabled": null,
1712
+ "createdAt": "2026-08-18T12:00:00Z",
1713
+ "updatedAt": "2026-08-18T12:06:00Z"
1714
+ }
1715
+ ]
1716
+ },
1717
+ "expectedResult": [
1718
+ {
1719
+ "id": "00000000-0000-4000-8000-000000000601",
1720
+ "tenantId": "00000000-0000-4000-8000-000000000011",
1721
+ "appId": "00000000-0000-4000-8000-000000000012",
1722
+ "legacyId": null,
1723
+ "name": "sync orders",
1724
+ "description": "Preserved patch semantics",
1725
+ "runtime": "JAVASCRIPT",
1726
+ "dataSourceId": null,
1727
+ "visibility": "PRIVATE",
1728
+ "currentVersion": null,
1729
+ "cronExpression": null,
1730
+ "cronInputJson": null,
1731
+ "cronEnabled": null,
1732
+ "createdAt": "2026-08-18T12:00:00Z",
1733
+ "updatedAt": "2026-08-18T12:06:00Z"
1734
+ }
1735
+ ]
1736
+ },
1737
+ {
1738
+ "id": "functions-admin.bulk-delete.success",
1739
+ "kind": "success",
1740
+ "operation": "functionsAdmin.bulkDelete",
1741
+ "input": {
1742
+ "functionDeleteSelector": {
1743
+ "ids": ["00000000-0000-4000-8000-000000000602"]
1744
+ }
1745
+ },
1746
+ "request": {
1747
+ "service": "functions",
1748
+ "method": "POST",
1749
+ "path": "/api/v1/functions/bulk-delete",
1750
+ "body": {
1751
+ "ids": ["00000000-0000-4000-8000-000000000602"]
1752
+ }
1753
+ },
1754
+ "response": {
1755
+ "status": 200,
1756
+ "body": {
1757
+ "deleted": ["00000000-0000-4000-8000-000000000602"],
1758
+ "notFound": [],
1759
+ "deletedCount": 1
1760
+ }
1761
+ },
1762
+ "expectedResult": {
1763
+ "deleted": ["00000000-0000-4000-8000-000000000602"],
1764
+ "notFound": [],
1765
+ "deletedCount": 1
1766
+ }
1767
+ },
1768
+ {
1769
+ "id": "integration-admin.bulk-create.success",
1770
+ "kind": "success",
1771
+ "operation": "integrationAdmin.bulkCreate",
1772
+ "input": {
1773
+ "configs": [
1774
+ {
1775
+ "templateId": "00000000-0000-4000-8000-000000000801",
1776
+ "alias": "crm",
1777
+ "values": {
1778
+ "token": "write-only-value"
1779
+ }
1780
+ }
1781
+ ]
1782
+ },
1783
+ "request": {
1784
+ "service": "integration",
1785
+ "method": "POST",
1786
+ "path": "/api/v1/template-configs/bulk",
1787
+ "body": {
1788
+ "configs": [
1789
+ {
1790
+ "templateId": "00000000-0000-4000-8000-000000000801",
1791
+ "alias": "crm",
1792
+ "values": {
1793
+ "token": "write-only-value"
1794
+ }
1795
+ }
1796
+ ]
1797
+ }
1798
+ },
1799
+ "response": {
1800
+ "status": 200,
1801
+ "body": {
1802
+ "results": [
1803
+ {
1804
+ "index": 0,
1805
+ "success": true,
1806
+ "configId": "00000000-0000-4000-8000-000000000701",
1807
+ "errorCode": null,
1808
+ "message": null
1809
+ }
1810
+ ],
1811
+ "processedCount": 1,
1812
+ "succeededCount": 1,
1813
+ "failedCount": 0
1814
+ }
1815
+ },
1816
+ "expectedResult": {
1817
+ "results": [
1818
+ {
1819
+ "index": 0,
1820
+ "success": true,
1821
+ "configId": "00000000-0000-4000-8000-000000000701",
1822
+ "errorCode": null,
1823
+ "message": null
1824
+ }
1825
+ ],
1826
+ "processedCount": 1,
1827
+ "succeededCount": 1,
1828
+ "failedCount": 0
1829
+ }
1830
+ },
1831
+ {
1832
+ "id": "integration-admin.bulk-create.inline.success",
1833
+ "kind": "success",
1834
+ "operation": "integrationAdmin.bulkCreate",
1835
+ "input": {
1836
+ "configs": [
1837
+ {
1838
+ "alias": "erp-inline",
1839
+ "fieldsSchemaInline": [
1840
+ {
1841
+ "key": "base_url",
1842
+ "label": "Base URL",
1843
+ "type": "url",
1844
+ "required": true
1845
+ },
1846
+ {
1847
+ "key": "access_key_code",
1848
+ "label": "Access Key Code",
1849
+ "type": "secret",
1850
+ "required": true
1851
+ },
1852
+ {
1853
+ "key": "access_key_token",
1854
+ "label": "Access Key Token",
1855
+ "type": "secret",
1856
+ "required": true
1857
+ }
1858
+ ],
1859
+ "requestConfigInline": {
1860
+ "headers": {
1861
+ "X-Access-Key-Code": "{{access_key_code}}",
1862
+ "X-Access-Key-Token": "{{access_key_token}}"
1863
+ },
1864
+ "credential_rules": null
1865
+ },
1866
+ "loginConfigInline": null,
1867
+ "values": {
1868
+ "base_url": "https://api.example.com",
1869
+ "access_key_code": "write-only-value",
1870
+ "access_key_token": "write-only-value"
1871
+ }
1872
+ }
1873
+ ]
1874
+ },
1875
+ "request": {
1876
+ "service": "integration",
1877
+ "method": "POST",
1878
+ "path": "/api/v1/template-configs/bulk",
1879
+ "body": {
1880
+ "configs": [
1881
+ {
1882
+ "alias": "erp-inline",
1883
+ "fieldsSchemaInline": [
1884
+ {
1885
+ "key": "base_url",
1886
+ "label": "Base URL",
1887
+ "type": "url",
1888
+ "required": true
1889
+ },
1890
+ {
1891
+ "key": "access_key_code",
1892
+ "label": "Access Key Code",
1893
+ "type": "secret",
1894
+ "required": true
1895
+ },
1896
+ {
1897
+ "key": "access_key_token",
1898
+ "label": "Access Key Token",
1899
+ "type": "secret",
1900
+ "required": true
1901
+ }
1902
+ ],
1903
+ "requestConfigInline": {
1904
+ "headers": {
1905
+ "X-Access-Key-Code": "{{access_key_code}}",
1906
+ "X-Access-Key-Token": "{{access_key_token}}"
1907
+ },
1908
+ "credential_rules": null
1909
+ },
1910
+ "loginConfigInline": null,
1911
+ "values": {
1912
+ "base_url": "https://api.example.com",
1913
+ "access_key_code": "write-only-value",
1914
+ "access_key_token": "write-only-value"
1915
+ }
1916
+ }
1917
+ ]
1918
+ }
1919
+ },
1920
+ "response": {
1921
+ "status": 200,
1922
+ "body": {
1923
+ "results": [
1924
+ {
1925
+ "index": 0,
1926
+ "success": true,
1927
+ "configId": "00000000-0000-4000-8000-000000000703",
1928
+ "errorCode": null,
1929
+ "message": null
1930
+ }
1931
+ ],
1932
+ "processedCount": 1,
1933
+ "succeededCount": 1,
1934
+ "failedCount": 0
1935
+ }
1936
+ },
1937
+ "expectedResult": {
1938
+ "results": [
1939
+ {
1940
+ "index": 0,
1941
+ "success": true,
1942
+ "configId": "00000000-0000-4000-8000-000000000703",
1943
+ "errorCode": null,
1944
+ "message": null
1945
+ }
1946
+ ],
1947
+ "processedCount": 1,
1948
+ "succeededCount": 1,
1949
+ "failedCount": 0
1950
+ }
1951
+ },
1952
+ {
1953
+ "id": "integration-admin.bulk-update.success",
1954
+ "kind": "success",
1955
+ "operation": "integrationAdmin.bulkUpdate",
1956
+ "input": {
1957
+ "configs": [
1958
+ {
1959
+ "configId": "00000000-0000-4000-8000-000000000701",
1960
+ "alias": "crm-production"
1961
+ }
1962
+ ]
1963
+ },
1964
+ "request": {
1965
+ "service": "integration",
1966
+ "method": "PUT",
1967
+ "path": "/api/v1/template-configs/bulk",
1968
+ "body": {
1969
+ "configs": [
1970
+ {
1971
+ "configId": "00000000-0000-4000-8000-000000000701",
1972
+ "alias": "crm-production"
1973
+ }
1974
+ ]
1975
+ }
1976
+ },
1977
+ "response": {
1978
+ "status": 200,
1979
+ "body": {
1980
+ "results": [
1981
+ {
1982
+ "index": 0,
1983
+ "success": true,
1984
+ "configId": "00000000-0000-4000-8000-000000000701",
1985
+ "errorCode": null,
1986
+ "message": null
1987
+ }
1988
+ ],
1989
+ "processedCount": 1,
1990
+ "succeededCount": 1,
1991
+ "failedCount": 0
1992
+ }
1993
+ },
1994
+ "expectedResult": {
1995
+ "results": [
1996
+ {
1997
+ "index": 0,
1998
+ "success": true,
1999
+ "configId": "00000000-0000-4000-8000-000000000701",
2000
+ "errorCode": null,
2001
+ "message": null
2002
+ }
2003
+ ],
2004
+ "processedCount": 1,
2005
+ "succeededCount": 1,
2006
+ "failedCount": 0
2007
+ }
2008
+ },
2009
+ {
2010
+ "id": "integration-admin.bulk-delete.success",
2011
+ "kind": "success",
2012
+ "operation": "integrationAdmin.bulkDelete",
2013
+ "input": {
2014
+ "configIds": ["00000000-0000-4000-8000-000000000702"]
2015
+ },
2016
+ "request": {
2017
+ "service": "integration",
2018
+ "method": "POST",
2019
+ "path": "/api/v1/template-configs/bulk-delete",
2020
+ "body": {
2021
+ "configIds": ["00000000-0000-4000-8000-000000000702"]
2022
+ }
2023
+ },
2024
+ "response": {
2025
+ "status": 200,
2026
+ "body": {
2027
+ "results": [
2028
+ {
2029
+ "index": 0,
2030
+ "success": true,
2031
+ "configId": "00000000-0000-4000-8000-000000000702",
2032
+ "errorCode": null,
2033
+ "message": null
2034
+ }
2035
+ ],
2036
+ "processedCount": 1,
2037
+ "succeededCount": 1,
2038
+ "failedCount": 0
2039
+ }
2040
+ },
2041
+ "expectedResult": {
2042
+ "results": [
2043
+ {
2044
+ "index": 0,
2045
+ "success": true,
2046
+ "configId": "00000000-0000-4000-8000-000000000702",
2047
+ "errorCode": null,
2048
+ "message": null
2049
+ }
2050
+ ],
2051
+ "processedCount": 1,
2052
+ "succeededCount": 1,
2053
+ "failedCount": 0
2054
+ }
2055
+ },
2056
+ {
2057
+ "id": "integration-admin.test-credentials.success",
2058
+ "kind": "success",
2059
+ "operation": "integrationAdmin.testCredentials",
2060
+ "input": {
2061
+ "testCredentials": {
2062
+ "templateId": "00000000-0000-4000-8000-000000000801",
2063
+ "values": {
2064
+ "token": "write-only-value"
2065
+ }
2066
+ }
2067
+ },
2068
+ "request": {
2069
+ "service": "integration",
2070
+ "method": "POST",
2071
+ "path": "/api/v1/template-configs/test",
2072
+ "body": {
2073
+ "templateId": "00000000-0000-4000-8000-000000000801",
2074
+ "values": {
2075
+ "token": "write-only-value"
2076
+ }
2077
+ }
2078
+ },
2079
+ "response": {
2080
+ "status": 200,
2081
+ "body": {
2082
+ "status": "connected",
2083
+ "durationMs": 120,
2084
+ "checkedAt": "2026-08-18T12:00:00Z",
2085
+ "message": null
2086
+ }
2087
+ },
2088
+ "expectedResult": {
2089
+ "status": "connected",
2090
+ "durationMs": 120,
2091
+ "checkedAt": "2026-08-18T12:00:00Z",
2092
+ "message": null
2093
+ }
2094
+ },
2095
+ {
2096
+ "id": "integration-admin.test-credentials.inline.success",
2097
+ "kind": "success",
2098
+ "operation": "integrationAdmin.testCredentials",
2099
+ "input": {
2100
+ "testCredentials": {
2101
+ "fieldsSchemaInline": [
2102
+ {
2103
+ "key": "base_url",
2104
+ "label": "Base URL",
2105
+ "type": "url",
2106
+ "required": true
2107
+ },
2108
+ {
2109
+ "key": "access_key_code",
2110
+ "label": "Access Key Code",
2111
+ "type": "secret",
2112
+ "required": true
2113
+ },
2114
+ {
2115
+ "key": "access_key_token",
2116
+ "label": "Access Key Token",
2117
+ "type": "secret",
2118
+ "required": true
2119
+ }
2120
+ ],
2121
+ "requestConfigInline": {
2122
+ "headers": {
2123
+ "X-Access-Key-Code": "{{access_key_code}}",
2124
+ "X-Access-Key-Token": "{{access_key_token}}"
2125
+ },
2126
+ "credential_rules": null
2127
+ },
2128
+ "loginConfigInline": null,
2129
+ "values": {
2130
+ "base_url": "https://api.example.com",
2131
+ "access_key_code": "write-only-value",
2132
+ "access_key_token": "write-only-value"
2133
+ }
2134
+ }
2135
+ },
2136
+ "request": {
2137
+ "service": "integration",
2138
+ "method": "POST",
2139
+ "path": "/api/v1/template-configs/test",
2140
+ "body": {
2141
+ "fieldsSchemaInline": [
2142
+ {
2143
+ "key": "base_url",
2144
+ "label": "Base URL",
2145
+ "type": "url",
2146
+ "required": true
2147
+ },
2148
+ {
2149
+ "key": "access_key_code",
2150
+ "label": "Access Key Code",
2151
+ "type": "secret",
2152
+ "required": true
2153
+ },
2154
+ {
2155
+ "key": "access_key_token",
2156
+ "label": "Access Key Token",
2157
+ "type": "secret",
2158
+ "required": true
2159
+ }
2160
+ ],
2161
+ "requestConfigInline": {
2162
+ "headers": {
2163
+ "X-Access-Key-Code": "{{access_key_code}}",
2164
+ "X-Access-Key-Token": "{{access_key_token}}"
2165
+ },
2166
+ "credential_rules": null
2167
+ },
2168
+ "loginConfigInline": null,
2169
+ "values": {
2170
+ "base_url": "https://api.example.com",
2171
+ "access_key_code": "write-only-value",
2172
+ "access_key_token": "write-only-value"
2173
+ }
2174
+ }
2175
+ },
2176
+ "response": {
2177
+ "status": 200,
2178
+ "body": {
2179
+ "status": "connected",
2180
+ "durationMs": 140,
2181
+ "checkedAt": "2026-08-18T12:02:00Z",
2182
+ "message": null
2183
+ }
2184
+ },
2185
+ "expectedResult": {
2186
+ "status": "connected",
2187
+ "durationMs": 140,
2188
+ "checkedAt": "2026-08-18T12:02:00Z",
2189
+ "message": null
2190
+ }
2191
+ },
2192
+ {
2193
+ "id": "integration-admin.test-config.success",
2194
+ "kind": "success",
2195
+ "operation": "integrationAdmin.testConfig",
2196
+ "input": {
2197
+ "id": "00000000-0000-4000-8000-000000000701"
2198
+ },
2199
+ "request": {
2200
+ "service": "integration",
2201
+ "method": "POST",
2202
+ "path": "/api/v1/template-configs/00000000-0000-4000-8000-000000000701/test"
2203
+ },
2204
+ "response": {
2205
+ "status": 200,
2206
+ "body": {
2207
+ "status": "error",
2208
+ "durationMs": 250,
2209
+ "checkedAt": "2026-08-18T12:01:00Z",
2210
+ "message": "Connection test failed"
2211
+ }
2212
+ },
2213
+ "expectedResult": {
2214
+ "status": "error",
2215
+ "durationMs": 250,
2216
+ "checkedAt": "2026-08-18T12:01:00Z",
2217
+ "message": "Connection test failed"
2218
+ }
2219
+ },
2220
+ {
2221
+ "id": "integration-admin.list.success",
2222
+ "kind": "success",
2223
+ "operation": "integrationAdmin.list",
2224
+ "input": {
2225
+ "listConfigsOptions": {
2226
+ "page": 0,
2227
+ "size": 20,
2228
+ "sort": "alias"
2229
+ }
2230
+ },
2231
+ "request": {
2232
+ "service": "integration",
2233
+ "method": "GET",
2234
+ "path": "/api/v1/template-configs",
2235
+ "params": {
2236
+ "page": 0,
2237
+ "size": 20,
2238
+ "sort": "alias"
2239
+ }
2240
+ },
2241
+ "response": {
2242
+ "status": 200,
2243
+ "body": {
2244
+ "content": [
2245
+ {
2246
+ "id": "00000000-0000-4000-8000-000000000701",
2247
+ "appId": "00000000-0000-4000-8000-000000000012",
2248
+ "legacyId": null,
2249
+ "templateId": "00000000-0000-4000-8000-000000000801",
2250
+ "alias": "crm-production",
2251
+ "status": "connected",
2252
+ "lastCheckedAt": "2026-08-18T12:00:00Z"
2253
+ }
2254
+ ],
2255
+ "totalElements": 1
2256
+ }
2257
+ },
2258
+ "expectedResult": {
2259
+ "content": [
2260
+ {
2261
+ "id": "00000000-0000-4000-8000-000000000701",
2262
+ "appId": "00000000-0000-4000-8000-000000000012",
2263
+ "legacyId": null,
2264
+ "templateId": "00000000-0000-4000-8000-000000000801",
2265
+ "alias": "crm-production",
2266
+ "status": "connected",
2267
+ "lastCheckedAt": "2026-08-18T12:00:00Z"
2268
+ }
2269
+ ],
2270
+ "totalElements": 1
2271
+ }
2272
+ },
2273
+ {
2274
+ "id": "integration-admin.list.inline.success",
2275
+ "kind": "success",
2276
+ "operation": "integrationAdmin.list",
2277
+ "input": {
2278
+ "listConfigsOptions": {
2279
+ "page": 0,
2280
+ "size": 20,
2281
+ "sort": "alias"
2282
+ }
2283
+ },
2284
+ "request": {
2285
+ "service": "integration",
2286
+ "method": "GET",
2287
+ "path": "/api/v1/template-configs",
2288
+ "params": {
2289
+ "page": 0,
2290
+ "size": 20,
2291
+ "sort": "alias"
2292
+ }
2293
+ },
2294
+ "response": {
2295
+ "status": 200,
2296
+ "body": {
2297
+ "content": [
2298
+ {
2299
+ "id": "00000000-0000-4000-8000-000000000703",
2300
+ "appId": "00000000-0000-4000-8000-000000000012",
2301
+ "legacyId": null,
2302
+ "templateId": null,
2303
+ "alias": "erp-inline",
2304
+ "fieldsSchemaInline": [
2305
+ {
2306
+ "key": "base_url",
2307
+ "label": "Base URL",
2308
+ "type": "url",
2309
+ "required": true,
2310
+ "placeholder": null,
2311
+ "default": null
2312
+ },
2313
+ {
2314
+ "key": "access_key_code",
2315
+ "label": "Access Key Code",
2316
+ "type": "secret",
2317
+ "required": true,
2318
+ "placeholder": null,
2319
+ "default": null
2320
+ },
2321
+ {
2322
+ "key": "access_key_token",
2323
+ "label": "Access Key Token",
2324
+ "type": "secret",
2325
+ "required": true,
2326
+ "placeholder": null,
2327
+ "default": null
2328
+ }
2329
+ ],
2330
+ "requestConfigInline": {
2331
+ "headers": {
2332
+ "X-Access-Key-Code": "{{access_key_code}}",
2333
+ "X-Access-Key-Token": "{{access_key_token}}"
2334
+ },
2335
+ "credential_rules": null
2336
+ },
2337
+ "loginConfigInline": null,
2338
+ "status": "connected",
2339
+ "lastCheckedAt": "2026-08-18T12:02:00Z"
2340
+ }
2341
+ ],
2342
+ "totalElements": 1
2343
+ }
2344
+ },
2345
+ "expectedResult": {
2346
+ "content": [
2347
+ {
2348
+ "id": "00000000-0000-4000-8000-000000000703",
2349
+ "appId": "00000000-0000-4000-8000-000000000012",
2350
+ "legacyId": null,
2351
+ "templateId": null,
2352
+ "alias": "erp-inline",
2353
+ "fieldsSchemaInline": [
2354
+ {
2355
+ "key": "base_url",
2356
+ "label": "Base URL",
2357
+ "type": "url",
2358
+ "required": true,
2359
+ "placeholder": null,
2360
+ "default": null
2361
+ },
2362
+ {
2363
+ "key": "access_key_code",
2364
+ "label": "Access Key Code",
2365
+ "type": "secret",
2366
+ "required": true,
2367
+ "placeholder": null,
2368
+ "default": null
2369
+ },
2370
+ {
2371
+ "key": "access_key_token",
2372
+ "label": "Access Key Token",
2373
+ "type": "secret",
2374
+ "required": true,
2375
+ "placeholder": null,
2376
+ "default": null
2377
+ }
2378
+ ],
2379
+ "requestConfigInline": {
2380
+ "headers": {
2381
+ "X-Access-Key-Code": "{{access_key_code}}",
2382
+ "X-Access-Key-Token": "{{access_key_token}}"
2383
+ },
2384
+ "credential_rules": null
2385
+ },
2386
+ "loginConfigInline": null,
2387
+ "status": "connected",
2388
+ "lastCheckedAt": "2026-08-18T12:02:00Z"
2389
+ }
2390
+ ],
2391
+ "totalElements": 1
2392
+ }
2393
+ },
2394
+ {
2395
+ "id": "members.list.success",
2396
+ "kind": "success",
2397
+ "operation": "members.list",
2398
+ "input": {},
2399
+ "request": {
2400
+ "service": "auth",
2401
+ "method": "GET",
2402
+ "path": "/api/v1/members/current-app"
2403
+ },
2404
+ "response": {
2405
+ "status": 200,
2406
+ "body": [
2407
+ {
2408
+ "userId": "00000000-0000-4000-8000-000000000901",
2409
+ "name": "Test User",
2410
+ "email": "user@example.com",
2411
+ "accessLevel": "EDIT",
2412
+ "accessSource": "DERIVED"
2413
+ }
2414
+ ]
2415
+ },
2416
+ "expectedResult": [
2417
+ {
2418
+ "userId": "00000000-0000-4000-8000-000000000901",
2419
+ "name": "Test User",
2420
+ "email": "user@example.com",
2421
+ "accessLevel": "EDIT",
2422
+ "accessSource": "DERIVED"
2423
+ }
2424
+ ]
2425
+ }
2426
+ ],
2427
+ "responseValidationCases": [
2428
+ {
2429
+ "id": "auth.me.invalid-cluster-type",
2430
+ "kind": "invalid-payload",
2431
+ "operation": "auth.me",
2432
+ "input": {},
2433
+ "request": {
2434
+ "service": "auth",
2435
+ "method": "GET",
2436
+ "path": "/api/v1/auth/me"
2437
+ },
2438
+ "response": {
2439
+ "status": 200,
2440
+ "body": {
2441
+ "id": "user-1",
2442
+ "tenant": {
2443
+ "id": "tenant-1",
2444
+ "shortId": "AAAAAAAAAAAAAAAAAAAAEA",
2445
+ "legacyId": null,
2446
+ "slug": "tenant-one",
2447
+ "clusterType": "UNKNOWN",
2448
+ "name": "Tenant One",
2449
+ "description": null,
2450
+ "hexColor": null,
2451
+ "icon": null,
2452
+ "infraStatus": "ACTIVE",
2453
+ "active": true
2454
+ },
2455
+ "name": "Test User",
2456
+ "email": "user@example.com",
2457
+ "imageUrl": null,
2458
+ "planId": "plan-1",
2459
+ "onboardingCompleted": false,
2460
+ "language": "pt-BR"
2461
+ }
2462
+ },
2463
+ "expectedError": {
2464
+ "type": "response",
2465
+ "status": 200,
2466
+ "code": "INVALID_RESPONSE",
2467
+ "message": "Current user response tenant has an invalid clusterType field",
2468
+ "details": null,
2469
+ "requestId": null,
2470
+ "retryable": false
2471
+ }
2472
+ },
2473
+ {
2474
+ "id": "queries.execute.invalid-payload",
2475
+ "kind": "invalid-payload",
2476
+ "operation": "queries.execute",
2477
+ "input": {
2478
+ "id": "00000000-0000-4000-8000-000000000101",
2479
+ "parameters": {}
2480
+ },
2481
+ "request": {
2482
+ "service": "dataManager",
2483
+ "method": "POST",
2484
+ "path": "/api/v1/custom-queries/00000000-0000-4000-8000-000000000101/execute",
2485
+ "body": {
2486
+ "parameters": {}
2487
+ }
2488
+ },
2489
+ "response": {
2490
+ "status": 200,
2491
+ "body": {
2492
+ "rows": [
2493
+ {
2494
+ "total": 2
2495
+ }
2496
+ ],
2497
+ "durationMs": "7"
2498
+ }
2499
+ },
2500
+ "expectedError": {
2501
+ "type": "response",
2502
+ "status": 200,
2503
+ "code": "INVALID_RESPONSE",
2504
+ "message": "Query execution response has an invalid durationMs field",
2505
+ "details": null,
2506
+ "requestId": null,
2507
+ "retryable": false
2508
+ }
2509
+ },
2510
+ {
2511
+ "id": "sql.execute-dml.invalid-payload",
2512
+ "kind": "invalid-payload",
2513
+ "operation": "sql.executeDml",
2514
+ "input": {
2515
+ "statements": [
2516
+ {
2517
+ "sql": "INSERT INTO reports (id, name) VALUES (:id, :name)",
2518
+ "parameters": {
2519
+ "id": 1,
2520
+ "name": "Monthly"
2521
+ }
2522
+ }
2523
+ ]
2524
+ },
2525
+ "request": {
2526
+ "service": "dataManager",
2527
+ "method": "POST",
2528
+ "path": "/api/v1/sql/dml/execute",
2529
+ "body": {
2530
+ "statements": [
2531
+ {
2532
+ "sql": "INSERT INTO reports (id, name) VALUES (:id, :name)",
2533
+ "parameters": {
2534
+ "id": 1,
2535
+ "name": "Monthly"
2536
+ }
2537
+ }
2538
+ ]
2539
+ }
2540
+ },
2541
+ "response": {
2542
+ "status": 200,
2543
+ "body": {
2544
+ "results": [
2545
+ {
2546
+ "index": 0,
2547
+ "affectedRows": 1,
2548
+ "durationMs": "8"
2549
+ }
2550
+ ],
2551
+ "executedCount": 1,
2552
+ "totalDurationMs": 9
2553
+ }
2554
+ },
2555
+ "expectedError": {
2556
+ "type": "response",
2557
+ "status": 200,
2558
+ "code": "INVALID_RESPONSE",
2559
+ "message": "DML batch response result 0 has an invalid durationMs field",
2560
+ "details": null,
2561
+ "requestId": null,
2562
+ "retryable": false
2563
+ }
2564
+ },
2565
+ {
2566
+ "id": "sql.list-tables.invalid-payload",
2567
+ "kind": "invalid-payload",
2568
+ "operation": "sql.listTables",
2569
+ "input": {
2570
+ "listTablesOptions": {
2571
+ "scope": "APP",
2572
+ "includeColumns": true
2573
+ }
2574
+ },
2575
+ "request": {
2576
+ "service": "dataManager",
2577
+ "method": "GET",
2578
+ "path": "/api/v1/tables",
2579
+ "params": {
2580
+ "scope": "APP",
2581
+ "includeColumns": true
2582
+ }
2583
+ },
2584
+ "response": {
2585
+ "status": 200,
2586
+ "body": [
2587
+ {
2588
+ "schema": "app_schema",
2589
+ "tables": [
2590
+ {
2591
+ "tableName": "reports",
2592
+ "columns": [
2593
+ {
2594
+ "name": "id",
2595
+ "type": "INTEGER",
2596
+ "primaryKey": "true",
2597
+ "nullable": false,
2598
+ "defaultValue": null
2599
+ }
2600
+ ],
2601
+ "foreignKeys": []
2602
+ }
2603
+ ]
2604
+ }
2605
+ ]
2606
+ },
2607
+ "expectedError": {
2608
+ "type": "response",
2609
+ "status": 200,
2610
+ "code": "INVALID_RESPONSE",
2611
+ "message": "Schema tables response group 0 table 0 column 0 has an invalid primaryKey field",
2612
+ "details": null,
2613
+ "requestId": null,
2614
+ "retryable": false
2615
+ }
2616
+ },
2617
+ {
2618
+ "id": "functions-admin.bulk-create.invalid-payload",
2619
+ "kind": "invalid-payload",
2620
+ "operation": "functionsAdmin.bulkCreate",
2621
+ "input": {
2622
+ "functions": [
2623
+ {
2624
+ "name": "sync orders",
2625
+ "description": "Pushes orders downstream",
2626
+ "runtime": "JAVASCRIPT",
2627
+ "code": "export default async () => ({ ok: true })",
2628
+ "inputSchema": {
2629
+ "type": "object"
2630
+ },
2631
+ "outputSchema": {
2632
+ "type": "object"
2633
+ },
2634
+ "secrets": ["ORDERS_TOKEN"]
2635
+ }
2636
+ ]
2637
+ },
2638
+ "request": {
2639
+ "service": "functions",
2640
+ "method": "POST",
2641
+ "path": "/api/v1/functions/bulk",
2642
+ "body": {
2643
+ "functions": [
2644
+ {
2645
+ "name": "sync orders",
2646
+ "description": "Pushes orders downstream",
2647
+ "runtime": "JAVASCRIPT",
2648
+ "code": "export default async () => ({ ok: true })",
2649
+ "inputSchema": {
2650
+ "type": "object"
2651
+ },
2652
+ "outputSchema": {
2653
+ "type": "object"
2654
+ },
2655
+ "secrets": ["ORDERS_TOKEN"]
2656
+ }
2657
+ ]
2658
+ }
2659
+ },
2660
+ "response": {
2661
+ "status": 201,
2662
+ "body": [
2663
+ {
2664
+ "id": "00000000-0000-4000-8000-000000000601",
2665
+ "tenantId": "00000000-0000-4000-8000-000000000011",
2666
+ "appId": "00000000-0000-4000-8000-000000000012",
2667
+ "legacyId": null,
2668
+ "name": "sync orders",
2669
+ "description": "Pushes orders downstream",
2670
+ "runtime": "JAVASCRIPT",
2671
+ "dataSourceId": null,
2672
+ "visibility": 2,
2673
+ "currentVersion": {
2674
+ "id": "00000000-0000-4000-8000-000000000611",
2675
+ "functionId": "00000000-0000-4000-8000-000000000601",
2676
+ "status": "DRAFT",
2677
+ "code": "export default async () => ({ ok: true })",
2678
+ "inputSchema": {
2679
+ "type": "object"
2680
+ },
2681
+ "outputSchema": {
2682
+ "type": "object"
2683
+ },
2684
+ "secrets": ["ORDERS_TOKEN"],
2685
+ "createdAt": "2026-08-18T12:00:00Z"
2686
+ },
2687
+ "createdAt": "2026-08-18T12:00:00Z",
2688
+ "updatedAt": "2026-08-18T12:00:00Z"
2689
+ }
2690
+ ]
2691
+ },
2692
+ "expectedError": {
2693
+ "type": "response",
2694
+ "status": 201,
2695
+ "code": "INVALID_RESPONSE",
2696
+ "message": "Function bulk create response item 0 has an invalid visibility field",
2697
+ "details": null,
2698
+ "requestId": null,
2699
+ "retryable": false
2700
+ }
2701
+ },
2702
+ {
2703
+ "id": "integration-admin.list.invalid-payload",
2704
+ "kind": "invalid-payload",
2705
+ "operation": "integrationAdmin.list",
2706
+ "input": {
2707
+ "listConfigsOptions": {
2708
+ "page": 0,
2709
+ "size": 20,
2710
+ "sort": "alias"
2711
+ }
2712
+ },
2713
+ "request": {
2714
+ "service": "integration",
2715
+ "method": "GET",
2716
+ "path": "/api/v1/template-configs",
2717
+ "params": {
2718
+ "page": 0,
2719
+ "size": 20,
2720
+ "sort": "alias"
2721
+ }
2722
+ },
2723
+ "response": {
2724
+ "status": 200,
2725
+ "body": {
2726
+ "content": [
2727
+ {
2728
+ "id": "00000000-0000-4000-8000-000000000701",
2729
+ "appId": "00000000-0000-4000-8000-000000000012",
2730
+ "legacyId": null,
2731
+ "templateId": "00000000-0000-4000-8000-000000000801",
2732
+ "alias": "crm-production",
2733
+ "status": "connected",
2734
+ "lastCheckedAt": 0
2735
+ }
2736
+ ],
2737
+ "totalElements": 1
2738
+ }
2739
+ },
2740
+ "expectedError": {
2741
+ "type": "response",
2742
+ "status": 200,
2743
+ "code": "INVALID_RESPONSE",
2744
+ "message": "Template config page response item 0 has an invalid lastCheckedAt field",
2745
+ "details": null,
2746
+ "requestId": null,
2747
+ "retryable": false
2748
+ }
2749
+ },
2750
+ {
2751
+ "id": "members.list.invalid-payload",
2752
+ "kind": "invalid-payload",
2753
+ "operation": "members.list",
2754
+ "input": {},
2755
+ "request": {
2756
+ "service": "auth",
2757
+ "method": "GET",
2758
+ "path": "/api/v1/members/current-app"
2759
+ },
2760
+ "response": {
2761
+ "status": 200,
2762
+ "body": [
2763
+ {
2764
+ "userId": "00000000-0000-4000-8000-000000000901",
2765
+ "name": "Test User",
2766
+ "email": "user@example.com",
2767
+ "accessLevel": "EDIT",
2768
+ "accessSource": 5
2769
+ }
2770
+ ]
2771
+ },
2772
+ "expectedError": {
2773
+ "type": "response",
2774
+ "status": 200,
2775
+ "code": "INVALID_RESPONSE",
2776
+ "message": "App members response member 0 has an invalid accessSource field",
2777
+ "details": null,
2778
+ "requestId": null,
2779
+ "retryable": false
2780
+ }
2781
+ }
2782
+ ],
2783
+ "httpAdapterCases": [
2784
+ {
2785
+ "id": "queries.execute.data-source-not-found",
2786
+ "kind": "api-4xx",
2787
+ "operation": "queries.execute",
2788
+ "input": {
2789
+ "id": "00000000-0000-4000-8000-000000000103",
2790
+ "parameters": {}
2791
+ },
2792
+ "verification": {
2793
+ "owner": "concrete-sdk-http-adapter",
2794
+ "coreExecutable": false,
2795
+ "requiredConsumers": ["@mitralab.io/functions-sdk", "mitra-functions-sdk"]
2796
+ },
2797
+ "source": {
2798
+ "service": "mitra-data-manager",
2799
+ "commit": "50dac9514c6b79b0da34280955e4afeaa24f9f84",
2800
+ "handler": "GlobalExceptionHandler.handleNotFound",
2801
+ "useCase": "ExecuteSqlUseCase.execute",
2802
+ "integrationTest": "CustomQueryControllerTest.Execute.execute_withDataSourceAssociatedToAnotherApp_shouldFailClosed"
2803
+ },
2804
+ "request": {
2805
+ "service": "dataManager",
2806
+ "method": "POST",
2807
+ "path": "/api/v1/custom-queries/00000000-0000-4000-8000-000000000103/execute",
2808
+ "body": {
2809
+ "parameters": {}
2810
+ }
2811
+ },
2812
+ "response": {
2813
+ "status": 404,
2814
+ "body": {
2815
+ "error_code": "NOT_FOUND",
2816
+ "message": "The Custom Query data source was not found for the authenticated app"
2817
+ }
2818
+ },
2819
+ "expectedError": {
2820
+ "type": "api",
2821
+ "status": 404,
2822
+ "code": "NOT_FOUND",
2823
+ "message": "The Custom Query data source was not found for the authenticated app",
2824
+ "details": null,
2825
+ "requestId": null,
2826
+ "retryable": false
2827
+ }
2828
+ },
2829
+ {
2830
+ "id": "queries.execute.database-unavailable",
2831
+ "kind": "api-5xx",
2832
+ "operation": "queries.execute",
2833
+ "input": {
2834
+ "id": "00000000-0000-4000-8000-000000000101",
2835
+ "parameters": {}
2836
+ },
2837
+ "verification": {
2838
+ "owner": "concrete-sdk-http-adapter",
2839
+ "coreExecutable": false,
2840
+ "requiredConsumers": ["@mitralab.io/functions-sdk", "mitra-functions-sdk"]
2841
+ },
2842
+ "source": {
2843
+ "service": "mitra-data-manager",
2844
+ "commit": "50dac9514c6b79b0da34280955e4afeaa24f9f84",
2845
+ "handler": "GlobalExceptionHandler.handleDatabaseException"
2846
+ },
2847
+ "request": {
2848
+ "service": "dataManager",
2849
+ "method": "POST",
2850
+ "path": "/api/v1/custom-queries/00000000-0000-4000-8000-000000000101/execute",
2851
+ "body": {
2852
+ "parameters": {}
2853
+ }
2854
+ },
2855
+ "response": {
2856
+ "status": 503,
2857
+ "body": {
2858
+ "error_code": "DATABASE_ERROR",
2859
+ "message": "Failed to connect to database. Please check your connection settings.",
2860
+ "details": "Connection refused"
2861
+ }
2862
+ },
2863
+ "expectedError": {
2864
+ "type": "api",
2865
+ "status": 503,
2866
+ "code": "DATABASE_ERROR",
2867
+ "message": "Failed to connect to database. Please check your connection settings.",
2868
+ "details": "Connection refused",
2869
+ "requestId": null,
2870
+ "retryable": true
2871
+ }
2872
+ },
2873
+ {
2874
+ "id": "auth.me.timeout",
2875
+ "kind": "timeout",
2876
+ "operation": "auth.me",
2877
+ "input": {},
2878
+ "verification": {
2879
+ "owner": "concrete-sdk-http-adapter",
2880
+ "coreExecutable": false,
2881
+ "requiredConsumers": ["@mitralab.io/functions-sdk", "mitra-functions-sdk"]
2882
+ },
2883
+ "request": {
2884
+ "service": "auth",
2885
+ "method": "GET",
2886
+ "path": "/api/v1/auth/me"
2887
+ },
2888
+ "failure": {
2889
+ "type": "timeout"
2890
+ },
2891
+ "expectedError": {
2892
+ "type": "network",
2893
+ "status": 0,
2894
+ "code": "REQUEST_TIMEOUT",
2895
+ "message": "Mitra request timed out",
2896
+ "details": null,
2897
+ "requestId": null,
2898
+ "retryable": true
2899
+ }
2900
+ }
2901
+ ]
2902
+ }