robosystems-client 0.2.2__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 (121) 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 +68 -57
  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 +317 -0
  59. robosystems_client/api/tables/get_file_info.py +249 -0
  60. robosystems_client/api/tables/get_upload_url.py +352 -0
  61. robosystems_client/api/tables/ingest_tables.py +428 -0
  62. robosystems_client/api/tables/list_table_files.py +329 -0
  63. robosystems_client/api/tables/list_tables.py +316 -0
  64. robosystems_client/api/tables/query_tables.py +431 -0
  65. robosystems_client/api/tables/update_file_status.py +395 -0
  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/graph_client.py +5 -0
  89. robosystems_client/extensions/query_client.py +3 -2
  90. robosystems_client/extensions/sse_client.py +1 -1
  91. robosystems_client/extensions/table_ingest_client.py +36 -40
  92. robosystems_client/extensions/utils.py +2 -2
  93. robosystems_client/models/__init__.py +17 -21
  94. robosystems_client/models/create_graph_request.py +15 -3
  95. robosystems_client/models/cypher_query_request.py +5 -22
  96. robosystems_client/models/{delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete.py → delete_file_response.py} +45 -9
  97. robosystems_client/models/file_info.py +169 -0
  98. robosystems_client/models/file_status_update.py +41 -0
  99. robosystems_client/models/get_file_info_response.py +205 -0
  100. robosystems_client/models/list_table_files_response.py +105 -0
  101. robosystems_client/models/schema_export_response.py +4 -2
  102. robosystems_client/models/schema_info_response.py +77 -0
  103. robosystems_client/models/{get_graph_schema_response_getgraphschema.py → schema_info_response_schema.py} +6 -6
  104. robosystems_client/models/schema_validation_response.py +7 -6
  105. robosystems_client/models/table_query_request.py +37 -2
  106. robosystems_client/models/{get_file_info_v1_graphs_graph_id_tables_files_file_id_get_response_get_file_info_v1_graphs_graph_id_tables_files_file_id_get.py → update_file_status_response_updatefilestatus.py} +5 -8
  107. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.4.dist-info}/METADATA +2 -4
  108. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.4.dist-info}/RECORD +110 -108
  109. robosystems_client/api/tables/delete_file_v1_graphs_graph_id_tables_files_file_id_delete.py +0 -287
  110. robosystems_client/api/tables/get_file_info_v1_graphs_graph_id_tables_files_file_id_get.py +0 -283
  111. robosystems_client/api/tables/get_upload_url_v1_graphs_graph_id_tables_table_name_files_post.py +0 -260
  112. robosystems_client/api/tables/ingest_tables_v1_graphs_graph_id_tables_ingest_post.py +0 -251
  113. robosystems_client/api/tables/list_table_files_v1_graphs_graph_id_tables_table_name_files_get.py +0 -283
  114. robosystems_client/api/tables/list_tables_v1_graphs_graph_id_tables_get.py +0 -224
  115. robosystems_client/api/tables/query_tables_v1_graphs_graph_id_tables_query_post.py +0 -247
  116. robosystems_client/api/tables/update_file_v1_graphs_graph_id_tables_files_file_id_patch.py +0 -306
  117. robosystems_client/models/file_update_request.py +0 -62
  118. robosystems_client/models/list_table_files_v1_graphs_graph_id_tables_table_name_files_get_response_list_table_files_v1_graphs_graph_id_tables_table_name_files_get.py +0 -47
  119. robosystems_client/models/update_file_v1_graphs_graph_id_tables_files_file_id_patch_response_update_file_v1_graphs_graph_id_tables_files_file_id_patch.py +0 -47
  120. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.4.dist-info}/WHEEL +0 -0
  121. {robosystems_client-0.2.2.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,11 +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:
70
- # Check if this is NDJSON - if so, skip parsing (will be handled by client)
71
64
  content_type = response.headers.get("content-type", "")
72
- stream_format = response.headers.get("x-stream-format", "")
73
- if "application/x-ndjson" in content_type or stream_format == "ndjson":
74
- return None # Skip parsing, client will handle NDJSON
65
+ if (
66
+ "application/x-ndjson" in content_type
67
+ or response.headers.get("x-stream-format") == "ndjson"
68
+ ):
69
+ return None
75
70
  response_200 = response.json()
76
71
  return response_200
77
72
 
@@ -131,12 +126,10 @@ def sync_detailed(
131
126
  client: AuthenticatedClient,
132
127
  body: CypherQueryRequest,
133
128
  mode: Union[None, ResponseMode, Unset] = UNSET,
134
- chunk_size: Union[Unset, int] = 1000,
129
+ chunk_size: Union[None, Unset, int] = UNSET,
135
130
  test_mode: Union[Unset, bool] = False,
136
- token: Union[None, Unset, str] = UNSET,
137
- authorization: Union[None, Unset, str] = UNSET,
138
131
  ) -> Response[Union[Any, HTTPValidationError]]:
139
- """Execute Cypher Query (Read-Only)
132
+ r"""Execute Cypher Query (Read-Only)
140
133
 
141
134
  Execute a read-only Cypher query with intelligent response optimization.
142
135
 
@@ -146,6 +139,16 @@ def sync_detailed(
146
139
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
147
140
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
148
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
+
149
152
  This endpoint automatically selects the best execution strategy based on:
150
153
  - Query characteristics (size, complexity)
151
154
  - Client capabilities (SSE, NDJSON, JSON)
@@ -193,12 +196,10 @@ def sync_detailed(
193
196
  Queue position is based on subscription tier for priority.
194
197
 
195
198
  Args:
196
- graph_id (str): Graph database identifier
199
+ graph_id (str):
197
200
  mode (Union[None, ResponseMode, Unset]): Response mode override
198
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
201
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
199
202
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
200
- token (Union[None, Unset, str]): JWT token for SSE authentication
201
- authorization (Union[None, Unset, str]):
202
203
  body (CypherQueryRequest): Request model for Cypher query execution.
203
204
 
204
205
  Raises:
@@ -215,8 +216,6 @@ def sync_detailed(
215
216
  mode=mode,
216
217
  chunk_size=chunk_size,
217
218
  test_mode=test_mode,
218
- token=token,
219
- authorization=authorization,
220
219
  )
221
220
 
222
221
  response = client.get_httpx_client().request(
@@ -232,12 +231,10 @@ def sync(
232
231
  client: AuthenticatedClient,
233
232
  body: CypherQueryRequest,
234
233
  mode: Union[None, ResponseMode, Unset] = UNSET,
235
- chunk_size: Union[Unset, int] = 1000,
234
+ chunk_size: Union[None, Unset, int] = UNSET,
236
235
  test_mode: Union[Unset, bool] = False,
237
- token: Union[None, Unset, str] = UNSET,
238
- authorization: Union[None, Unset, str] = UNSET,
239
236
  ) -> Optional[Union[Any, HTTPValidationError]]:
240
- """Execute Cypher Query (Read-Only)
237
+ r"""Execute Cypher Query (Read-Only)
241
238
 
242
239
  Execute a read-only Cypher query with intelligent response optimization.
243
240
 
@@ -247,6 +244,16 @@ def sync(
247
244
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
248
245
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
249
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
+
250
257
  This endpoint automatically selects the best execution strategy based on:
251
258
  - Query characteristics (size, complexity)
252
259
  - Client capabilities (SSE, NDJSON, JSON)
@@ -294,12 +301,10 @@ def sync(
294
301
  Queue position is based on subscription tier for priority.
295
302
 
296
303
  Args:
297
- graph_id (str): Graph database identifier
304
+ graph_id (str):
298
305
  mode (Union[None, ResponseMode, Unset]): Response mode override
299
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
306
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
300
307
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
301
- token (Union[None, Unset, str]): JWT token for SSE authentication
302
- authorization (Union[None, Unset, str]):
303
308
  body (CypherQueryRequest): Request model for Cypher query execution.
304
309
 
305
310
  Raises:
@@ -317,8 +322,6 @@ def sync(
317
322
  mode=mode,
318
323
  chunk_size=chunk_size,
319
324
  test_mode=test_mode,
320
- token=token,
321
- authorization=authorization,
322
325
  ).parsed
323
326
 
324
327
 
@@ -328,12 +331,10 @@ async def asyncio_detailed(
328
331
  client: AuthenticatedClient,
329
332
  body: CypherQueryRequest,
330
333
  mode: Union[None, ResponseMode, Unset] = UNSET,
331
- chunk_size: Union[Unset, int] = 1000,
334
+ chunk_size: Union[None, Unset, int] = UNSET,
332
335
  test_mode: Union[Unset, bool] = False,
333
- token: Union[None, Unset, str] = UNSET,
334
- authorization: Union[None, Unset, str] = UNSET,
335
336
  ) -> Response[Union[Any, HTTPValidationError]]:
336
- """Execute Cypher Query (Read-Only)
337
+ r"""Execute Cypher Query (Read-Only)
337
338
 
338
339
  Execute a read-only Cypher query with intelligent response optimization.
339
340
 
@@ -343,6 +344,16 @@ async def asyncio_detailed(
343
344
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
344
345
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
345
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
+
346
357
  This endpoint automatically selects the best execution strategy based on:
347
358
  - Query characteristics (size, complexity)
348
359
  - Client capabilities (SSE, NDJSON, JSON)
@@ -390,12 +401,10 @@ async def asyncio_detailed(
390
401
  Queue position is based on subscription tier for priority.
391
402
 
392
403
  Args:
393
- graph_id (str): Graph database identifier
404
+ graph_id (str):
394
405
  mode (Union[None, ResponseMode, Unset]): Response mode override
395
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
406
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
396
407
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
397
- token (Union[None, Unset, str]): JWT token for SSE authentication
398
- authorization (Union[None, Unset, str]):
399
408
  body (CypherQueryRequest): Request model for Cypher query execution.
400
409
 
401
410
  Raises:
@@ -412,8 +421,6 @@ async def asyncio_detailed(
412
421
  mode=mode,
413
422
  chunk_size=chunk_size,
414
423
  test_mode=test_mode,
415
- token=token,
416
- authorization=authorization,
417
424
  )
418
425
 
419
426
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -427,12 +434,10 @@ async def asyncio(
427
434
  client: AuthenticatedClient,
428
435
  body: CypherQueryRequest,
429
436
  mode: Union[None, ResponseMode, Unset] = UNSET,
430
- chunk_size: Union[Unset, int] = 1000,
437
+ chunk_size: Union[None, Unset, int] = UNSET,
431
438
  test_mode: Union[Unset, bool] = False,
432
- token: Union[None, Unset, str] = UNSET,
433
- authorization: Union[None, Unset, str] = UNSET,
434
439
  ) -> Optional[Union[Any, HTTPValidationError]]:
435
- """Execute Cypher Query (Read-Only)
440
+ r"""Execute Cypher Query (Read-Only)
436
441
 
437
442
  Execute a read-only Cypher query with intelligent response optimization.
438
443
 
@@ -442,6 +447,16 @@ async def asyncio(
442
447
  1. Create file upload: `POST /v1/graphs/{graph_id}/tables/{table_name}/files`
443
448
  2. Ingest to graph: `POST /v1/graphs/{graph_id}/tables/ingest`
444
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
+
445
460
  This endpoint automatically selects the best execution strategy based on:
446
461
  - Query characteristics (size, complexity)
447
462
  - Client capabilities (SSE, NDJSON, JSON)
@@ -489,12 +504,10 @@ async def asyncio(
489
504
  Queue position is based on subscription tier for priority.
490
505
 
491
506
  Args:
492
- graph_id (str): Graph database identifier
507
+ graph_id (str):
493
508
  mode (Union[None, ResponseMode, Unset]): Response mode override
494
- chunk_size (Union[Unset, int]): Rows per chunk for streaming Default: 1000.
509
+ chunk_size (Union[None, Unset, int]): Rows per chunk for streaming
495
510
  test_mode (Union[Unset, bool]): Enable test mode for better debugging Default: False.
496
- token (Union[None, Unset, str]): JWT token for SSE authentication
497
- authorization (Union[None, Unset, str]):
498
511
  body (CypherQueryRequest): Request model for Cypher query execution.
499
512
 
500
513
  Raises:
@@ -513,7 +526,5 @@ async def asyncio(
513
526
  mode=mode,
514
527
  chunk_size=chunk_size,
515
528
  test_mode=test_mode,
516
- token=token,
517
- authorization=authorization,
518
529
  )
519
530
  ).parsed