robosystems-client 0.2.3__py3-none-any.whl → 0.2.4__py3-none-any.whl

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.

Potentially problematic release.


This version of robosystems-client might be problematic. Click here for more details.

Files changed (103) hide show
  1. robosystems_client/api/agent/auto_select_agent.py +1 -41
  2. robosystems_client/api/agent/batch_process_queries.py +1 -41
  3. robosystems_client/api/agent/execute_specific_agent.py +1 -41
  4. robosystems_client/api/agent/get_agent_metadata.py +5 -49
  5. robosystems_client/api/agent/list_agents.py +4 -42
  6. robosystems_client/api/agent/recommend_agent.py +5 -45
  7. robosystems_client/api/auth/generate_sso_token.py +0 -18
  8. robosystems_client/api/auth/get_current_auth_user.py +14 -74
  9. robosystems_client/api/auth/logout_user.py +14 -50
  10. robosystems_client/api/auth/refresh_auth_session.py +14 -50
  11. robosystems_client/api/auth/resend_verification_email.py +14 -74
  12. robosystems_client/api/backup/create_backup.py +5 -45
  13. robosystems_client/api/backup/get_backup_download_url.py +4 -42
  14. robosystems_client/api/backup/get_backup_stats.py +5 -49
  15. robosystems_client/api/backup/list_backups.py +4 -42
  16. robosystems_client/api/backup/restore_backup.py +5 -45
  17. robosystems_client/api/connections/create_connection.py +5 -45
  18. robosystems_client/api/connections/create_link_token.py +5 -45
  19. robosystems_client/api/connections/delete_connection.py +5 -49
  20. robosystems_client/api/connections/exchange_link_token.py +5 -45
  21. robosystems_client/api/connections/get_connection.py +5 -49
  22. robosystems_client/api/connections/get_connection_options.py +5 -49
  23. robosystems_client/api/connections/init_o_auth.py +5 -45
  24. robosystems_client/api/connections/list_connections.py +4 -42
  25. robosystems_client/api/connections/oauth_callback.py +5 -45
  26. robosystems_client/api/connections/sync_connection.py +5 -45
  27. robosystems_client/api/graph_analytics/get_graph_metrics.py +5 -49
  28. robosystems_client/api/graph_analytics/get_graph_usage_stats.py +4 -42
  29. robosystems_client/api/graph_billing/get_current_graph_bill.py +5 -49
  30. robosystems_client/api/graph_billing/get_graph_billing_history.py +4 -42
  31. robosystems_client/api/graph_billing/get_graph_monthly_bill.py +5 -49
  32. robosystems_client/api/graph_billing/get_graph_usage_details.py +4 -42
  33. robosystems_client/api/graph_credits/check_credit_balance.py +0 -38
  34. robosystems_client/api/graph_credits/check_storage_limits.py +1 -45
  35. robosystems_client/api/graph_credits/get_credit_summary.py +1 -45
  36. robosystems_client/api/graph_credits/get_storage_usage.py +0 -38
  37. robosystems_client/api/graph_credits/list_credit_transactions.py +4 -42
  38. robosystems_client/api/graph_health/get_database_health.py +5 -49
  39. robosystems_client/api/graph_info/get_database_info.py +5 -49
  40. robosystems_client/api/graph_limits/get_graph_limits.py +5 -49
  41. robosystems_client/api/graphs/create_graph.py +21 -57
  42. robosystems_client/api/graphs/get_available_extensions.py +131 -15
  43. robosystems_client/api/graphs/get_graphs.py +154 -79
  44. robosystems_client/api/graphs/select_graph.py +117 -49
  45. robosystems_client/api/mcp/call_mcp_tool.py +24 -47
  46. robosystems_client/api/mcp/list_mcp_tools.py +13 -61
  47. robosystems_client/api/operations/cancel_operation.py +1 -45
  48. robosystems_client/api/operations/get_operation_status.py +1 -45
  49. robosystems_client/api/query/execute_cypher_query.py +69 -53
  50. robosystems_client/api/schema/export_graph_schema.py +223 -65
  51. robosystems_client/api/schema/get_graph_schema.py +137 -79
  52. robosystems_client/api/schema/validate_schema.py +5 -45
  53. robosystems_client/api/subgraphs/create_subgraph.py +5 -45
  54. robosystems_client/api/subgraphs/delete_subgraph.py +5 -45
  55. robosystems_client/api/subgraphs/get_subgraph_info.py +5 -49
  56. robosystems_client/api/subgraphs/get_subgraph_quota.py +5 -49
  57. robosystems_client/api/subgraphs/list_subgraphs.py +5 -49
  58. robosystems_client/api/tables/delete_file.py +181 -301
  59. robosystems_client/api/tables/get_file_info.py +117 -265
  60. robosystems_client/api/tables/get_upload_url.py +193 -389
  61. robosystems_client/api/tables/ingest_tables.py +277 -465
  62. robosystems_client/api/tables/list_table_files.py +193 -373
  63. robosystems_client/api/tables/list_tables.py +189 -361
  64. robosystems_client/api/tables/query_tables.py +85 -141
  65. robosystems_client/api/tables/update_file_status.py +205 -349
  66. robosystems_client/api/user/create_user_api_key.py +1 -41
  67. robosystems_client/api/user/get_all_credit_summaries.py +14 -111
  68. robosystems_client/api/user/get_current_user.py +14 -75
  69. robosystems_client/api/user/list_user_api_keys.py +14 -75
  70. robosystems_client/api/user/revoke_user_api_key.py +1 -45
  71. robosystems_client/api/user/update_user.py +1 -41
  72. robosystems_client/api/user/update_user_api_key.py +1 -41
  73. robosystems_client/api/user/update_user_password.py +1 -41
  74. robosystems_client/api/user_analytics/get_detailed_user_analytics.py +0 -38
  75. robosystems_client/api/user_analytics/get_user_usage_overview.py +14 -75
  76. robosystems_client/api/user_limits/get_all_shared_repository_limits.py +14 -105
  77. robosystems_client/api/user_limits/get_shared_repository_limits.py +1 -45
  78. robosystems_client/api/user_limits/get_user_limits.py +14 -75
  79. robosystems_client/api/user_limits/get_user_usage.py +14 -75
  80. robosystems_client/api/user_subscriptions/cancel_shared_repository_subscription.py +1 -45
  81. robosystems_client/api/user_subscriptions/get_repository_credits.py +1 -45
  82. robosystems_client/api/user_subscriptions/get_shared_repository_credits.py +14 -75
  83. robosystems_client/api/user_subscriptions/get_user_shared_subscriptions.py +0 -38
  84. robosystems_client/api/user_subscriptions/subscribe_to_shared_repository.py +1 -41
  85. robosystems_client/api/user_subscriptions/upgrade_shared_repository_subscription.py +1 -41
  86. robosystems_client/extensions/__init__.py +8 -1
  87. robosystems_client/extensions/auth_integration.py +1 -2
  88. robosystems_client/extensions/query_client.py +3 -2
  89. robosystems_client/extensions/sse_client.py +1 -1
  90. robosystems_client/extensions/table_ingest_client.py +5 -0
  91. robosystems_client/extensions/utils.py +2 -2
  92. robosystems_client/models/__init__.py +4 -4
  93. robosystems_client/models/create_graph_request.py +4 -3
  94. robosystems_client/models/cypher_query_request.py +5 -22
  95. robosystems_client/models/schema_export_response.py +4 -2
  96. robosystems_client/models/schema_info_response.py +77 -0
  97. robosystems_client/models/{get_graph_schema_response_getgraphschema.py → schema_info_response_schema.py} +6 -6
  98. robosystems_client/models/schema_validation_response.py +7 -6
  99. robosystems_client/models/table_query_request.py +37 -2
  100. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/METADATA +2 -4
  101. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/RECORD +103 -102
  102. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/WHEEL +0 -0
  103. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/licenses/LICENSE +0 -0
@@ -16,14 +16,10 @@ def _get_kwargs(
16
16
  *,
17
17
  body: CypherQueryRequest,
18
18
  mode: Union[None, ResponseMode, Unset] = UNSET,
19
- chunk_size: Union[Unset, int] = 1000,
19
+ chunk_size: Union[None, Unset, int] = UNSET,
20
20
  test_mode: Union[Unset, bool] = False,
21
- token: Union[None, Unset, str] = UNSET,
22
- authorization: Union[None, Unset, str] = UNSET,
23
21
  ) -> dict[str, Any]:
24
22
  headers: dict[str, Any] = {}
25
- if not isinstance(authorization, Unset):
26
- headers["authorization"] = authorization
27
23
 
28
24
  params: dict[str, Any] = {}
29
25
 
@@ -36,17 +32,15 @@ def _get_kwargs(
36
32
  json_mode = mode
37
33
  params["mode"] = json_mode
38
34
 
39
- params["chunk_size"] = chunk_size
35
+ json_chunk_size: Union[None, Unset, int]
36
+ if isinstance(chunk_size, Unset):
37
+ json_chunk_size = UNSET
38
+ else:
39
+ json_chunk_size = chunk_size
40
+ params["chunk_size"] = json_chunk_size
40
41
 
41
42
  params["test_mode"] = test_mode
42
43
 
43
- json_token: Union[None, Unset, str]
44
- if isinstance(token, Unset):
45
- json_token = UNSET
46
- else:
47
- json_token = token
48
- params["token"] = json_token
49
-
50
44
  params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
51
45
 
52
46
  _kwargs: dict[str, Any] = {
@@ -67,6 +61,12 @@ def _parse_response(
67
61
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
68
62
  ) -> Optional[Union[Any, HTTPValidationError]]:
69
63
  if response.status_code == 200:
64
+ content_type = response.headers.get("content-type", "")
65
+ if (
66
+ "application/x-ndjson" in content_type
67
+ or response.headers.get("x-stream-format") == "ndjson"
68
+ ):
69
+ return None
70
70
  response_200 = response.json()
71
71
  return response_200
72
72
 
@@ -126,12 +126,10 @@ def sync_detailed(
126
126
  client: AuthenticatedClient,
127
127
  body: CypherQueryRequest,
128
128
  mode: Union[None, ResponseMode, Unset] = UNSET,
129
- chunk_size: Union[Unset, int] = 1000,
129
+ chunk_size: Union[None, Unset, int] = UNSET,
130
130
  test_mode: Union[Unset, bool] = False,
131
- token: Union[None, Unset, str] = UNSET,
132
- authorization: Union[None, Unset, str] = UNSET,
133
131
  ) -> Response[Union[Any, HTTPValidationError]]:
134
- """Execute Cypher Query (Read-Only)
132
+ r"""Execute Cypher Query (Read-Only)
135
133
 
136
134
  Execute a read-only Cypher query with intelligent response optimization.
137
135
 
@@ -141,6 +139,16 @@ def sync_detailed(
141
139
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
142
140
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
143
141
 
142
+ **Security Best Practice - Use Parameterized Queries:**
143
+ ALWAYS use query parameters instead of string interpolation to prevent injection attacks:
144
+ - ✅ SAFE: `MATCH (n:Entity {type: $entity_type}) RETURN n` with `parameters: {\"entity_type\":
145
+ \"Company\"}`
146
+ - ❌ UNSAFE: `MATCH (n:Entity {type: \"Company\"}) RETURN n` with user input concatenated into query
147
+ string
148
+
149
+ Query parameters provide automatic escaping and type safety. All examples in this API use
150
+ parameterized queries.
151
+
144
152
  This endpoint automatically selects the best execution strategy based on:
145
153
  - Query characteristics (size, complexity)
146
154
  - Client capabilities (SSE, NDJSON, JSON)
@@ -188,12 +196,10 @@ def sync_detailed(
188
196
  Queue position is based on subscription tier for priority.
189
197
 
190
198
  Args:
191
- graph_id (str): Graph database identifier
199
+ graph_id (str):
192
200
  mode (Union[None, ResponseMode, Unset]): Response mode override
193
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
201
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
194
202
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
195
- token (Union[None, Unset, str]): JWT token for SSE authentication
196
- authorization (Union[None, Unset, str]):
197
203
  body (CypherQueryRequest): Request model for Cypher query execution.
198
204
 
199
205
  Raises:
@@ -210,8 +216,6 @@ def sync_detailed(
210
216
  mode=mode,
211
217
  chunk_size=chunk_size,
212
218
  test_mode=test_mode,
213
- token=token,
214
- authorization=authorization,
215
219
  )
216
220
 
217
221
  response = client.get_httpx_client().request(
@@ -227,12 +231,10 @@ def sync(
227
231
  client: AuthenticatedClient,
228
232
  body: CypherQueryRequest,
229
233
  mode: Union[None, ResponseMode, Unset] = UNSET,
230
- chunk_size: Union[Unset, int] = 1000,
234
+ chunk_size: Union[None, Unset, int] = UNSET,
231
235
  test_mode: Union[Unset, bool] = False,
232
- token: Union[None, Unset, str] = UNSET,
233
- authorization: Union[None, Unset, str] = UNSET,
234
236
  ) -> Optional[Union[Any, HTTPValidationError]]:
235
- """Execute Cypher Query (Read-Only)
237
+ r"""Execute Cypher Query (Read-Only)
236
238
 
237
239
  Execute a read-only Cypher query with intelligent response optimization.
238
240
 
@@ -242,6 +244,16 @@ def sync(
242
244
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
243
245
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
244
246
 
247
+ **Security Best Practice - Use Parameterized Queries:**
248
+ ALWAYS use query parameters instead of string interpolation to prevent injection attacks:
249
+ - ✅ SAFE: `MATCH (n:Entity {type: $entity_type}) RETURN n` with `parameters: {\"entity_type\":
250
+ \"Company\"}`
251
+ - ❌ UNSAFE: `MATCH (n:Entity {type: \"Company\"}) RETURN n` with user input concatenated into query
252
+ string
253
+
254
+ Query parameters provide automatic escaping and type safety. All examples in this API use
255
+ parameterized queries.
256
+
245
257
  This endpoint automatically selects the best execution strategy based on:
246
258
  - Query characteristics (size, complexity)
247
259
  - Client capabilities (SSE, NDJSON, JSON)
@@ -289,12 +301,10 @@ def sync(
289
301
  Queue position is based on subscription tier for priority.
290
302
 
291
303
  Args:
292
- graph_id (str): Graph database identifier
304
+ graph_id (str):
293
305
  mode (Union[None, ResponseMode, Unset]): Response mode override
294
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
306
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
295
307
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
296
- token (Union[None, Unset, str]): JWT token for SSE authentication
297
- authorization (Union[None, Unset, str]):
298
308
  body (CypherQueryRequest): Request model for Cypher query execution.
299
309
 
300
310
  Raises:
@@ -312,8 +322,6 @@ def sync(
312
322
  mode=mode,
313
323
  chunk_size=chunk_size,
314
324
  test_mode=test_mode,
315
- token=token,
316
- authorization=authorization,
317
325
  ).parsed
318
326
 
319
327
 
@@ -323,12 +331,10 @@ async def asyncio_detailed(
323
331
  client: AuthenticatedClient,
324
332
  body: CypherQueryRequest,
325
333
  mode: Union[None, ResponseMode, Unset] = UNSET,
326
- chunk_size: Union[Unset, int] = 1000,
334
+ chunk_size: Union[None, Unset, int] = UNSET,
327
335
  test_mode: Union[Unset, bool] = False,
328
- token: Union[None, Unset, str] = UNSET,
329
- authorization: Union[None, Unset, str] = UNSET,
330
336
  ) -> Response[Union[Any, HTTPValidationError]]:
331
- """Execute Cypher Query (Read-Only)
337
+ r"""Execute Cypher Query (Read-Only)
332
338
 
333
339
  Execute a read-only Cypher query with intelligent response optimization.
334
340
 
@@ -338,6 +344,16 @@ async def asyncio_detailed(
338
344
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
339
345
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
340
346
 
347
+ **Security Best Practice - Use Parameterized Queries:**
348
+ ALWAYS use query parameters instead of string interpolation to prevent injection attacks:
349
+ - ✅ SAFE: `MATCH (n:Entity {type: $entity_type}) RETURN n` with `parameters: {\"entity_type\":
350
+ \"Company\"}`
351
+ - ❌ UNSAFE: `MATCH (n:Entity {type: \"Company\"}) RETURN n` with user input concatenated into query
352
+ string
353
+
354
+ Query parameters provide automatic escaping and type safety. All examples in this API use
355
+ parameterized queries.
356
+
341
357
  This endpoint automatically selects the best execution strategy based on:
342
358
  - Query characteristics (size, complexity)
343
359
  - Client capabilities (SSE, NDJSON, JSON)
@@ -385,12 +401,10 @@ async def asyncio_detailed(
385
401
  Queue position is based on subscription tier for priority.
386
402
 
387
403
  Args:
388
- graph_id (str): Graph database identifier
404
+ graph_id (str):
389
405
  mode (Union[None, ResponseMode, Unset]): Response mode override
390
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
406
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
391
407
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
392
- token (Union[None, Unset, str]): JWT token for SSE authentication
393
- authorization (Union[None, Unset, str]):
394
408
  body (CypherQueryRequest): Request model for Cypher query execution.
395
409
 
396
410
  Raises:
@@ -407,8 +421,6 @@ async def asyncio_detailed(
407
421
  mode=mode,
408
422
  chunk_size=chunk_size,
409
423
  test_mode=test_mode,
410
- token=token,
411
- authorization=authorization,
412
424
  )
413
425
 
414
426
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -422,12 +434,10 @@ async def asyncio(
422
434
  client: AuthenticatedClient,
423
435
  body: CypherQueryRequest,
424
436
  mode: Union[None, ResponseMode, Unset] = UNSET,
425
- chunk_size: Union[Unset, int] = 1000,
437
+ chunk_size: Union[None, Unset, int] = UNSET,
426
438
  test_mode: Union[Unset, bool] = False,
427
- token: Union[None, Unset, str] = UNSET,
428
- authorization: Union[None, Unset, str] = UNSET,
429
439
  ) -> Optional[Union[Any, HTTPValidationError]]:
430
- """Execute Cypher Query (Read-Only)
440
+ r"""Execute Cypher Query (Read-Only)
431
441
 
432
442
  Execute a read-only Cypher query with intelligent response optimization.
433
443
 
@@ -437,6 +447,16 @@ async def asyncio(
437
447
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
438
448
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
439
449
 
450
+ **Security Best Practice - Use Parameterized Queries:**
451
+ ALWAYS use query parameters instead of string interpolation to prevent injection attacks:
452
+ - ✅ SAFE: `MATCH (n:Entity {type: $entity_type}) RETURN n` with `parameters: {\"entity_type\":
453
+ \"Company\"}`
454
+ - ❌ UNSAFE: `MATCH (n:Entity {type: \"Company\"}) RETURN n` with user input concatenated into query
455
+ string
456
+
457
+ Query parameters provide automatic escaping and type safety. All examples in this API use
458
+ parameterized queries.
459
+
440
460
  This endpoint automatically selects the best execution strategy based on:
441
461
  - Query characteristics (size, complexity)
442
462
  - Client capabilities (SSE, NDJSON, JSON)
@@ -484,12 +504,10 @@ async def asyncio(
484
504
  Queue position is based on subscription tier for priority.
485
505
 
486
506
  Args:
487
- graph_id (str): Graph database identifier
507
+ graph_id (str):
488
508
  mode (Union[None, ResponseMode, Unset]): Response mode override
489
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
509
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
490
510
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
491
- token (Union[None, Unset, str]): JWT token for SSE authentication
492
- authorization (Union[None, Unset, str]):
493
511
  body (CypherQueryRequest): Request model for Cypher query execution.
494
512
 
495
513
  Raises:
@@ -508,7 +526,5 @@ async def asyncio(
508
526
  mode=mode,
509
527
  chunk_size=chunk_size,
510
528
  test_mode=test_mode,
511
- token=token,
512
- authorization=authorization,
513
529
  )
514
530
  ).parsed