|
3 | 3 | "info": { |
4 | 4 | "title": "Agent Backend Service (Custom GPT Actions)", |
5 | 5 | "version": "1.0.0", |
6 | | - "description": "OpenAPI schema for Custom GPT Actions. Function keys are passed via the required `code` query parameter on every endpoint. Optional multi-user isolation via `x-user-id` header or `user_id` param/body." |
| 6 | + "description": "OpenAPI schema for Custom GPT Actions. Function keys are passed via the required `code` query parameter on every endpoint. Optional multi-user isolation via `user_id` param/body." |
7 | 7 | }, |
8 | 8 | "servers": [ |
9 | 9 | { |
|
28 | 28 | "properties": { |
29 | 29 | "target_blob_name": { "type": "string", "description": "Target file name inside the user's namespace (e.g. TM.json)." }, |
30 | 30 | "new_entry": { "type": "string", "description": "JSON-encoded entry (string). Example: \"{\\\"id\\\":\\\"TM.001.202512151230\\\",...}\"" }, |
31 | | - "user_id": { "type": "string", "description": "Optional user namespace (can also be sent as x-user-id header)." } |
| 31 | + "user_id": { "type": "string", "description": "Optional user namespace." } |
32 | 32 | }, |
33 | 33 | "required": ["target_blob_name", "new_entry"], |
34 | 34 | "additionalProperties": false |
|
111 | 111 | "tail_bytes": { "type": "integer", "minimum": 1024, "maximum": 262144, "default": 65536, "description": "Max bytes to read from the end when using tail_lines." }, |
112 | 112 | "max_bytes_per_file": { "type": "integer", "minimum": 1024, "maximum": 1048576, "default": 262144, "description": "Max bytes per file (prefix read). Larger blobs are truncated." }, |
113 | 113 | "parse_json": { "type": "boolean", "default": true, "description": "If true, tries to JSON-decode each file; falls back to text on parse failure." }, |
114 | | - "user_id": { "type": "string", "description": "Optional user namespace (can also be sent as x-user-id header)." } |
| 114 | + "user_id": { "type": "string", "description": "Optional user namespace." } |
115 | 115 | }, |
116 | 116 | "required": ["files"], |
117 | 117 | "additionalProperties": false |
|
146 | 146 | "operationId": "get_current_time", |
147 | 147 | "summary": "Returns current UTC time", |
148 | 148 | "parameters": [ |
149 | | - { |
150 | | - "name": "x-user-id", |
151 | | - "in": "header", |
152 | | - "required": false, |
153 | | - "schema": { "type": "string" }, |
154 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
155 | | - }, |
156 | 149 | { |
157 | 150 | "name": "code", |
158 | 151 | "in": "query", |
|
175 | 168 | "operationId": "list_blobs", |
176 | 169 | "summary": "Returns a list of all files in the user's Azure Blob namespace", |
177 | 170 | "parameters": [ |
178 | | - { |
179 | | - "name": "x-user-id", |
180 | | - "in": "header", |
181 | | - "required": false, |
182 | | - "schema": { "type": "string" }, |
183 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
184 | | - }, |
185 | 171 | { "name": "prefix", "in": "query", "required": false, "schema": { "type": "string" } }, |
186 | 172 | { "name": "user_id", "in": "query", "required": false, "schema": { "type": "string" } }, |
187 | 173 | { |
|
204 | 190 | "operationId": "read_blob_file", |
205 | 191 | "summary": "Reads and returns the content of a specific blob file by name (supports batch via POST body in backend)", |
206 | 192 | "parameters": [ |
207 | | - { |
208 | | - "name": "x-user-id", |
209 | | - "in": "header", |
210 | | - "required": false, |
211 | | - "schema": { "type": "string" }, |
212 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
213 | | - }, |
214 | 193 | { "name": "file_name", "in": "query", "required": true, "schema": { "type": "string", "example": "TM.json" } }, |
215 | 194 | { "name": "user_id", "in": "query", "required": false, "schema": { "type": "string" } }, |
216 | 195 | { |
|
233 | 212 | "operationId": "read_many_blobs", |
234 | 213 | "summary": "Reads many blob files in one request with safety limits (supports optional tail for JSONL/text)", |
235 | 214 | "parameters": [ |
236 | | - { |
237 | | - "name": "x-user-id", |
238 | | - "in": "header", |
239 | | - "required": false, |
240 | | - "schema": { "type": "string" }, |
241 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
242 | | - }, |
243 | 215 | { |
244 | 216 | "name": "code", |
245 | 217 | "in": "query", |
|
268 | 240 | "operationId": "get_filtered_data", |
269 | 241 | "summary": "Returns JSON file content with optional simple filter (server-side)", |
270 | 242 | "parameters": [ |
271 | | - { |
272 | | - "name": "x-user-id", |
273 | | - "in": "header", |
274 | | - "required": false, |
275 | | - "schema": { "type": "string" }, |
276 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
277 | | - }, |
278 | 243 | { |
279 | 244 | "name": "code", |
280 | 245 | "in": "query", |
|
301 | 266 | "operationId": "add_new_data", |
302 | 267 | "summary": "Add new entry to JSON file (new_entry must be JSON encoded as string)", |
303 | 268 | "parameters": [ |
304 | | - { |
305 | | - "name": "x-user-id", |
306 | | - "in": "header", |
307 | | - "required": false, |
308 | | - "schema": { "type": "string" }, |
309 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
310 | | - }, |
311 | 269 | { |
312 | 270 | "name": "code", |
313 | 271 | "in": "query", |
|
334 | 292 | "operationId": "update_data_entry", |
335 | 293 | "summary": "Find & update entry inside JSON file", |
336 | 294 | "parameters": [ |
337 | | - { |
338 | | - "name": "x-user-id", |
339 | | - "in": "header", |
340 | | - "required": false, |
341 | | - "schema": { "type": "string" }, |
342 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
343 | | - }, |
344 | 295 | { |
345 | 296 | "name": "code", |
346 | 297 | "in": "query", |
|
367 | 318 | "operationId": "remove_data_entry", |
368 | 319 | "summary": "Remove entry matching key/value from JSON file", |
369 | 320 | "parameters": [ |
370 | | - { |
371 | | - "name": "x-user-id", |
372 | | - "in": "header", |
373 | | - "required": false, |
374 | | - "schema": { "type": "string" }, |
375 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
376 | | - }, |
377 | 321 | { |
378 | 322 | "name": "code", |
379 | 323 | "in": "query", |
|
400 | 344 | "operationId": "upload_data_or_file", |
401 | 345 | "summary": "Create or replace file in Azure Blob Storage (file_content must be JSON string or text)", |
402 | 346 | "parameters": [ |
403 | | - { |
404 | | - "name": "x-user-id", |
405 | | - "in": "header", |
406 | | - "required": false, |
407 | | - "schema": { "type": "string" }, |
408 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
409 | | - }, |
410 | 347 | { |
411 | 348 | "name": "code", |
412 | 349 | "in": "query", |
|
433 | 370 | "operationId": "manage_files", |
434 | 371 | "summary": "Manage files: list, delete, rename", |
435 | 372 | "parameters": [ |
436 | | - { |
437 | | - "name": "x-user-id", |
438 | | - "in": "header", |
439 | | - "required": false, |
440 | | - "schema": { "type": "string" }, |
441 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
442 | | - }, |
443 | 373 | { |
444 | 374 | "name": "code", |
445 | 375 | "in": "query", |
|
466 | 396 | "operationId": "save_interaction", |
467 | 397 | "summary": "Save user/assistant interaction to blob logs", |
468 | 398 | "parameters": [ |
469 | | - { |
470 | | - "name": "x-user-id", |
471 | | - "in": "header", |
472 | | - "required": false, |
473 | | - "schema": { "type": "string" }, |
474 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
475 | | - }, |
476 | 399 | { |
477 | 400 | "name": "code", |
478 | 401 | "in": "query", |
|
499 | 422 | "operationId": "get_interaction_history", |
500 | 423 | "summary": "Returns interaction logs (optional thread filter + pagination)", |
501 | 424 | "parameters": [ |
502 | | - { |
503 | | - "name": "x-user-id", |
504 | | - "in": "header", |
505 | | - "required": false, |
506 | | - "schema": { "type": "string" }, |
507 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
508 | | - }, |
509 | 425 | { "name": "thread_id", "in": "query", "required": false, "schema": { "type": "string" } }, |
510 | 426 | { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "minimum": 1, "maximum": 1000 } }, |
511 | 427 | { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0, "minimum": 0 } }, |
|
558 | 474 | "operationId": "custom_gpt_tools", |
559 | 475 | "summary": "Returns server-side tool metadata for Custom GPT (shape depends on backend implementation)", |
560 | 476 | "parameters": [ |
561 | | - { |
562 | | - "name": "x-user-id", |
563 | | - "in": "header", |
564 | | - "required": false, |
565 | | - "schema": { "type": "string" }, |
566 | | - "description": "Optional user namespace. If omitted, backend uses 'default'." |
567 | | - }, |
568 | 477 | { |
569 | 478 | "name": "code", |
570 | 479 | "in": "query", |
|
0 commit comments