mcp-aiven 0.1.5

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.
Files changed (132) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +173 -0
  3. package/dist/client.d.ts +16 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +84 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +15 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +35 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/errors.d.ts +8 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +42 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/generated/aiven-api.d.ts +49982 -0
  16. package/dist/generated/aiven-api.d.ts.map +1 -0
  17. package/dist/generated/aiven-api.js +6 -0
  18. package/dist/generated/aiven-api.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +85 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/manifests/core.yaml +206 -0
  24. package/dist/manifests/integrations.yaml +72 -0
  25. package/dist/manifests/kafka.yaml +143 -0
  26. package/dist/manifests/pg.yaml +43 -0
  27. package/dist/prompts.d.ts +5 -0
  28. package/dist/prompts.d.ts.map +1 -0
  29. package/dist/prompts.js +10 -0
  30. package/dist/prompts.js.map +1 -0
  31. package/dist/security.d.ts +5 -0
  32. package/dist/security.d.ts.map +1 -0
  33. package/dist/security.js +52 -0
  34. package/dist/security.js.map +1 -0
  35. package/dist/shared/service-info.d.ts +5 -0
  36. package/dist/shared/service-info.d.ts.map +1 -0
  37. package/dist/shared/service-info.js +24 -0
  38. package/dist/shared/service-info.js.map +1 -0
  39. package/dist/tool-result-limit.d.ts +7 -0
  40. package/dist/tool-result-limit.d.ts.map +1 -0
  41. package/dist/tool-result-limit.js +44 -0
  42. package/dist/tool-result-limit.js.map +1 -0
  43. package/dist/tools/api-tool.d.ts +4 -0
  44. package/dist/tools/api-tool.d.ts.map +1 -0
  45. package/dist/tools/api-tool.js +80 -0
  46. package/dist/tools/api-tool.js.map +1 -0
  47. package/dist/tools/applications/handlers.d.ts +4 -0
  48. package/dist/tools/applications/handlers.d.ts.map +1 -0
  49. package/dist/tools/applications/handlers.js +345 -0
  50. package/dist/tools/applications/handlers.js.map +1 -0
  51. package/dist/tools/applications/index.d.ts +2 -0
  52. package/dist/tools/applications/index.d.ts.map +1 -0
  53. package/dist/tools/applications/index.js +2 -0
  54. package/dist/tools/applications/index.js.map +1 -0
  55. package/dist/tools/applications/schemas.d.ts +276 -0
  56. package/dist/tools/applications/schemas.d.ts.map +1 -0
  57. package/dist/tools/applications/schemas.js +204 -0
  58. package/dist/tools/applications/schemas.js.map +1 -0
  59. package/dist/tools/json-schema-to-zod.d.ts +4 -0
  60. package/dist/tools/json-schema-to-zod.d.ts.map +1 -0
  61. package/dist/tools/json-schema-to-zod.js +118 -0
  62. package/dist/tools/json-schema-to-zod.js.map +1 -0
  63. package/dist/tools/kafka/descriptions.d.ts +3 -0
  64. package/dist/tools/kafka/descriptions.d.ts.map +1 -0
  65. package/dist/tools/kafka/descriptions.js +43 -0
  66. package/dist/tools/kafka/descriptions.js.map +1 -0
  67. package/dist/tools/kafka/handlers.d.ts +4 -0
  68. package/dist/tools/kafka/handlers.d.ts.map +1 -0
  69. package/dist/tools/kafka/handlers.js +65 -0
  70. package/dist/tools/kafka/handlers.js.map +1 -0
  71. package/dist/tools/kafka/helpers.d.ts +4 -0
  72. package/dist/tools/kafka/helpers.d.ts.map +1 -0
  73. package/dist/tools/kafka/helpers.js +79 -0
  74. package/dist/tools/kafka/helpers.js.map +1 -0
  75. package/dist/tools/kafka/index.d.ts +2 -0
  76. package/dist/tools/kafka/index.d.ts.map +1 -0
  77. package/dist/tools/kafka/index.js +2 -0
  78. package/dist/tools/kafka/index.js.map +1 -0
  79. package/dist/tools/kafka/schemas.d.ts +43 -0
  80. package/dist/tools/kafka/schemas.d.ts.map +1 -0
  81. package/dist/tools/kafka/schemas.js +23 -0
  82. package/dist/tools/kafka/schemas.js.map +1 -0
  83. package/dist/tools/pg/connection.d.ts +5 -0
  84. package/dist/tools/pg/connection.d.ts.map +1 -0
  85. package/dist/tools/pg/connection.js +28 -0
  86. package/dist/tools/pg/connection.js.map +1 -0
  87. package/dist/tools/pg/descriptions.d.ts +4 -0
  88. package/dist/tools/pg/descriptions.d.ts.map +1 -0
  89. package/dist/tools/pg/descriptions.js +66 -0
  90. package/dist/tools/pg/descriptions.js.map +1 -0
  91. package/dist/tools/pg/handlers.d.ts +4 -0
  92. package/dist/tools/pg/handlers.d.ts.map +1 -0
  93. package/dist/tools/pg/handlers.js +91 -0
  94. package/dist/tools/pg/handlers.js.map +1 -0
  95. package/dist/tools/pg/index.d.ts +2 -0
  96. package/dist/tools/pg/index.d.ts.map +1 -0
  97. package/dist/tools/pg/index.js +2 -0
  98. package/dist/tools/pg/index.js.map +1 -0
  99. package/dist/tools/pg/query.d.ts +6 -0
  100. package/dist/tools/pg/query.d.ts.map +1 -0
  101. package/dist/tools/pg/query.js +120 -0
  102. package/dist/tools/pg/query.js.map +1 -0
  103. package/dist/tools/pg/schemas.d.ts +59 -0
  104. package/dist/tools/pg/schemas.d.ts.map +1 -0
  105. package/dist/tools/pg/schemas.js +69 -0
  106. package/dist/tools/pg/schemas.js.map +1 -0
  107. package/dist/tools/pg/validation.d.ts +10 -0
  108. package/dist/tools/pg/validation.d.ts.map +1 -0
  109. package/dist/tools/pg/validation.js +77 -0
  110. package/dist/tools/pg/validation.js.map +1 -0
  111. package/dist/tools/registry.d.ts +4 -0
  112. package/dist/tools/registry.d.ts.map +1 -0
  113. package/dist/tools/registry.js +120 -0
  114. package/dist/tools/registry.js.map +1 -0
  115. package/dist/tools/response-filter.d.ts +3 -0
  116. package/dist/tools/response-filter.d.ts.map +1 -0
  117. package/dist/tools/response-filter.js +19 -0
  118. package/dist/tools/response-filter.js.map +1 -0
  119. package/dist/transport.d.ts +14 -0
  120. package/dist/transport.d.ts.map +1 -0
  121. package/dist/transport.js +111 -0
  122. package/dist/transport.js.map +1 -0
  123. package/dist/types.d.ts +127 -0
  124. package/dist/types.d.ts.map +1 -0
  125. package/dist/types.js +81 -0
  126. package/dist/types.js.map +1 -0
  127. package/generator/schemas/api-schemas.json +2106 -0
  128. package/package.json +78 -0
  129. package/src/manifests/core.yaml +206 -0
  130. package/src/manifests/integrations.yaml +72 -0
  131. package/src/manifests/kafka.yaml +143 -0
  132. package/src/manifests/pg.yaml +43 -0
@@ -0,0 +1,2106 @@
1
+ {
2
+ "aiven_project_list": {
3
+ "schema": {
4
+ "type": "object",
5
+ "properties": {}
6
+ },
7
+ "strict": true,
8
+ "title": "Project List",
9
+ "description": "List all Aiven projects. ALWAYS call this first to get valid `project` names — never guess project names."
10
+ },
11
+ "aiven_project_get": {
12
+ "schema": {
13
+ "type": "object",
14
+ "properties": {
15
+ "project": {
16
+ "type": "string"
17
+ }
18
+ },
19
+ "required": [
20
+ "project"
21
+ ]
22
+ },
23
+ "strict": true,
24
+ "title": "Project Get",
25
+ "description": "Get project details"
26
+ },
27
+ "aiven_list_project_clouds": {
28
+ "schema": {
29
+ "type": "object",
30
+ "properties": {
31
+ "project": {
32
+ "type": "string"
33
+ }
34
+ },
35
+ "required": [
36
+ "project"
37
+ ]
38
+ },
39
+ "strict": true,
40
+ "title": "List Project Clouds",
41
+ "description": "List cloud platforms for a project\n\nReturns a list of cloud platforms available for a project."
42
+ },
43
+ "aiven_service_list": {
44
+ "schema": {
45
+ "type": "object",
46
+ "properties": {
47
+ "project": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "required": [
52
+ "project"
53
+ ]
54
+ },
55
+ "strict": true,
56
+ "title": "Service List",
57
+ "description": "List services in a project. `project` must be a valid Aiven project name from `aiven_project_list`."
58
+ },
59
+ "aiven_service_type_plans": {
60
+ "schema": {
61
+ "type": "object",
62
+ "properties": {
63
+ "project": {
64
+ "type": "string"
65
+ },
66
+ "service_type": {
67
+ "type": "string"
68
+ }
69
+ },
70
+ "required": [
71
+ "project",
72
+ "service_type"
73
+ ]
74
+ },
75
+ "strict": true,
76
+ "title": "Service Type Plans",
77
+ "description": "List available plans for a service type. Requires `project` — use `aiven_project_list` first if unknown.\n\nEach plan may include **`regions`** (and sometimes **`clouds`**) describing where that plan can run. Use those fields to show the user **which cloud names** (e.g. `do-fra`, `aws-eu-central-1`) are valid for their chosen plan before calling `aiven_service_create`.\n\n**Pricing is not included in this response.** Prices vary by cloud region. Use `aiven_service_plan_pricing` to get pricing for a specific plan and cloud."
78
+ },
79
+ "aiven_service_plan_pricing": {
80
+ "schema": {
81
+ "type": "object",
82
+ "properties": {
83
+ "project": {
84
+ "type": "string"
85
+ },
86
+ "service_type": {
87
+ "type": "string"
88
+ },
89
+ "service_plan": {
90
+ "type": "string"
91
+ },
92
+ "cloud": {
93
+ "type": "string"
94
+ }
95
+ },
96
+ "required": [
97
+ "project",
98
+ "service_type",
99
+ "service_plan",
100
+ "cloud"
101
+ ]
102
+ },
103
+ "strict": true,
104
+ "title": "Service Plan Pricing",
105
+ "description": "Get pricing for a specific service plan in a specific cloud region. Returns hourly USD price.\n\nUse `aiven_service_type_plans` to list available plans, and `aiven_list_project_clouds` to list available clouds."
106
+ },
107
+ "aiven_service_create": {
108
+ "schema": {
109
+ "type": "object",
110
+ "properties": {
111
+ "project": {
112
+ "type": "string"
113
+ },
114
+ "cloud": {
115
+ "type": "string",
116
+ "description": "Target cloud",
117
+ "maxLength": 256
118
+ },
119
+ "copy_tags": {
120
+ "type": "boolean",
121
+ "description": "If this is a forked service, copy tags from the source service. If request contains additional tags, the tags copied from source are updated with them.",
122
+ "default": false
123
+ },
124
+ "disk_space_mb": {
125
+ "type": "integer",
126
+ "description": "Megabytes of disk space for data storage",
127
+ "minimum": 0
128
+ },
129
+ "group_name": {
130
+ "type": "string",
131
+ "description": "Service group name (DEPRECATED: do not use)",
132
+ "maxLength": 256
133
+ },
134
+ "maintenance": {
135
+ "type": "object",
136
+ "properties": {
137
+ "dow": {
138
+ "enum": [
139
+ "monday",
140
+ "tuesday",
141
+ "wednesday",
142
+ "thursday",
143
+ "friday",
144
+ "saturday",
145
+ "sunday"
146
+ ],
147
+ "description": "Day of week for installing updates"
148
+ },
149
+ "time": {
150
+ "type": "string",
151
+ "description": "Time for installing updates, UTC",
152
+ "minLength": 8,
153
+ "maxLength": 8
154
+ }
155
+ },
156
+ "description": "Automatic maintenance settings"
157
+ },
158
+ "plan": {
159
+ "type": "string",
160
+ "description": "Subscription plan",
161
+ "maxLength": 128
162
+ },
163
+ "project_vpc_id": {
164
+ "type": "string",
165
+ "description": "Project VPC ID",
166
+ "minLength": 36,
167
+ "maxLength": 36
168
+ },
169
+ "service_integrations": {
170
+ "type": "array",
171
+ "description": "Service integrations to enable for the service. Some integration types affect how a service is created and they must be provided as part of the creation call instead of being defined later.",
172
+ "items": {
173
+ "type": "object",
174
+ "properties": {
175
+ "dest_endpoint_id": {
176
+ "type": "string",
177
+ "description": "Integration destination endpoint ID",
178
+ "maxLength": 36
179
+ },
180
+ "dest_project": {
181
+ "type": "string",
182
+ "description": "Defaults to project in the request path",
183
+ "maxLength": 63
184
+ },
185
+ "dest_service": {
186
+ "type": "string",
187
+ "description": "Destination service name",
188
+ "maxLength": 64
189
+ },
190
+ "integration_type": {
191
+ "enum": [
192
+ "alertmanager",
193
+ "application_service_credential",
194
+ "autoscaler",
195
+ "autoscaler_service",
196
+ "caching",
197
+ "clickhouse_credentials",
198
+ "clickhouse_kafka",
199
+ "clickhouse_postgresql",
200
+ "dashboard",
201
+ "datadog",
202
+ "datasource",
203
+ "disaster_recovery",
204
+ "external_aws_cloudwatch_logs",
205
+ "external_aws_cloudwatch_metrics",
206
+ "external_elasticsearch_logs",
207
+ "external_google_cloud_logging",
208
+ "external_opensearch_logs",
209
+ "flink",
210
+ "flink_external_bigquery",
211
+ "flink_external_kafka",
212
+ "flink_external_postgresql",
213
+ "internal_connectivity",
214
+ "jolokia",
215
+ "kafka_connect",
216
+ "kafka_connect_postgresql",
217
+ "kafka_inkless_postgresql",
218
+ "kafka_logs",
219
+ "kafka_mirrormaker",
220
+ "logs",
221
+ "metrics",
222
+ "opensearch_cross_cluster_replication",
223
+ "opensearch_cross_cluster_search",
224
+ "prometheus",
225
+ "read_replica",
226
+ "rsyslog",
227
+ "schema_registry_proxy",
228
+ "service_composition",
229
+ "stresstester",
230
+ "thanos_distributed_query",
231
+ "thanos_migrate",
232
+ "thanos_object_storage",
233
+ "thanoscompactor",
234
+ "thanosquery",
235
+ "thanosruler",
236
+ "thanosstore",
237
+ "vector",
238
+ "vmalert"
239
+ ],
240
+ "description": "Service integration type"
241
+ },
242
+ "source_endpoint_id": {
243
+ "type": "string",
244
+ "description": "Integration source endpoint ID",
245
+ "maxLength": 36
246
+ },
247
+ "source_project": {
248
+ "type": "string",
249
+ "description": "Defaults to project in the request path",
250
+ "maxLength": 63
251
+ },
252
+ "source_service": {
253
+ "type": "string",
254
+ "description": "Source service name",
255
+ "maxLength": 64
256
+ },
257
+ "user_config": {
258
+ "type": "object",
259
+ "additionalProperties": true
260
+ }
261
+ },
262
+ "required": [
263
+ "integration_type"
264
+ ]
265
+ }
266
+ },
267
+ "service_name": {
268
+ "type": "string",
269
+ "description": "Service name",
270
+ "minLength": 1,
271
+ "maxLength": 64
272
+ },
273
+ "service_type": {
274
+ "type": "string",
275
+ "description": "Service type code",
276
+ "maxLength": 64
277
+ },
278
+ "static_ips": {
279
+ "type": "array",
280
+ "description": "Static IP addresses to associate with the service",
281
+ "items": {
282
+ "type": "string"
283
+ }
284
+ },
285
+ "tags": {
286
+ "type": "object",
287
+ "additionalProperties": true
288
+ },
289
+ "tech_emails": {
290
+ "type": "array",
291
+ "description": "List of service technical email addresses",
292
+ "items": {
293
+ "type": "object",
294
+ "properties": {
295
+ "email": {
296
+ "type": "string",
297
+ "description": "User email address",
298
+ "maxLength": 254
299
+ }
300
+ },
301
+ "required": [
302
+ "email"
303
+ ]
304
+ }
305
+ },
306
+ "termination_protection": {
307
+ "type": "boolean",
308
+ "description": "Service is protected against termination and powering off"
309
+ },
310
+ "user_config": {
311
+ "type": "object",
312
+ "additionalProperties": true
313
+ }
314
+ },
315
+ "required": [
316
+ "project",
317
+ "plan",
318
+ "service_name",
319
+ "service_type"
320
+ ]
321
+ },
322
+ "strict": false,
323
+ "title": "Service Create",
324
+ "description": "Create a new Aiven service. Always call `aiven_service_type_plans` first, present plans to the user, and let them choose before creating. Do not pick a plan yourself.\n\n**Cloud (`cloud`) — never guess or silently default.** After the user picks a plan, show valid cloud names from that plan’s **`regions` / `clouds`** in the `aiven_service_type_plans` response and **ask which cloud they want**. Do not invent a region (e.g. do not assume `do-fra`). If per-plan clouds are unclear, call `aiven_list_project_clouds` and still require an **explicit user choice** unless they told you to use a specific cloud or the project’s default.\n\nFor PostgreSQL, set `user_config: {\"pg_version\": \"17\"}`. After creation, tell the user the service is provisioning (takes a few minutes) and ask them to tell you when to check the status. Do NOT poll `aiven_service_get` in a loop.\n\n**Read replica:** set `service_to_fork_from` to the primary and `user_config.pg_read_replica: true`."
325
+ },
326
+ "aiven_service_get": {
327
+ "schema": {
328
+ "type": "object",
329
+ "properties": {
330
+ "project": {
331
+ "type": "string"
332
+ },
333
+ "service_name": {
334
+ "type": "string"
335
+ }
336
+ },
337
+ "required": [
338
+ "project",
339
+ "service_name"
340
+ ]
341
+ },
342
+ "strict": true,
343
+ "title": "Service Get",
344
+ "description": "Get service information. `project` must be a valid Aiven project name from `aiven_project_list`.\nIf the service `state` is not `RUNNING`, return the status to the user and stop. Do NOT call this tool again in a loop — let the user decide when to re-check."
345
+ },
346
+ "aiven_service_update": {
347
+ "schema": {
348
+ "type": "object",
349
+ "properties": {
350
+ "project": {
351
+ "type": "string"
352
+ },
353
+ "service_name": {
354
+ "type": "string"
355
+ },
356
+ "allow_unclean_poweroff": {
357
+ "type": "boolean",
358
+ "default": true
359
+ },
360
+ "cloud": {
361
+ "type": "string",
362
+ "description": "Target cloud",
363
+ "maxLength": 256
364
+ },
365
+ "disk_space_mb": {
366
+ "type": "integer",
367
+ "description": "Megabytes of disk space for data storage",
368
+ "minimum": 0
369
+ },
370
+ "group_name": {
371
+ "type": "string",
372
+ "description": "Service group name (DEPRECATED: do not use)",
373
+ "maxLength": 256
374
+ },
375
+ "karapace": {
376
+ "type": "boolean",
377
+ "description": "Switch the service to use Karapace for schema registry and REST proxy"
378
+ },
379
+ "maintenance": {
380
+ "type": "object",
381
+ "properties": {
382
+ "dow": {
383
+ "enum": [
384
+ "monday",
385
+ "tuesday",
386
+ "wednesday",
387
+ "thursday",
388
+ "friday",
389
+ "saturday",
390
+ "sunday"
391
+ ],
392
+ "description": "Day of week for installing updates"
393
+ },
394
+ "time": {
395
+ "type": "string",
396
+ "description": "Time for installing updates, UTC",
397
+ "minLength": 8,
398
+ "maxLength": 8
399
+ }
400
+ },
401
+ "description": "Automatic maintenance settings"
402
+ },
403
+ "plan": {
404
+ "type": "string",
405
+ "description": "Subscription plan",
406
+ "maxLength": 128
407
+ },
408
+ "powered": {
409
+ "type": "boolean",
410
+ "description": "Power-on the service (true) or power-off (false)"
411
+ },
412
+ "project_vpc_id": {
413
+ "type": "string",
414
+ "description": "Project VPC ID",
415
+ "minLength": 36,
416
+ "maxLength": 36
417
+ },
418
+ "schema_registry_authz": {
419
+ "type": "boolean",
420
+ "description": "Enable or disable Schema Registry authorization"
421
+ },
422
+ "tech_emails": {
423
+ "type": "array",
424
+ "description": "List of service technical email addresses",
425
+ "items": {
426
+ "type": "object",
427
+ "properties": {
428
+ "email": {
429
+ "type": "string",
430
+ "description": "User email address",
431
+ "maxLength": 254
432
+ }
433
+ },
434
+ "required": [
435
+ "email"
436
+ ]
437
+ }
438
+ },
439
+ "termination_protection": {
440
+ "type": "boolean",
441
+ "description": "Service is protected against termination and powering off"
442
+ },
443
+ "user_config": {
444
+ "type": "object",
445
+ "additionalProperties": true
446
+ }
447
+ },
448
+ "required": [
449
+ "project",
450
+ "service_name"
451
+ ]
452
+ },
453
+ "strict": false,
454
+ "title": "Service Update",
455
+ "description": "Update an existing Aiven service.\n\nCan change: plan, cloud region, user configuration, power state.\n\n**Warning:** Plan changes may cause brief service downtime during migration. Confirm with the user before changing plans.\n\n**Common user_config changes:**\n\nEnable Kafka Connect on a Kafka service:\n```\naiven_service_update(project=\"my-project\", service_name=\"my-kafka\",\n user_config={\"kafka_connect\": true})\n```\n\nEnable Schema Registry (Karapace) on a Kafka service:\n```\naiven_service_update(project=\"my-project\", service_name=\"my-kafka\",\n user_config={\"schema_registry\": true})\n```\n\nEnable tiered storage on a Kafka service:\n```\naiven_service_update(project=\"my-project\", service_name=\"my-kafka\",\n user_config={\"tiered_storage\": {\"enabled\": true}})\n```\n\nSet PostgreSQL version:\n```\naiven_service_update(project=\"my-project\", service_name=\"my-pg\",\n user_config={\"pg_version\": \"17\"})\n```"
456
+ },
457
+ "aiven_project_get_service_logs": {
458
+ "schema": {
459
+ "type": "object",
460
+ "properties": {
461
+ "project": {
462
+ "type": "string"
463
+ },
464
+ "service_name": {
465
+ "type": "string"
466
+ },
467
+ "limit": {
468
+ "type": "integer",
469
+ "description": "How many log entries to receive at most",
470
+ "minimum": 1,
471
+ "maximum": 500,
472
+ "default": 100
473
+ },
474
+ "offset": {
475
+ "type": "string",
476
+ "description": "Opaque offset identifier",
477
+ "maxLength": 128
478
+ },
479
+ "sort_order": {
480
+ "enum": [
481
+ "desc",
482
+ "asc"
483
+ ],
484
+ "description": "Sort order for log messages"
485
+ }
486
+ },
487
+ "required": [
488
+ "project",
489
+ "service_name"
490
+ ]
491
+ },
492
+ "strict": false,
493
+ "title": "Project Get Service Logs",
494
+ "description": "Get service log entries"
495
+ },
496
+ "aiven_service_query_activity": {
497
+ "schema": {
498
+ "type": "object",
499
+ "properties": {
500
+ "project": {
501
+ "type": "string"
502
+ },
503
+ "service_name": {
504
+ "type": "string"
505
+ },
506
+ "limit": {
507
+ "type": "integer",
508
+ "description": "Limit for number of results",
509
+ "minimum": 1,
510
+ "maximum": 5000,
511
+ "default": 100
512
+ },
513
+ "offset": {
514
+ "type": "integer",
515
+ "description": "Offset for retrieved results based on sort order",
516
+ "minimum": 0,
517
+ "default": 0
518
+ },
519
+ "order_by": {
520
+ "type": "string",
521
+ "description": "Sort order can be either asc or desc and multiple comma separated columns with their own order can be specified: :asc,:desc.",
522
+ "maxLength": 256,
523
+ "default": "client_id:desc"
524
+ }
525
+ },
526
+ "required": [
527
+ "project",
528
+ "service_name"
529
+ ]
530
+ },
531
+ "strict": false,
532
+ "title": "Service Query Activity",
533
+ "description": "Fetch current queries for the service"
534
+ },
535
+ "aiven_service_metrics_fetch": {
536
+ "schema": {
537
+ "type": "object",
538
+ "properties": {
539
+ "project": {
540
+ "type": "string"
541
+ },
542
+ "service_name": {
543
+ "type": "string"
544
+ },
545
+ "kafka_topic_name": {
546
+ "type": "string",
547
+ "description": "Metrics at Kafka service topic level",
548
+ "maxLength": 249
549
+ },
550
+ "period": {
551
+ "enum": [
552
+ "hour",
553
+ "day",
554
+ "week",
555
+ "month",
556
+ "year"
557
+ ],
558
+ "description": "Metrics time period"
559
+ }
560
+ },
561
+ "required": [
562
+ "project",
563
+ "service_name"
564
+ ]
565
+ },
566
+ "strict": false,
567
+ "title": "Service Metrics Fetch",
568
+ "description": "Fetch metrics for **managed data services** (PostgreSQL, Kafka, OpenSearch, etc.) — i.e. not `service_type: application`.\n\n**Do not use** for **application** services (custom apps deployed as an Aiven “application” service). For those, use **`aiven_service_application_metrics_get`** instead (GET `…/application/metrics`). If unsure, call `aiven_service_get` first and check `service_type`.\n\nUse `period` to control the time window: `hour`, `day`, `week`, `month`, or `year`.\nFor Kafka services, optionally pass `kafka_topic_name` to get topic-level metrics.\n\n**Display format:** Render ALL metrics as a single ASCII dashboard using box-drawing characters (┌─┐│└┘) and progress bars (█░). One section per metric group. Show every metric returned — do not summarize or omit. Do NOT use markdown tables or bullet points. Do NOT generate scripts. Render directly as text. Add a blank line between each metric row for readability."
569
+ },
570
+ "aiven_service_application_metrics_get": {
571
+ "schema": {
572
+ "type": "object",
573
+ "properties": {
574
+ "project": {
575
+ "type": "string"
576
+ },
577
+ "service_name": {
578
+ "type": "string"
579
+ }
580
+ },
581
+ "required": [
582
+ "project",
583
+ "service_name"
584
+ ]
585
+ },
586
+ "strict": true,
587
+ "title": "Service Application Metrics Get",
588
+ "description": "**Preferred tool** when the user asks for **application** metrics, or the target is an **application** service (`service_type: application`).\n\nCalls **`GET …/application/metrics`**. Do **not** use `aiven_service_metrics_fetch` for these — that tool targets **`POST …/metrics`** for managed data services only.\n\nIf the service type is unknown, call **`aiven_service_get`** first, then choose this tool if `service_type` is `application`."
589
+ },
590
+ "aiven_project_vpc_list": {
591
+ "schema": {
592
+ "type": "object",
593
+ "properties": {
594
+ "project": {
595
+ "type": "string"
596
+ }
597
+ },
598
+ "required": [
599
+ "project"
600
+ ]
601
+ },
602
+ "strict": true,
603
+ "title": "Project Vpc List",
604
+ "description": "List VPCs for a project. Returns each VPC's ID, cloud, state, and network CIDR.\n\nUse this when deploying an application service fails with \"please specify project_vpc_id\" (i.e. the project has multiple active VPCs). List them, show the user the options, and let them pick which VPC to deploy into.\n\nVPCs with state `ACTIVE` are ready to use. Pass the chosen `project_vpc_id` to `aiven_application_deploy`."
605
+ },
606
+ "aiven_project_get_event_logs": {
607
+ "schema": {
608
+ "type": "object",
609
+ "properties": {
610
+ "project": {
611
+ "type": "string"
612
+ }
613
+ },
614
+ "required": [
615
+ "project"
616
+ ]
617
+ },
618
+ "strict": true,
619
+ "title": "Project Get Event Logs",
620
+ "description": "Get project event log entries"
621
+ },
622
+ "aiven_service_integration_list": {
623
+ "schema": {
624
+ "type": "object",
625
+ "properties": {
626
+ "project": {
627
+ "type": "string"
628
+ },
629
+ "service_name": {
630
+ "type": "string"
631
+ }
632
+ },
633
+ "required": [
634
+ "project",
635
+ "service_name"
636
+ ]
637
+ },
638
+ "strict": true,
639
+ "title": "Service Integration List",
640
+ "description": "List all integrations for a specific service. Returns both integrations where this service is the source and where it is the destination.\n\nUse this to see what metrics, logs, data pipeline, or replication integrations are active on a service."
641
+ },
642
+ "aiven_service_integration_create": {
643
+ "schema": {
644
+ "type": "object",
645
+ "properties": {
646
+ "project": {
647
+ "type": "string"
648
+ },
649
+ "dest_endpoint_id": {
650
+ "type": "string",
651
+ "description": "Integration destination endpoint ID",
652
+ "maxLength": 36
653
+ },
654
+ "dest_project": {
655
+ "type": "string",
656
+ "description": "Defaults to project in the request path",
657
+ "maxLength": 63
658
+ },
659
+ "dest_service": {
660
+ "type": "string",
661
+ "description": "Destination service name",
662
+ "maxLength": 64
663
+ },
664
+ "integration_type": {
665
+ "enum": [
666
+ "alertmanager",
667
+ "application_service_credential",
668
+ "autoscaler",
669
+ "autoscaler_service",
670
+ "caching",
671
+ "clickhouse_credentials",
672
+ "clickhouse_kafka",
673
+ "clickhouse_postgresql",
674
+ "dashboard",
675
+ "datadog",
676
+ "datasource",
677
+ "disaster_recovery",
678
+ "external_aws_cloudwatch_logs",
679
+ "external_aws_cloudwatch_metrics",
680
+ "external_elasticsearch_logs",
681
+ "external_google_cloud_logging",
682
+ "external_opensearch_logs",
683
+ "flink",
684
+ "flink_external_bigquery",
685
+ "flink_external_kafka",
686
+ "flink_external_postgresql",
687
+ "internal_connectivity",
688
+ "jolokia",
689
+ "kafka_connect",
690
+ "kafka_connect_postgresql",
691
+ "kafka_inkless_postgresql",
692
+ "kafka_logs",
693
+ "kafka_mirrormaker",
694
+ "logs",
695
+ "metrics",
696
+ "opensearch_cross_cluster_replication",
697
+ "opensearch_cross_cluster_search",
698
+ "prometheus",
699
+ "read_replica",
700
+ "rsyslog",
701
+ "schema_registry_proxy",
702
+ "service_composition",
703
+ "stresstester",
704
+ "thanos_distributed_query",
705
+ "thanos_migrate",
706
+ "thanos_object_storage",
707
+ "thanoscompactor",
708
+ "thanosquery",
709
+ "thanosruler",
710
+ "thanosstore",
711
+ "vector",
712
+ "vmalert"
713
+ ],
714
+ "description": "Service integration type"
715
+ },
716
+ "source_endpoint_id": {
717
+ "type": "string",
718
+ "description": "Integration source endpoint ID",
719
+ "maxLength": 36
720
+ },
721
+ "source_project": {
722
+ "type": "string",
723
+ "description": "Defaults to project in the request path",
724
+ "maxLength": 63
725
+ },
726
+ "source_service": {
727
+ "type": "string",
728
+ "description": "Source service name",
729
+ "maxLength": 64
730
+ },
731
+ "user_config": {
732
+ "type": "object",
733
+ "additionalProperties": true
734
+ }
735
+ },
736
+ "required": [
737
+ "project",
738
+ "integration_type"
739
+ ]
740
+ },
741
+ "strict": false,
742
+ "title": "Service Integration Create",
743
+ "description": "Create a service integration between two Aiven services, or between an Aiven service and an external integration endpoint.\n\n**Before calling:** use `aiven_integration_types_list` to discover valid `integration_type` values and which source/destination service types each supports.\n\nProvide `source_service`/`dest_service` for Aiven-to-Aiven integrations, or use `source_endpoint_id`/`dest_endpoint_id` for external endpoints."
744
+ },
745
+ "aiven_service_integration_get": {
746
+ "schema": {
747
+ "type": "object",
748
+ "properties": {
749
+ "project": {
750
+ "type": "string"
751
+ },
752
+ "integration_id": {
753
+ "type": "string"
754
+ }
755
+ },
756
+ "required": [
757
+ "project",
758
+ "integration_id"
759
+ ]
760
+ },
761
+ "strict": true,
762
+ "title": "Service Integration Get",
763
+ "description": "Get details for a specific service integration by ID. Returns the integration type, source and destination services, status, and configuration."
764
+ },
765
+ "aiven_service_integration_update": {
766
+ "schema": {
767
+ "type": "object",
768
+ "properties": {
769
+ "project": {
770
+ "type": "string"
771
+ },
772
+ "integration_id": {
773
+ "type": "string"
774
+ },
775
+ "user_config": {
776
+ "type": "object",
777
+ "additionalProperties": true
778
+ }
779
+ },
780
+ "required": [
781
+ "project",
782
+ "integration_id",
783
+ "user_config"
784
+ ]
785
+ },
786
+ "strict": false,
787
+ "title": "Service Integration Update",
788
+ "description": "Update the configuration of an existing service integration.\n\nOnly `user_config` can be updated — you cannot change the integration type, source, or destination after creation. To change those, delete and recreate the integration."
789
+ },
790
+ "aiven_service_integration_delete": {
791
+ "schema": {
792
+ "type": "object",
793
+ "properties": {
794
+ "project": {
795
+ "type": "string"
796
+ },
797
+ "integration_id": {
798
+ "type": "string"
799
+ }
800
+ },
801
+ "required": [
802
+ "project",
803
+ "integration_id"
804
+ ]
805
+ },
806
+ "strict": true,
807
+ "title": "Service Integration Delete",
808
+ "description": "Delete a service integration. This removes the connection between the source and destination services.\n\n**Warning:** Deleting an integration may disrupt data flows (metrics, logs, replication). Confirm with the user before proceeding."
809
+ },
810
+ "aiven_integration_types_list": {
811
+ "schema": {
812
+ "type": "object",
813
+ "properties": {
814
+ "project": {
815
+ "type": "string"
816
+ }
817
+ },
818
+ "required": [
819
+ "project"
820
+ ]
821
+ },
822
+ "strict": true,
823
+ "title": "Integration Types List",
824
+ "description": "List all available service integration types for a project. Returns the integration type name along with the valid source and destination service types for each.\n\n**Call this first** before creating an integration to understand which service types can be connected and in which direction."
825
+ },
826
+ "aiven_integration_endpoint_types_list": {
827
+ "schema": {
828
+ "type": "object",
829
+ "properties": {
830
+ "project": {
831
+ "type": "string"
832
+ }
833
+ },
834
+ "required": [
835
+ "project"
836
+ ]
837
+ },
838
+ "strict": true,
839
+ "title": "Integration Endpoint Types List",
840
+ "description": "List all available integration endpoint types for a project. Integration endpoints represent external services (e.g. Datadog, external Elasticsearch, Prometheus remote write, rsyslog, AWS CloudWatch, Google Cloud Logging).\n\nUse this to discover what external endpoint types can be created, then use `aiven_service_integration_create` with the endpoint ID to wire an Aiven service to the external system."
841
+ },
842
+ "aiven_kafka_topic_list": {
843
+ "schema": {
844
+ "type": "object",
845
+ "properties": {
846
+ "project": {
847
+ "type": "string"
848
+ },
849
+ "service_name": {
850
+ "type": "string"
851
+ }
852
+ },
853
+ "required": [
854
+ "project",
855
+ "service_name"
856
+ ]
857
+ },
858
+ "strict": true,
859
+ "title": "Topic List",
860
+ "description": "Get Kafka topic list"
861
+ },
862
+ "aiven_kafka_topic_create": {
863
+ "schema": {
864
+ "type": "object",
865
+ "properties": {
866
+ "project": {
867
+ "type": "string"
868
+ },
869
+ "service_name": {
870
+ "type": "string"
871
+ },
872
+ "cleanup_policy": {
873
+ "enum": [
874
+ "delete",
875
+ "compact",
876
+ "compact,delete"
877
+ ],
878
+ "description": "The retention policy to use on old segments. Possible values include 'delete', 'compact', or a comma-separated list of them. The default policy ('delete') will discard old segments when their retention time or size limit has been reached. The 'compact' setting will enable log compaction on the topic."
879
+ },
880
+ "config": {
881
+ "type": "object",
882
+ "properties": {
883
+ "cleanup_policy": {
884
+ "enum": [
885
+ "delete",
886
+ "compact",
887
+ "compact,delete"
888
+ ],
889
+ "description": "The retention policy to use on old segments. Possible values include 'delete', 'compact', or a comma-separated list of them. The default policy ('delete') will discard old segments when their retention time or size limit has been reached. The 'compact' setting will enable log compaction on the topic."
890
+ },
891
+ "compression_type": {
892
+ "enum": [
893
+ "snappy",
894
+ "gzip",
895
+ "lz4",
896
+ "producer",
897
+ "uncompressed",
898
+ "zstd"
899
+ ],
900
+ "description": "Specify the final compression type for a given topic. This configuration accepts the standard compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It additionally accepts 'uncompressed' which is equivalent to no compression; and 'producer' which means retain the original compression codec set by the producer."
901
+ },
902
+ "delete_retention_ms": {
903
+ "type": "integer",
904
+ "description": "The amount of time to retain delete tombstone markers for log compacted topics. This setting also gives a bound on the time in which a consumer must complete a read if they begin from offset 0 to ensure that they get a valid snapshot of the final stage (otherwise delete tombstones may be collected before they complete their scan).",
905
+ "minimum": 0
906
+ },
907
+ "diskless_enable": {
908
+ "type": "boolean",
909
+ "description": "Indicates whether diskless should be enabled. This is only available for BYOC services with Diskless feature enabled."
910
+ },
911
+ "file_delete_delay_ms": {
912
+ "type": "integer",
913
+ "description": "The time to wait before deleting a file from the filesystem.",
914
+ "minimum": 0
915
+ },
916
+ "flush_messages": {
917
+ "type": "integer",
918
+ "description": "This setting allows specifying an interval at which we will force an fsync of data written to the log. For example if this was set to 1 we would fsync after every message; if it were 5 we would fsync after every five messages. In general we recommend you not set this and use replication for durability and allow the operating system's background flush capabilities as it is more efficient.",
919
+ "minimum": 0
920
+ },
921
+ "flush_ms": {
922
+ "type": "integer",
923
+ "description": "This setting allows specifying a time interval at which we will force an fsync of data written to the log. For example if this was set to 1000 we would fsync after 1000 ms had passed. In general we recommend you not set this and use replication for durability and allow the operating system's background flush capabilities as it is more efficient.",
924
+ "minimum": 0
925
+ },
926
+ "index_interval_bytes": {
927
+ "type": "integer",
928
+ "description": "This setting controls how frequently Kafka adds an index entry to its offset index. The default setting ensures that we index a message roughly every 4096 bytes. More indexing allows reads to jump closer to the exact position in the log but makes the index larger. You probably don't need to change this.",
929
+ "minimum": 0
930
+ },
931
+ "local_retention_bytes": {
932
+ "type": "integer",
933
+ "description": "This configuration controls the maximum bytes tiered storage will retain segment files locally before it will discard old log segments to free up space. If set to -2, the limit is equal to overall retention time. If set to -1, no limit is applied but it's possible only if overall retention is also -1."
934
+ },
935
+ "local_retention_ms": {
936
+ "type": "integer",
937
+ "description": "This configuration controls the maximum time tiered storage will retain segment files locally before it will discard old log segments to free up space. If set to -2, the time limit is equal to overall retention time. If set to -1, no time limit is applied but it's possible only if overall retention is also -1."
938
+ },
939
+ "max_compaction_lag_ms": {
940
+ "type": "integer",
941
+ "description": "The maximum time a message will remain ineligible for compaction in the log. Only applicable for logs that are being compacted.",
942
+ "minimum": 0
943
+ },
944
+ "max_message_bytes": {
945
+ "type": "integer",
946
+ "description": "The largest record batch size allowed by Kafka (after compression if compression is enabled). If this is increased and there are consumers older than 0.10.2, the consumers' fetch size must also be increased so that the they can fetch record batches this large. In the latest message format version, records are always grouped into batches for efficiency. In previous message format versions, uncompressed records are not grouped into batches and this limit only applies to a single record in that case.",
947
+ "minimum": 0
948
+ },
949
+ "message_downconversion_enable": {
950
+ "type": "boolean",
951
+ "description": "This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests. When set to false, broker will not perform down-conversion for consumers expecting an older message format. The broker responds with UNSUPPORTED_VERSION error for consume requests from such older clients. This configuration does not apply to any message format conversion that might be required for replication to followers."
952
+ },
953
+ "message_format_version": {
954
+ "enum": [
955
+ "0.8.0",
956
+ "0.8.1",
957
+ "0.8.2",
958
+ "0.9.0",
959
+ "0.10.0",
960
+ "0.10.0-IV0",
961
+ "0.10.0-IV1",
962
+ "0.10.1",
963
+ "0.10.1-IV0",
964
+ "0.10.1-IV1",
965
+ "0.10.1-IV2",
966
+ "0.10.2",
967
+ "0.10.2-IV0",
968
+ "0.11.0",
969
+ "0.11.0-IV0",
970
+ "0.11.0-IV1",
971
+ "0.11.0-IV2",
972
+ "1.0",
973
+ "1.0-IV0",
974
+ "1.1",
975
+ "1.1-IV0",
976
+ "2.0",
977
+ "2.0-IV0",
978
+ "2.0-IV1",
979
+ "2.1",
980
+ "2.1-IV0",
981
+ "2.1-IV1",
982
+ "2.1-IV2",
983
+ "2.2",
984
+ "2.2-IV0",
985
+ "2.2-IV1",
986
+ "2.3",
987
+ "2.3-IV0",
988
+ "2.3-IV1",
989
+ "2.4",
990
+ "2.4-IV0",
991
+ "2.4-IV1",
992
+ "2.5",
993
+ "2.5-IV0",
994
+ "2.6",
995
+ "2.6-IV0",
996
+ "2.7",
997
+ "2.7-IV0",
998
+ "2.7-IV1",
999
+ "2.7-IV2",
1000
+ "2.8",
1001
+ "2.8-IV0",
1002
+ "2.8-IV1",
1003
+ "3.0",
1004
+ "3.0-IV0",
1005
+ "3.0-IV1",
1006
+ "3.1",
1007
+ "3.1-IV0",
1008
+ "3.2",
1009
+ "3.2-IV0",
1010
+ "3.3",
1011
+ "3.3-IV0",
1012
+ "3.3-IV1",
1013
+ "3.3-IV2",
1014
+ "3.3-IV3",
1015
+ "3.4",
1016
+ "3.4-IV0",
1017
+ "3.5",
1018
+ "3.5-IV0",
1019
+ "3.5-IV1",
1020
+ "3.5-IV2",
1021
+ "3.6",
1022
+ "3.6-IV0",
1023
+ "3.6-IV1",
1024
+ "3.6-IV2",
1025
+ "3.7",
1026
+ "3.7-IV0",
1027
+ "3.7-IV1",
1028
+ "3.7-IV2",
1029
+ "3.7-IV3",
1030
+ "3.7-IV4",
1031
+ "3.8",
1032
+ "3.8-IV0",
1033
+ "3.9",
1034
+ "3.9-IV0",
1035
+ "3.9-IV1",
1036
+ "4.0",
1037
+ "4.0-IV0",
1038
+ "4.1",
1039
+ "4.1-IV0"
1040
+ ],
1041
+ "description": "Specify the message format version the broker will use to append messages to the logs. The value should be a valid ApiVersion. Some examples are: 0.8.2, 0.9.0.0, 0.10.0, check ApiVersion for more details. By setting a particular message format version, the user is certifying that all the existing messages on disk are smaller or equal than the specified version. Setting this value incorrectly will cause consumers with older versions to break as they will receive messages with a format that they don't understand. Deprecated in Kafka 4.0+: this configuration is removed and any supplied value will be ignored; for services upgraded to 4.0+, the returned value may be 'None'."
1042
+ },
1043
+ "message_timestamp_after_max_ms": {
1044
+ "type": "integer",
1045
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. Applies only for messages with timestamps later than the broker's timestamp.",
1046
+ "minimum": 0
1047
+ },
1048
+ "message_timestamp_before_max_ms": {
1049
+ "type": "integer",
1050
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. Applies only for messages with timestamps earlier than the broker's timestamp.",
1051
+ "minimum": 0
1052
+ },
1053
+ "message_timestamp_difference_max_ms": {
1054
+ "type": "integer",
1055
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. This configuration is ignored if message.timestamp.type=LogAppendTime.",
1056
+ "minimum": 0
1057
+ },
1058
+ "message_timestamp_type": {
1059
+ "enum": [
1060
+ "CreateTime",
1061
+ "LogAppendTime"
1062
+ ],
1063
+ "description": "Define whether the timestamp in the message is message create time or log append time."
1064
+ },
1065
+ "min_cleanable_dirty_ratio": {
1066
+ "type": "number",
1067
+ "description": "This configuration controls how frequently the log compactor will attempt to clean the log (assuming log compaction is enabled). By default we will avoid cleaning a log where more than 50% of the log has been compacted. This ratio bounds the maximum space wasted in the log by duplicates (at 50% at most 50% of the log could be duplicates). A higher ratio will mean fewer, more efficient cleanings but will mean more wasted space in the log. If the max.compaction.lag.ms or the min.compaction.lag.ms configurations are also specified, then the log compactor considers the log to be eligible for compaction as soon as either: (i) the dirty ratio threshold has been met and the log has had dirty (uncompacted) records for at least the min.compaction.lag.ms duration, or (ii) if the log has had dirty (uncompacted) records for at most the max.compaction.lag.ms period.",
1068
+ "minimum": 0,
1069
+ "maximum": 1
1070
+ },
1071
+ "min_compaction_lag_ms": {
1072
+ "type": "integer",
1073
+ "description": "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.",
1074
+ "minimum": 0
1075
+ },
1076
+ "min_insync_replicas": {
1077
+ "type": "integer",
1078
+ "description": "When a producer sets acks to 'all' (or '-1'), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend). When used together, min.insync.replicas and acks allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of 'all'. This will ensure that the producer raises an exception if a majority of replicas do not receive a write.",
1079
+ "minimum": 1
1080
+ },
1081
+ "preallocate": {
1082
+ "type": "boolean",
1083
+ "description": "True if we should preallocate the file on disk when creating a new log segment."
1084
+ },
1085
+ "remote_storage_enable": {
1086
+ "type": "boolean",
1087
+ "description": "Indicates whether tiered storage should be enabled. This is only available for services with Tiered Storage feature enabled."
1088
+ },
1089
+ "retention_bytes": {
1090
+ "type": "integer",
1091
+ "description": "This configuration controls the maximum size a partition (which consists of log segments) can grow to before we will discard old log segments to free up space if we are using the 'delete' retention policy. By default there is no size limit only a time limit. Since this limit is enforced at the partition level, multiply it by the number of partitions to compute the topic retention in bytes."
1092
+ },
1093
+ "retention_ms": {
1094
+ "type": "integer",
1095
+ "description": "This configuration controls the maximum time we will retain a log before we will discard old log segments to free up space if we are using the 'delete' retention policy. This represents an SLA on how soon consumers must read their data. If set to -1, no time limit is applied."
1096
+ },
1097
+ "segment_bytes": {
1098
+ "type": "integer",
1099
+ "description": "This configuration controls the segment file size for the log. Retention and cleaning is always done a file at a time so a larger segment size means fewer files but less granular control over retention. Setting this to a very low value has consequences, and the Aiven management plane ignores values less than 10 megabytes.",
1100
+ "minimum": 14
1101
+ },
1102
+ "segment_index_bytes": {
1103
+ "type": "integer",
1104
+ "description": "This configuration controls the size of the index that maps offsets to file positions. We preallocate this index file and shrink it only after log rolls. You generally should not need to change this setting.",
1105
+ "minimum": 0
1106
+ },
1107
+ "segment_jitter_ms": {
1108
+ "type": "integer",
1109
+ "description": "The maximum random jitter subtracted from the scheduled segment roll time to avoid thundering herds of segment rolling",
1110
+ "minimum": 0
1111
+ },
1112
+ "segment_ms": {
1113
+ "type": "integer",
1114
+ "description": "This configuration controls the period of time after which Kafka will force the log to roll even if the segment file isn't full to ensure that retention can delete or compact old data. Setting this to a very low value has consequences, and the Aiven management plane ignores values less than 10 seconds.",
1115
+ "minimum": 1
1116
+ },
1117
+ "unclean_leader_election_enable": {
1118
+ "type": "boolean",
1119
+ "description": "Indicates whether to enable replicas not in the ISR set to be elected as leader as a last resort, even though doing so may result in data loss."
1120
+ }
1121
+ },
1122
+ "description": "Kafka topic configuration"
1123
+ },
1124
+ "min_insync_replicas": {
1125
+ "type": "integer",
1126
+ "description": "When a producer sets acks to 'all' (or '-1'), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend). When used together, min.insync.replicas and acks allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of 'all'. This will ensure that the producer raises an exception if a majority of replicas do not receive a write.",
1127
+ "minimum": 1
1128
+ },
1129
+ "owner_user_group_id": {
1130
+ "type": "string",
1131
+ "description": "The user group that owns this topic",
1132
+ "minLength": 1,
1133
+ "maxLength": 36
1134
+ },
1135
+ "partitions": {
1136
+ "type": "integer",
1137
+ "description": "Number of partitions",
1138
+ "minimum": 1,
1139
+ "maximum": 1000000
1140
+ },
1141
+ "replication": {
1142
+ "type": "integer",
1143
+ "description": "Number of replicas",
1144
+ "minimum": 1
1145
+ },
1146
+ "retention_bytes": {
1147
+ "type": "integer",
1148
+ "description": "This configuration controls the maximum size a partition (which consists of log segments) can grow to before we will discard old log segments to free up space if we are using the 'delete' retention policy. By default there is no size limit only a time limit. Since this limit is enforced at the partition level, multiply it by the number of partitions to compute the topic retention in bytes."
1149
+ },
1150
+ "retention_hours": {
1151
+ "type": "integer",
1152
+ "description": "DEPRECATED: use config.retention_ms",
1153
+ "maximum": 2562047788015
1154
+ },
1155
+ "tags": {
1156
+ "type": "array",
1157
+ "description": "Topic tags",
1158
+ "items": {
1159
+ "type": "object",
1160
+ "properties": {
1161
+ "key": {
1162
+ "type": "string",
1163
+ "description": "Tag key",
1164
+ "minLength": 1,
1165
+ "maxLength": 64
1166
+ },
1167
+ "value": {
1168
+ "type": "string",
1169
+ "description": "Tag value",
1170
+ "minLength": 0,
1171
+ "maxLength": 256
1172
+ }
1173
+ },
1174
+ "required": [
1175
+ "key",
1176
+ "value"
1177
+ ]
1178
+ }
1179
+ },
1180
+ "topic_description": {
1181
+ "type": "string",
1182
+ "description": "Topic description",
1183
+ "minLength": 1,
1184
+ "maxLength": 256
1185
+ },
1186
+ "topic_name": {
1187
+ "type": "string",
1188
+ "description": "Topic name",
1189
+ "minLength": 1,
1190
+ "maxLength": 249
1191
+ }
1192
+ },
1193
+ "required": [
1194
+ "project",
1195
+ "service_name",
1196
+ "topic_name"
1197
+ ]
1198
+ },
1199
+ "strict": false,
1200
+ "title": "Topic Create",
1201
+ "description": "Create a Kafka topic.\n\n**IMPORTANT:** Always include `partitions` and `replication` in the request. The API may accept them as optional but topics created without these fields may not work correctly.\n\nRecommended defaults:\n- `partitions`: 1 (or more depending on throughput needs)\n- `replication`: 3 (must not exceed the number of brokers in the cluster)\n\nAfter creation, do NOT immediately call `aiven_kafka_topic_get` or other tools on this topic. Tell the user the topic was created and will be available shortly."
1202
+ },
1203
+ "aiven_kafka_topic_get": {
1204
+ "schema": {
1205
+ "type": "object",
1206
+ "properties": {
1207
+ "project": {
1208
+ "type": "string"
1209
+ },
1210
+ "service_name": {
1211
+ "type": "string"
1212
+ },
1213
+ "topic_name": {
1214
+ "type": "string"
1215
+ }
1216
+ },
1217
+ "required": [
1218
+ "project",
1219
+ "service_name",
1220
+ "topic_name"
1221
+ ]
1222
+ },
1223
+ "strict": true,
1224
+ "title": "Topic Get",
1225
+ "description": "Get Kafka topic info"
1226
+ },
1227
+ "aiven_kafka_topic_update": {
1228
+ "schema": {
1229
+ "type": "object",
1230
+ "properties": {
1231
+ "project": {
1232
+ "type": "string"
1233
+ },
1234
+ "service_name": {
1235
+ "type": "string"
1236
+ },
1237
+ "topic_name": {
1238
+ "type": "string"
1239
+ },
1240
+ "config": {
1241
+ "type": "object",
1242
+ "properties": {
1243
+ "cleanup_policy": {
1244
+ "enum": [
1245
+ "delete",
1246
+ "compact",
1247
+ "compact,delete"
1248
+ ],
1249
+ "description": "The retention policy to use on old segments. Possible values include 'delete', 'compact', or a comma-separated list of them. The default policy ('delete') will discard old segments when their retention time or size limit has been reached. The 'compact' setting will enable log compaction on the topic."
1250
+ },
1251
+ "compression_type": {
1252
+ "enum": [
1253
+ "snappy",
1254
+ "gzip",
1255
+ "lz4",
1256
+ "producer",
1257
+ "uncompressed",
1258
+ "zstd"
1259
+ ],
1260
+ "description": "Specify the final compression type for a given topic. This configuration accepts the standard compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It additionally accepts 'uncompressed' which is equivalent to no compression; and 'producer' which means retain the original compression codec set by the producer."
1261
+ },
1262
+ "delete_retention_ms": {
1263
+ "type": "integer",
1264
+ "description": "The amount of time to retain delete tombstone markers for log compacted topics. This setting also gives a bound on the time in which a consumer must complete a read if they begin from offset 0 to ensure that they get a valid snapshot of the final stage (otherwise delete tombstones may be collected before they complete their scan).",
1265
+ "minimum": 0
1266
+ },
1267
+ "diskless_enable": {
1268
+ "type": "boolean",
1269
+ "description": "Indicates whether diskless should be enabled. This is only available for BYOC services with Diskless feature enabled."
1270
+ },
1271
+ "file_delete_delay_ms": {
1272
+ "type": "integer",
1273
+ "description": "The time to wait before deleting a file from the filesystem.",
1274
+ "minimum": 0
1275
+ },
1276
+ "flush_messages": {
1277
+ "type": "integer",
1278
+ "description": "This setting allows specifying an interval at which we will force an fsync of data written to the log. For example if this was set to 1 we would fsync after every message; if it were 5 we would fsync after every five messages. In general we recommend you not set this and use replication for durability and allow the operating system's background flush capabilities as it is more efficient.",
1279
+ "minimum": 0
1280
+ },
1281
+ "flush_ms": {
1282
+ "type": "integer",
1283
+ "description": "This setting allows specifying a time interval at which we will force an fsync of data written to the log. For example if this was set to 1000 we would fsync after 1000 ms had passed. In general we recommend you not set this and use replication for durability and allow the operating system's background flush capabilities as it is more efficient.",
1284
+ "minimum": 0
1285
+ },
1286
+ "index_interval_bytes": {
1287
+ "type": "integer",
1288
+ "description": "This setting controls how frequently Kafka adds an index entry to its offset index. The default setting ensures that we index a message roughly every 4096 bytes. More indexing allows reads to jump closer to the exact position in the log but makes the index larger. You probably don't need to change this.",
1289
+ "minimum": 0
1290
+ },
1291
+ "local_retention_bytes": {
1292
+ "type": "integer",
1293
+ "description": "This configuration controls the maximum bytes tiered storage will retain segment files locally before it will discard old log segments to free up space. If set to -2, the limit is equal to overall retention time. If set to -1, no limit is applied but it's possible only if overall retention is also -1."
1294
+ },
1295
+ "local_retention_ms": {
1296
+ "type": "integer",
1297
+ "description": "This configuration controls the maximum time tiered storage will retain segment files locally before it will discard old log segments to free up space. If set to -2, the time limit is equal to overall retention time. If set to -1, no time limit is applied but it's possible only if overall retention is also -1."
1298
+ },
1299
+ "max_compaction_lag_ms": {
1300
+ "type": "integer",
1301
+ "description": "The maximum time a message will remain ineligible for compaction in the log. Only applicable for logs that are being compacted.",
1302
+ "minimum": 0
1303
+ },
1304
+ "max_message_bytes": {
1305
+ "type": "integer",
1306
+ "description": "The largest record batch size allowed by Kafka (after compression if compression is enabled). If this is increased and there are consumers older than 0.10.2, the consumers' fetch size must also be increased so that the they can fetch record batches this large. In the latest message format version, records are always grouped into batches for efficiency. In previous message format versions, uncompressed records are not grouped into batches and this limit only applies to a single record in that case.",
1307
+ "minimum": 0
1308
+ },
1309
+ "message_downconversion_enable": {
1310
+ "type": "boolean",
1311
+ "description": "This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests. When set to false, broker will not perform down-conversion for consumers expecting an older message format. The broker responds with UNSUPPORTED_VERSION error for consume requests from such older clients. This configuration does not apply to any message format conversion that might be required for replication to followers."
1312
+ },
1313
+ "message_format_version": {
1314
+ "enum": [
1315
+ "0.8.0",
1316
+ "0.8.1",
1317
+ "0.8.2",
1318
+ "0.9.0",
1319
+ "0.10.0",
1320
+ "0.10.0-IV0",
1321
+ "0.10.0-IV1",
1322
+ "0.10.1",
1323
+ "0.10.1-IV0",
1324
+ "0.10.1-IV1",
1325
+ "0.10.1-IV2",
1326
+ "0.10.2",
1327
+ "0.10.2-IV0",
1328
+ "0.11.0",
1329
+ "0.11.0-IV0",
1330
+ "0.11.0-IV1",
1331
+ "0.11.0-IV2",
1332
+ "1.0",
1333
+ "1.0-IV0",
1334
+ "1.1",
1335
+ "1.1-IV0",
1336
+ "2.0",
1337
+ "2.0-IV0",
1338
+ "2.0-IV1",
1339
+ "2.1",
1340
+ "2.1-IV0",
1341
+ "2.1-IV1",
1342
+ "2.1-IV2",
1343
+ "2.2",
1344
+ "2.2-IV0",
1345
+ "2.2-IV1",
1346
+ "2.3",
1347
+ "2.3-IV0",
1348
+ "2.3-IV1",
1349
+ "2.4",
1350
+ "2.4-IV0",
1351
+ "2.4-IV1",
1352
+ "2.5",
1353
+ "2.5-IV0",
1354
+ "2.6",
1355
+ "2.6-IV0",
1356
+ "2.7",
1357
+ "2.7-IV0",
1358
+ "2.7-IV1",
1359
+ "2.7-IV2",
1360
+ "2.8",
1361
+ "2.8-IV0",
1362
+ "2.8-IV1",
1363
+ "3.0",
1364
+ "3.0-IV0",
1365
+ "3.0-IV1",
1366
+ "3.1",
1367
+ "3.1-IV0",
1368
+ "3.2",
1369
+ "3.2-IV0",
1370
+ "3.3",
1371
+ "3.3-IV0",
1372
+ "3.3-IV1",
1373
+ "3.3-IV2",
1374
+ "3.3-IV3",
1375
+ "3.4",
1376
+ "3.4-IV0",
1377
+ "3.5",
1378
+ "3.5-IV0",
1379
+ "3.5-IV1",
1380
+ "3.5-IV2",
1381
+ "3.6",
1382
+ "3.6-IV0",
1383
+ "3.6-IV1",
1384
+ "3.6-IV2",
1385
+ "3.7",
1386
+ "3.7-IV0",
1387
+ "3.7-IV1",
1388
+ "3.7-IV2",
1389
+ "3.7-IV3",
1390
+ "3.7-IV4",
1391
+ "3.8",
1392
+ "3.8-IV0",
1393
+ "3.9",
1394
+ "3.9-IV0",
1395
+ "3.9-IV1",
1396
+ "4.0",
1397
+ "4.0-IV0",
1398
+ "4.1",
1399
+ "4.1-IV0"
1400
+ ],
1401
+ "description": "Specify the message format version the broker will use to append messages to the logs. The value should be a valid ApiVersion. Some examples are: 0.8.2, 0.9.0.0, 0.10.0, check ApiVersion for more details. By setting a particular message format version, the user is certifying that all the existing messages on disk are smaller or equal than the specified version. Setting this value incorrectly will cause consumers with older versions to break as they will receive messages with a format that they don't understand. Deprecated in Kafka 4.0+: this configuration is removed and any supplied value will be ignored; for services upgraded to 4.0+, the returned value may be 'None'."
1402
+ },
1403
+ "message_timestamp_after_max_ms": {
1404
+ "type": "integer",
1405
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. Applies only for messages with timestamps later than the broker's timestamp.",
1406
+ "minimum": 0
1407
+ },
1408
+ "message_timestamp_before_max_ms": {
1409
+ "type": "integer",
1410
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. Applies only for messages with timestamps earlier than the broker's timestamp.",
1411
+ "minimum": 0
1412
+ },
1413
+ "message_timestamp_difference_max_ms": {
1414
+ "type": "integer",
1415
+ "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. This configuration is ignored if message.timestamp.type=LogAppendTime.",
1416
+ "minimum": 0
1417
+ },
1418
+ "message_timestamp_type": {
1419
+ "enum": [
1420
+ "CreateTime",
1421
+ "LogAppendTime"
1422
+ ],
1423
+ "description": "Define whether the timestamp in the message is message create time or log append time."
1424
+ },
1425
+ "min_cleanable_dirty_ratio": {
1426
+ "type": "number",
1427
+ "description": "This configuration controls how frequently the log compactor will attempt to clean the log (assuming log compaction is enabled). By default we will avoid cleaning a log where more than 50% of the log has been compacted. This ratio bounds the maximum space wasted in the log by duplicates (at 50% at most 50% of the log could be duplicates). A higher ratio will mean fewer, more efficient cleanings but will mean more wasted space in the log. If the max.compaction.lag.ms or the min.compaction.lag.ms configurations are also specified, then the log compactor considers the log to be eligible for compaction as soon as either: (i) the dirty ratio threshold has been met and the log has had dirty (uncompacted) records for at least the min.compaction.lag.ms duration, or (ii) if the log has had dirty (uncompacted) records for at most the max.compaction.lag.ms period.",
1428
+ "minimum": 0,
1429
+ "maximum": 1
1430
+ },
1431
+ "min_compaction_lag_ms": {
1432
+ "type": "integer",
1433
+ "description": "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.",
1434
+ "minimum": 0
1435
+ },
1436
+ "min_insync_replicas": {
1437
+ "type": "integer",
1438
+ "description": "When a producer sets acks to 'all' (or '-1'), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend). When used together, min.insync.replicas and acks allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of 'all'. This will ensure that the producer raises an exception if a majority of replicas do not receive a write.",
1439
+ "minimum": 1
1440
+ },
1441
+ "preallocate": {
1442
+ "type": "boolean",
1443
+ "description": "True if we should preallocate the file on disk when creating a new log segment."
1444
+ },
1445
+ "remote_storage_enable": {
1446
+ "type": "boolean",
1447
+ "description": "Indicates whether tiered storage should be enabled. This is only available for services with Tiered Storage feature enabled."
1448
+ },
1449
+ "retention_bytes": {
1450
+ "type": "integer",
1451
+ "description": "This configuration controls the maximum size a partition (which consists of log segments) can grow to before we will discard old log segments to free up space if we are using the 'delete' retention policy. By default there is no size limit only a time limit. Since this limit is enforced at the partition level, multiply it by the number of partitions to compute the topic retention in bytes."
1452
+ },
1453
+ "retention_ms": {
1454
+ "type": "integer",
1455
+ "description": "This configuration controls the maximum time we will retain a log before we will discard old log segments to free up space if we are using the 'delete' retention policy. This represents an SLA on how soon consumers must read their data. If set to -1, no time limit is applied."
1456
+ },
1457
+ "segment_bytes": {
1458
+ "type": "integer",
1459
+ "description": "This configuration controls the segment file size for the log. Retention and cleaning is always done a file at a time so a larger segment size means fewer files but less granular control over retention. Setting this to a very low value has consequences, and the Aiven management plane ignores values less than 10 megabytes.",
1460
+ "minimum": 14
1461
+ },
1462
+ "segment_index_bytes": {
1463
+ "type": "integer",
1464
+ "description": "This configuration controls the size of the index that maps offsets to file positions. We preallocate this index file and shrink it only after log rolls. You generally should not need to change this setting.",
1465
+ "minimum": 0
1466
+ },
1467
+ "segment_jitter_ms": {
1468
+ "type": "integer",
1469
+ "description": "The maximum random jitter subtracted from the scheduled segment roll time to avoid thundering herds of segment rolling",
1470
+ "minimum": 0
1471
+ },
1472
+ "segment_ms": {
1473
+ "type": "integer",
1474
+ "description": "This configuration controls the period of time after which Kafka will force the log to roll even if the segment file isn't full to ensure that retention can delete or compact old data. Setting this to a very low value has consequences, and the Aiven management plane ignores values less than 10 seconds.",
1475
+ "minimum": 1
1476
+ },
1477
+ "unclean_leader_election_enable": {
1478
+ "type": "boolean",
1479
+ "description": "Indicates whether to enable replicas not in the ISR set to be elected as leader as a last resort, even though doing so may result in data loss."
1480
+ }
1481
+ },
1482
+ "description": "Kafka topic configuration"
1483
+ },
1484
+ "min_insync_replicas": {
1485
+ "type": "integer",
1486
+ "description": "When a producer sets acks to 'all' (or '-1'), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend). When used together, min.insync.replicas and acks allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of 'all'. This will ensure that the producer raises an exception if a majority of replicas do not receive a write.",
1487
+ "minimum": 1
1488
+ },
1489
+ "owner_user_group_id": {
1490
+ "type": "string",
1491
+ "description": "The user group that owns this topic",
1492
+ "minLength": 1,
1493
+ "maxLength": 36
1494
+ },
1495
+ "partitions": {
1496
+ "type": "integer",
1497
+ "description": "Number of partitions",
1498
+ "minimum": 1,
1499
+ "maximum": 1000000
1500
+ },
1501
+ "replication": {
1502
+ "type": "integer",
1503
+ "description": "Number of replicas",
1504
+ "minimum": 1
1505
+ },
1506
+ "retention_bytes": {
1507
+ "type": "integer",
1508
+ "description": "This configuration controls the maximum size a partition (which consists of log segments) can grow to before we will discard old log segments to free up space if we are using the 'delete' retention policy. By default there is no size limit only a time limit. Since this limit is enforced at the partition level, multiply it by the number of partitions to compute the topic retention in bytes."
1509
+ },
1510
+ "retention_hours": {
1511
+ "type": "integer",
1512
+ "description": "DEPRECATED: use config.retention_ms",
1513
+ "maximum": 2562047788015
1514
+ },
1515
+ "tags": {
1516
+ "type": "array",
1517
+ "description": "Topic tags",
1518
+ "items": {
1519
+ "type": "object",
1520
+ "properties": {
1521
+ "key": {
1522
+ "type": "string",
1523
+ "description": "Tag key",
1524
+ "minLength": 1,
1525
+ "maxLength": 64
1526
+ },
1527
+ "value": {
1528
+ "type": "string",
1529
+ "description": "Tag value",
1530
+ "minLength": 0,
1531
+ "maxLength": 256
1532
+ }
1533
+ },
1534
+ "required": [
1535
+ "key",
1536
+ "value"
1537
+ ]
1538
+ }
1539
+ },
1540
+ "topic_description": {
1541
+ "type": "string",
1542
+ "description": "Topic description",
1543
+ "minLength": 1,
1544
+ "maxLength": 256
1545
+ }
1546
+ },
1547
+ "required": [
1548
+ "project",
1549
+ "service_name",
1550
+ "topic_name"
1551
+ ]
1552
+ },
1553
+ "strict": false,
1554
+ "title": "Topic Update",
1555
+ "description": "Update a Kafka topic"
1556
+ },
1557
+ "aiven_kafka_topic_delete": {
1558
+ "schema": {
1559
+ "type": "object",
1560
+ "properties": {
1561
+ "project": {
1562
+ "type": "string"
1563
+ },
1564
+ "service_name": {
1565
+ "type": "string"
1566
+ },
1567
+ "topic_name": {
1568
+ "type": "string"
1569
+ }
1570
+ },
1571
+ "required": [
1572
+ "project",
1573
+ "service_name",
1574
+ "topic_name"
1575
+ ]
1576
+ },
1577
+ "strict": true,
1578
+ "title": "Topic Delete",
1579
+ "description": "Delete a Kafka topic"
1580
+ },
1581
+ "aiven_kafka_topic_message_list": {
1582
+ "schema": {
1583
+ "type": "object",
1584
+ "properties": {
1585
+ "project": {
1586
+ "type": "string"
1587
+ },
1588
+ "service_name": {
1589
+ "type": "string"
1590
+ },
1591
+ "topic_name": {
1592
+ "type": "string"
1593
+ },
1594
+ "format": {
1595
+ "enum": [
1596
+ "binary",
1597
+ "json",
1598
+ "avro",
1599
+ "protobuf",
1600
+ "jsonschema"
1601
+ ],
1602
+ "description": "The format of consumed messages, which is used to convert messages into a JSON-compatible form. If unspecified, defaults to binary"
1603
+ },
1604
+ "max_bytes": {
1605
+ "type": "integer",
1606
+ "description": "The maximum number of bytes of unencoded keys and values that should be included in the response. This provides approximate control over the size of responses and the amount of memory required to store the decoded response. The actual limit will be the minimum of this setting and the server-side configuration consumer.request.max.bytes. Default is unlimited",
1607
+ "minimum": 1024,
1608
+ "maximum": 1000000000
1609
+ },
1610
+ "partitions": {
1611
+ "type": "object",
1612
+ "additionalProperties": true
1613
+ },
1614
+ "timeout": {
1615
+ "type": "integer",
1616
+ "description": "The maximum total time to wait for messages for a request if the maximum request size has not yet been reached",
1617
+ "minimum": 3000,
1618
+ "maximum": 40000
1619
+ }
1620
+ },
1621
+ "required": [
1622
+ "project",
1623
+ "service_name",
1624
+ "topic_name",
1625
+ "partitions"
1626
+ ]
1627
+ },
1628
+ "strict": false,
1629
+ "title": "Topic Message List",
1630
+ "description": "Consume messages from a Kafka topic.\n\n**REQUIRED BEFORE CALLING THIS TOOL — follow these steps in order:**\n1. Kafka REST API must be enabled. Call `aiven_service_update` with `user_config: {\"kafka_rest\": true}` if not already enabled.\n2. Call `aiven_service_get` once to check if `components` contains `kafka_rest` with `state: \"running\"`. If not ready, tell the user to wait and ask them when to re-check. Do NOT poll in a loop.\n\n**Format:** The `format` must match how messages were produced. Use `\"binary\"` for Debezium CDC or any schema-encoded messages (values are returned as base64). Use `\"json\"` only for plain JSON messages produced without a schema.\n\nThe `partitions` parameter is an object keyed by partition number (as a string), each with an `offset` value.\n\n**Example:**\n```\naiven_kafka_topic_message_list(\n project=\"my-project\",\n service_name=\"my-kafka\",\n topic_name=\"my-topic\",\n partitions={\"0\": {\"offset\": 0}},\n format=\"binary\"\n)\n```"
1631
+ },
1632
+ "aiven_kafka_topic_message_produce": {
1633
+ "schema": {
1634
+ "type": "object",
1635
+ "properties": {
1636
+ "project": {
1637
+ "type": "string"
1638
+ },
1639
+ "service_name": {
1640
+ "type": "string"
1641
+ },
1642
+ "topic_name": {
1643
+ "type": "string"
1644
+ },
1645
+ "format": {
1646
+ "enum": [
1647
+ "binary",
1648
+ "json",
1649
+ "avro",
1650
+ "protobuf",
1651
+ "jsonschema"
1652
+ ],
1653
+ "description": "The format of the content."
1654
+ },
1655
+ "key_schema": {
1656
+ "type": "string",
1657
+ "description": "Full schema encoded as a string (e.g. JSON serialized for Avro data)",
1658
+ "minLength": 18,
1659
+ "maxLength": 2048
1660
+ },
1661
+ "key_schema_id": {
1662
+ "type": "integer",
1663
+ "description": "ID returned by a previous request using the same schema. This ID corresponds to the ID of the schema in the registry.",
1664
+ "minimum": 1,
1665
+ "maximum": 50000
1666
+ },
1667
+ "records": {
1668
+ "type": "array",
1669
+ "description": "List of records to produce to the topic",
1670
+ "items": {
1671
+ "type": "object",
1672
+ "properties": {
1673
+ "key": {
1674
+ "type": "object",
1675
+ "additionalProperties": true
1676
+ },
1677
+ "partition": {
1678
+ "type": "integer",
1679
+ "description": "Optionally specify the partition where to produce the record",
1680
+ "minimum": 0,
1681
+ "maximum": 10000
1682
+ },
1683
+ "value": {
1684
+ "type": "object",
1685
+ "additionalProperties": true
1686
+ }
1687
+ }
1688
+ }
1689
+ },
1690
+ "value_schema": {
1691
+ "type": "string",
1692
+ "description": "Full schema encoded as a string (e.g. JSON serialized for Avro data)",
1693
+ "minLength": 18,
1694
+ "maxLength": 2048
1695
+ },
1696
+ "value_schema_id": {
1697
+ "type": "integer",
1698
+ "description": "ID returned by a previous request using the same schema. This ID corresponds to the ID of the schema in the registry.",
1699
+ "minimum": 1,
1700
+ "maximum": 50000
1701
+ }
1702
+ },
1703
+ "required": [
1704
+ "project",
1705
+ "service_name",
1706
+ "topic_name",
1707
+ "format",
1708
+ "records"
1709
+ ]
1710
+ },
1711
+ "strict": false,
1712
+ "title": "Topic Message Produce",
1713
+ "description": "Produce messages into a Kafka topic.\n\n**REQUIRED BEFORE CALLING THIS TOOL — follow these steps in order:**\n1. Kafka REST API must be enabled. Call `aiven_service_update` with `user_config: {\"kafka_rest\": true}` if not already enabled.\n2. Call `aiven_service_get` once to check if `components` contains `kafka_rest` with `state: \"running\"`. If not ready, tell the user to wait and ask them when to re-check. Do NOT poll in a loop."
1714
+ },
1715
+ "aiven_kafka_connect_available_connectors": {
1716
+ "schema": {
1717
+ "type": "object",
1718
+ "properties": {
1719
+ "project": {
1720
+ "type": "string"
1721
+ },
1722
+ "service_name": {
1723
+ "type": "string"
1724
+ }
1725
+ },
1726
+ "required": [
1727
+ "project",
1728
+ "service_name"
1729
+ ]
1730
+ },
1731
+ "strict": true,
1732
+ "title": "Connect Available Connectors",
1733
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1734
+ },
1735
+ "aiven_kafka_connect_list": {
1736
+ "schema": {
1737
+ "type": "object",
1738
+ "properties": {
1739
+ "project": {
1740
+ "type": "string"
1741
+ },
1742
+ "service_name": {
1743
+ "type": "string"
1744
+ }
1745
+ },
1746
+ "required": [
1747
+ "project",
1748
+ "service_name"
1749
+ ]
1750
+ },
1751
+ "strict": true,
1752
+ "title": "Connect List",
1753
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1754
+ },
1755
+ "aiven_kafka_connect_get_connector_status": {
1756
+ "schema": {
1757
+ "type": "object",
1758
+ "properties": {
1759
+ "project": {
1760
+ "type": "string"
1761
+ },
1762
+ "service_name": {
1763
+ "type": "string"
1764
+ },
1765
+ "connector_name": {
1766
+ "type": "string"
1767
+ }
1768
+ },
1769
+ "required": [
1770
+ "project",
1771
+ "service_name",
1772
+ "connector_name"
1773
+ ]
1774
+ },
1775
+ "strict": true,
1776
+ "title": "Connect Get Connector Status",
1777
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1778
+ },
1779
+ "aiven_kafka_connect_pause_connector": {
1780
+ "schema": {
1781
+ "type": "object",
1782
+ "properties": {
1783
+ "project": {
1784
+ "type": "string"
1785
+ },
1786
+ "service_name": {
1787
+ "type": "string"
1788
+ },
1789
+ "connector_name": {
1790
+ "type": "string"
1791
+ }
1792
+ },
1793
+ "required": [
1794
+ "project",
1795
+ "service_name",
1796
+ "connector_name"
1797
+ ]
1798
+ },
1799
+ "strict": true,
1800
+ "title": "Connect Pause Connector",
1801
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1802
+ },
1803
+ "aiven_kafka_connect_resume_connector": {
1804
+ "schema": {
1805
+ "type": "object",
1806
+ "properties": {
1807
+ "project": {
1808
+ "type": "string"
1809
+ },
1810
+ "service_name": {
1811
+ "type": "string"
1812
+ },
1813
+ "connector_name": {
1814
+ "type": "string"
1815
+ }
1816
+ },
1817
+ "required": [
1818
+ "project",
1819
+ "service_name",
1820
+ "connector_name"
1821
+ ]
1822
+ },
1823
+ "strict": true,
1824
+ "title": "Connect Resume Connector",
1825
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1826
+ },
1827
+ "aiven_kafka_connect_restart_connector": {
1828
+ "schema": {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "project": {
1832
+ "type": "string"
1833
+ },
1834
+ "service_name": {
1835
+ "type": "string"
1836
+ },
1837
+ "connector_name": {
1838
+ "type": "string"
1839
+ }
1840
+ },
1841
+ "required": [
1842
+ "project",
1843
+ "service_name",
1844
+ "connector_name"
1845
+ ]
1846
+ },
1847
+ "strict": true,
1848
+ "title": "Connect Restart Connector",
1849
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1850
+ },
1851
+ "aiven_kafka_connect_delete_connector": {
1852
+ "schema": {
1853
+ "type": "object",
1854
+ "properties": {
1855
+ "project": {
1856
+ "type": "string"
1857
+ },
1858
+ "service_name": {
1859
+ "type": "string"
1860
+ },
1861
+ "connector_name": {
1862
+ "type": "string"
1863
+ }
1864
+ },
1865
+ "required": [
1866
+ "project",
1867
+ "service_name",
1868
+ "connector_name"
1869
+ ]
1870
+ },
1871
+ "strict": true,
1872
+ "title": "Connect Delete Connector",
1873
+ "description": "**Kafka Connect plan gate — call `aiven_service_get` first.** Read `service.plan`. On **free** Kafka plans (e.g. `free-0`), Kafka Connect is usually **not** included: Connect REST calls may return **403** (e.g. \"Kafka Connect API disabled\"). Do **not** call this tool when `service.plan` is `free-*` or the tier is known not to include Connect; tell the user to upgrade instead of hitting the API.\n\n**Typically no Kafka Connect:** `free-*` (e.g. `free-0`).\n\n**Typically includes Kafka Connect:** `startup-*` (e.g. `startup-2`, `startup-4`), `business-*`, `premium-*`.\n\nOn supported plans you may still need `user_config.kafka_connect: true`. A **403** saying Kafka Connect is **disabled** is usually a **plan / product** limit, not missing token permissions."
1874
+ },
1875
+ "aiven_kafka_schema_registry_subjects": {
1876
+ "schema": {
1877
+ "type": "object",
1878
+ "properties": {
1879
+ "project": {
1880
+ "type": "string"
1881
+ },
1882
+ "service_name": {
1883
+ "type": "string"
1884
+ }
1885
+ },
1886
+ "required": [
1887
+ "project",
1888
+ "service_name"
1889
+ ]
1890
+ },
1891
+ "strict": true,
1892
+ "title": "Schema Registry Subjects",
1893
+ "description": "Lists Schema Registry subjects"
1894
+ },
1895
+ "aiven_kafka_schema_registry_subject_version_get": {
1896
+ "schema": {
1897
+ "type": "object",
1898
+ "properties": {
1899
+ "project": {
1900
+ "type": "string"
1901
+ },
1902
+ "service_name": {
1903
+ "type": "string"
1904
+ },
1905
+ "subject_name": {
1906
+ "type": "string"
1907
+ },
1908
+ "version_id": {
1909
+ "type": "string"
1910
+ }
1911
+ },
1912
+ "required": [
1913
+ "project",
1914
+ "service_name",
1915
+ "subject_name",
1916
+ "version_id"
1917
+ ]
1918
+ },
1919
+ "strict": true,
1920
+ "title": "Schema Registry Subject Version Get",
1921
+ "description": "Get Schema Registry Subject version"
1922
+ },
1923
+ "aiven_pg_service_available_extensions": {
1924
+ "schema": {
1925
+ "type": "object",
1926
+ "properties": {
1927
+ "project": {
1928
+ "type": "string"
1929
+ },
1930
+ "service_name": {
1931
+ "type": "string"
1932
+ }
1933
+ },
1934
+ "required": [
1935
+ "project",
1936
+ "service_name"
1937
+ ]
1938
+ },
1939
+ "strict": true,
1940
+ "title": "Service Available Extensions",
1941
+ "description": "List PostgreSQL extensions that can be loaded with CREATE EXTENSION in this service"
1942
+ },
1943
+ "aiven_pg_service_query_statistics": {
1944
+ "schema": {
1945
+ "type": "object",
1946
+ "properties": {
1947
+ "project": {
1948
+ "type": "string"
1949
+ },
1950
+ "service_name": {
1951
+ "type": "string"
1952
+ },
1953
+ "limit": {
1954
+ "type": "integer",
1955
+ "description": "Limit for number of results",
1956
+ "minimum": 1,
1957
+ "maximum": 5000,
1958
+ "default": 100
1959
+ },
1960
+ "offset": {
1961
+ "type": "integer",
1962
+ "description": "Offset for retrieved results based on sort order",
1963
+ "minimum": 0,
1964
+ "default": 0
1965
+ },
1966
+ "order_by": {
1967
+ "type": "string",
1968
+ "description": "Sort order can be either asc or desc and multiple comma separated columns with their own order can be specified: :asc,:desc. Accepted sort columns are: blk_read_time, blk_write_time, calls, database_name, local_blks_dirtied, local_blks_hit, local_blks_read, local_blks_written, max_plan_time, max_time, mean_plan_time, mean_time, min_plan_time, min_time, query, queryid, rows, shared_blks_dirtied, shared_blks_hit, shared_blks_read, shared_blks_written, stddev_plan_time, stddev_time, temp_blks_read, temp_blks_written, total_plan_time, total_time, user_name, wal_bytes, wal_fpi, wal_records",
1969
+ "maxLength": 256,
1970
+ "default": "calls:desc"
1971
+ }
1972
+ },
1973
+ "required": [
1974
+ "project",
1975
+ "service_name"
1976
+ ]
1977
+ },
1978
+ "strict": false,
1979
+ "title": "Service Query Statistics",
1980
+ "description": "Fetch PostgreSQL service query statistics"
1981
+ },
1982
+ "aiven_pg_bouncer_create": {
1983
+ "schema": {
1984
+ "type": "object",
1985
+ "properties": {
1986
+ "project": {
1987
+ "type": "string"
1988
+ },
1989
+ "service_name": {
1990
+ "type": "string"
1991
+ },
1992
+ "database": {
1993
+ "type": "string",
1994
+ "description": "Service database name",
1995
+ "maxLength": 63
1996
+ },
1997
+ "pool_mode": {
1998
+ "enum": [
1999
+ "session",
2000
+ "transaction",
2001
+ "statement"
2002
+ ],
2003
+ "description": "PGBouncer pool mode"
2004
+ },
2005
+ "pool_name": {
2006
+ "type": "string",
2007
+ "description": "Connection pool name",
2008
+ "maxLength": 63
2009
+ },
2010
+ "pool_size": {
2011
+ "type": "integer",
2012
+ "description": "Size of PGBouncer's PostgreSQL side connection pool",
2013
+ "minimum": 1,
2014
+ "maximum": 10000,
2015
+ "default": 10
2016
+ },
2017
+ "username": {
2018
+ "type": "string",
2019
+ "description": "Service username",
2020
+ "maxLength": 64
2021
+ }
2022
+ },
2023
+ "required": [
2024
+ "project",
2025
+ "service_name",
2026
+ "database",
2027
+ "pool_name"
2028
+ ]
2029
+ },
2030
+ "strict": false,
2031
+ "title": "Bouncer Create",
2032
+ "description": "**PgBouncer connection pools** — `aiven_pg_bouncer_create`, `aiven_pg_bouncer_update`, and `aiven_pg_bouncer_delete` call Aiven’s `connection_pool` API.\n\n**Plan gate — call `aiven_service_get` first.** Read `service.plan` (string). Do **not** call these tools if the plan does not support connection pooling; tell the user they need a higher tier instead of attempting the API.\n\n**Plans that do _not_ include connection pooling:** `free-1-1gb`, `free-1-5gb`, any `free-*` plan, and **`hobbyist`**.\n\n**Plans that support connection pooling:** `startup-*`, `business-*`, and `premium-*` (e.g. `startup-4`, `business-8`).\n\nIf the API returns **403** with a message about the service plan not including connection pooling, interpret that as a **plan limitation**, not necessarily a missing token permission."
2033
+ },
2034
+ "aiven_pg_bouncer_update": {
2035
+ "schema": {
2036
+ "type": "object",
2037
+ "properties": {
2038
+ "project": {
2039
+ "type": "string"
2040
+ },
2041
+ "service_name": {
2042
+ "type": "string"
2043
+ },
2044
+ "pool_name": {
2045
+ "type": "string"
2046
+ },
2047
+ "database": {
2048
+ "type": "string",
2049
+ "description": "Service database name",
2050
+ "maxLength": 63
2051
+ },
2052
+ "pool_mode": {
2053
+ "enum": [
2054
+ "session",
2055
+ "transaction",
2056
+ "statement"
2057
+ ],
2058
+ "description": "PGBouncer pool mode"
2059
+ },
2060
+ "pool_size": {
2061
+ "type": "integer",
2062
+ "description": "Size of PGBouncer's PostgreSQL side connection pool",
2063
+ "minimum": 1,
2064
+ "maximum": 10000
2065
+ },
2066
+ "username": {
2067
+ "type": "string",
2068
+ "description": "Service username",
2069
+ "maxLength": 64
2070
+ }
2071
+ },
2072
+ "required": [
2073
+ "project",
2074
+ "service_name",
2075
+ "pool_name"
2076
+ ]
2077
+ },
2078
+ "strict": false,
2079
+ "title": "Bouncer Update",
2080
+ "description": "**PgBouncer connection pools** — `aiven_pg_bouncer_create`, `aiven_pg_bouncer_update`, and `aiven_pg_bouncer_delete` call Aiven’s `connection_pool` API.\n\n**Plan gate — call `aiven_service_get` first.** Read `service.plan` (string). Do **not** call these tools if the plan does not support connection pooling; tell the user they need a higher tier instead of attempting the API.\n\n**Plans that do _not_ include connection pooling:** `free-1-1gb`, `free-1-5gb`, any `free-*` plan, and **`hobbyist`**.\n\n**Plans that support connection pooling:** `startup-*`, `business-*`, and `premium-*` (e.g. `startup-4`, `business-8`).\n\nIf the API returns **403** with a message about the service plan not including connection pooling, interpret that as a **plan limitation**, not necessarily a missing token permission."
2081
+ },
2082
+ "aiven_pg_bouncer_delete": {
2083
+ "schema": {
2084
+ "type": "object",
2085
+ "properties": {
2086
+ "project": {
2087
+ "type": "string"
2088
+ },
2089
+ "service_name": {
2090
+ "type": "string"
2091
+ },
2092
+ "pool_name": {
2093
+ "type": "string"
2094
+ }
2095
+ },
2096
+ "required": [
2097
+ "project",
2098
+ "service_name",
2099
+ "pool_name"
2100
+ ]
2101
+ },
2102
+ "strict": true,
2103
+ "title": "Bouncer Delete",
2104
+ "description": "**PgBouncer connection pools** — `aiven_pg_bouncer_create`, `aiven_pg_bouncer_update`, and `aiven_pg_bouncer_delete` call Aiven’s `connection_pool` API.\n\n**Plan gate — call `aiven_service_get` first.** Read `service.plan` (string). Do **not** call these tools if the plan does not support connection pooling; tell the user they need a higher tier instead of attempting the API.\n\n**Plans that do _not_ include connection pooling:** `free-1-1gb`, `free-1-5gb`, any `free-*` plan, and **`hobbyist`**.\n\n**Plans that support connection pooling:** `startup-*`, `business-*`, and `premium-*` (e.g. `startup-4`, `business-8`).\n\nIf the API returns **403** with a message about the service plan not including connection pooling, interpret that as a **plan limitation**, not necessarily a missing token permission."
2105
+ }
2106
+ }