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
@@ -0,0 +1,41 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+
6
+ T = TypeVar("T", bound="FileStatusUpdate")
7
+
8
+
9
+ @_attrs_define
10
+ class FileStatusUpdate:
11
+ """
12
+ Attributes:
13
+ status (str): File status: 'uploaded' (ready for ingest), 'disabled' (exclude from ingest), 'archived' (soft
14
+ deleted)
15
+ """
16
+
17
+ status: str
18
+
19
+ def to_dict(self) -> dict[str, Any]:
20
+ status = self.status
21
+
22
+ field_dict: dict[str, Any] = {}
23
+
24
+ field_dict.update(
25
+ {
26
+ "status": status,
27
+ }
28
+ )
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
34
+ d = dict(src_dict)
35
+ status = d.pop("status")
36
+
37
+ file_status_update = cls(
38
+ status=status,
39
+ )
40
+
41
+ return file_status_update
@@ -0,0 +1,205 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="GetFileInfoResponse")
10
+
11
+
12
+ @_attrs_define
13
+ class GetFileInfoResponse:
14
+ """
15
+ Attributes:
16
+ file_id (str): Unique file identifier
17
+ graph_id (str): Graph database identifier
18
+ table_id (str): Table identifier
19
+ file_name (str): Original file name
20
+ file_format (str): File format (parquet, csv, etc.)
21
+ size_bytes (int): File size in bytes
22
+ upload_status (str): Current upload status
23
+ upload_method (str): Upload method used
24
+ s3_key (str): S3 object key
25
+ table_name (Union[None, Unset, str]): Table name
26
+ row_count (Union[None, Unset, int]): Estimated row count
27
+ created_at (Union[None, Unset, str]): File creation timestamp
28
+ uploaded_at (Union[None, Unset, str]): File upload completion timestamp
29
+ """
30
+
31
+ file_id: str
32
+ graph_id: str
33
+ table_id: str
34
+ file_name: str
35
+ file_format: str
36
+ size_bytes: int
37
+ upload_status: str
38
+ upload_method: str
39
+ s3_key: str
40
+ table_name: Union[None, Unset, str] = UNSET
41
+ row_count: Union[None, Unset, int] = UNSET
42
+ created_at: Union[None, Unset, str] = UNSET
43
+ uploaded_at: Union[None, Unset, str] = UNSET
44
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
45
+
46
+ def to_dict(self) -> dict[str, Any]:
47
+ file_id = self.file_id
48
+
49
+ graph_id = self.graph_id
50
+
51
+ table_id = self.table_id
52
+
53
+ file_name = self.file_name
54
+
55
+ file_format = self.file_format
56
+
57
+ size_bytes = self.size_bytes
58
+
59
+ upload_status = self.upload_status
60
+
61
+ upload_method = self.upload_method
62
+
63
+ s3_key = self.s3_key
64
+
65
+ table_name: Union[None, Unset, str]
66
+ if isinstance(self.table_name, Unset):
67
+ table_name = UNSET
68
+ else:
69
+ table_name = self.table_name
70
+
71
+ row_count: Union[None, Unset, int]
72
+ if isinstance(self.row_count, Unset):
73
+ row_count = UNSET
74
+ else:
75
+ row_count = self.row_count
76
+
77
+ created_at: Union[None, Unset, str]
78
+ if isinstance(self.created_at, Unset):
79
+ created_at = UNSET
80
+ else:
81
+ created_at = self.created_at
82
+
83
+ uploaded_at: Union[None, Unset, str]
84
+ if isinstance(self.uploaded_at, Unset):
85
+ uploaded_at = UNSET
86
+ else:
87
+ uploaded_at = self.uploaded_at
88
+
89
+ field_dict: dict[str, Any] = {}
90
+ field_dict.update(self.additional_properties)
91
+ field_dict.update(
92
+ {
93
+ "file_id": file_id,
94
+ "graph_id": graph_id,
95
+ "table_id": table_id,
96
+ "file_name": file_name,
97
+ "file_format": file_format,
98
+ "size_bytes": size_bytes,
99
+ "upload_status": upload_status,
100
+ "upload_method": upload_method,
101
+ "s3_key": s3_key,
102
+ }
103
+ )
104
+ if table_name is not UNSET:
105
+ field_dict["table_name"] = table_name
106
+ if row_count is not UNSET:
107
+ field_dict["row_count"] = row_count
108
+ if created_at is not UNSET:
109
+ field_dict["created_at"] = created_at
110
+ if uploaded_at is not UNSET:
111
+ field_dict["uploaded_at"] = uploaded_at
112
+
113
+ return field_dict
114
+
115
+ @classmethod
116
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
117
+ d = dict(src_dict)
118
+ file_id = d.pop("file_id")
119
+
120
+ graph_id = d.pop("graph_id")
121
+
122
+ table_id = d.pop("table_id")
123
+
124
+ file_name = d.pop("file_name")
125
+
126
+ file_format = d.pop("file_format")
127
+
128
+ size_bytes = d.pop("size_bytes")
129
+
130
+ upload_status = d.pop("upload_status")
131
+
132
+ upload_method = d.pop("upload_method")
133
+
134
+ s3_key = d.pop("s3_key")
135
+
136
+ def _parse_table_name(data: object) -> Union[None, Unset, str]:
137
+ if data is None:
138
+ return data
139
+ if isinstance(data, Unset):
140
+ return data
141
+ return cast(Union[None, Unset, str], data)
142
+
143
+ table_name = _parse_table_name(d.pop("table_name", UNSET))
144
+
145
+ def _parse_row_count(data: object) -> Union[None, Unset, int]:
146
+ if data is None:
147
+ return data
148
+ if isinstance(data, Unset):
149
+ return data
150
+ return cast(Union[None, Unset, int], data)
151
+
152
+ row_count = _parse_row_count(d.pop("row_count", UNSET))
153
+
154
+ def _parse_created_at(data: object) -> Union[None, Unset, str]:
155
+ if data is None:
156
+ return data
157
+ if isinstance(data, Unset):
158
+ return data
159
+ return cast(Union[None, Unset, str], data)
160
+
161
+ created_at = _parse_created_at(d.pop("created_at", UNSET))
162
+
163
+ def _parse_uploaded_at(data: object) -> Union[None, Unset, str]:
164
+ if data is None:
165
+ return data
166
+ if isinstance(data, Unset):
167
+ return data
168
+ return cast(Union[None, Unset, str], data)
169
+
170
+ uploaded_at = _parse_uploaded_at(d.pop("uploaded_at", UNSET))
171
+
172
+ get_file_info_response = cls(
173
+ file_id=file_id,
174
+ graph_id=graph_id,
175
+ table_id=table_id,
176
+ file_name=file_name,
177
+ file_format=file_format,
178
+ size_bytes=size_bytes,
179
+ upload_status=upload_status,
180
+ upload_method=upload_method,
181
+ s3_key=s3_key,
182
+ table_name=table_name,
183
+ row_count=row_count,
184
+ created_at=created_at,
185
+ uploaded_at=uploaded_at,
186
+ )
187
+
188
+ get_file_info_response.additional_properties = d
189
+ return get_file_info_response
190
+
191
+ @property
192
+ def additional_keys(self) -> list[str]:
193
+ return list(self.additional_properties.keys())
194
+
195
+ def __getitem__(self, key: str) -> Any:
196
+ return self.additional_properties[key]
197
+
198
+ def __setitem__(self, key: str, value: Any) -> None:
199
+ self.additional_properties[key] = value
200
+
201
+ def __delitem__(self, key: str) -> None:
202
+ del self.additional_properties[key]
203
+
204
+ def __contains__(self, key: str) -> bool:
205
+ return key in self.additional_properties
@@ -0,0 +1,105 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.file_info import FileInfo
9
+
10
+
11
+ T = TypeVar("T", bound="ListTableFilesResponse")
12
+
13
+
14
+ @_attrs_define
15
+ class ListTableFilesResponse:
16
+ """
17
+ Attributes:
18
+ graph_id (str): Graph database identifier
19
+ table_name (str): Table name
20
+ files (list['FileInfo']): List of files in the table
21
+ total_files (int): Total number of files
22
+ total_size_bytes (int): Total size of all files in bytes
23
+ """
24
+
25
+ graph_id: str
26
+ table_name: str
27
+ files: list["FileInfo"]
28
+ total_files: int
29
+ total_size_bytes: int
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ graph_id = self.graph_id
34
+
35
+ table_name = self.table_name
36
+
37
+ files = []
38
+ for files_item_data in self.files:
39
+ files_item = files_item_data.to_dict()
40
+ files.append(files_item)
41
+
42
+ total_files = self.total_files
43
+
44
+ total_size_bytes = self.total_size_bytes
45
+
46
+ field_dict: dict[str, Any] = {}
47
+ field_dict.update(self.additional_properties)
48
+ field_dict.update(
49
+ {
50
+ "graph_id": graph_id,
51
+ "table_name": table_name,
52
+ "files": files,
53
+ "total_files": total_files,
54
+ "total_size_bytes": total_size_bytes,
55
+ }
56
+ )
57
+
58
+ return field_dict
59
+
60
+ @classmethod
61
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
62
+ from ..models.file_info import FileInfo
63
+
64
+ d = dict(src_dict)
65
+ graph_id = d.pop("graph_id")
66
+
67
+ table_name = d.pop("table_name")
68
+
69
+ files = []
70
+ _files = d.pop("files")
71
+ for files_item_data in _files:
72
+ files_item = FileInfo.from_dict(files_item_data)
73
+
74
+ files.append(files_item)
75
+
76
+ total_files = d.pop("total_files")
77
+
78
+ total_size_bytes = d.pop("total_size_bytes")
79
+
80
+ list_table_files_response = cls(
81
+ graph_id=graph_id,
82
+ table_name=table_name,
83
+ files=files,
84
+ total_files=total_files,
85
+ total_size_bytes=total_size_bytes,
86
+ )
87
+
88
+ list_table_files_response.additional_properties = d
89
+ return list_table_files_response
90
+
91
+ @property
92
+ def additional_keys(self) -> list[str]:
93
+ return list(self.additional_properties.keys())
94
+
95
+ def __getitem__(self, key: str) -> Any:
96
+ return self.additional_properties[key]
97
+
98
+ def __setitem__(self, key: str, value: Any) -> None:
99
+ self.additional_properties[key] = value
100
+
101
+ def __delitem__(self, key: str) -> None:
102
+ del self.additional_properties[key]
103
+
104
+ def __contains__(self, key: str) -> bool:
105
+ return key in self.additional_properties
@@ -24,10 +24,12 @@ class SchemaExportResponse:
24
24
 
25
25
  Attributes:
26
26
  graph_id (str): Graph ID
27
- schema_definition (Union['SchemaExportResponseSchemaDefinitionType0', str]): Exported schema definition
27
+ schema_definition (Union['SchemaExportResponseSchemaDefinitionType0', str]): Exported schema definition (format
28
+ depends on 'format' parameter)
28
29
  format_ (str): Export format used
29
30
  exported_at (str): Export timestamp
30
- data_stats (Union['SchemaExportResponseDataStatsType0', None, Unset]): Data statistics if requested
31
+ data_stats (Union['SchemaExportResponseDataStatsType0', None, Unset]): Data statistics if requested (only when
32
+ include_data_stats=true)
31
33
  """
32
34
 
33
35
  graph_id: str
@@ -0,0 +1,77 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.schema_info_response_schema import SchemaInfoResponseSchema
9
+
10
+
11
+ T = TypeVar("T", bound="SchemaInfoResponse")
12
+
13
+
14
+ @_attrs_define
15
+ class SchemaInfoResponse:
16
+ """Response model for runtime schema introspection.
17
+
18
+ This model represents the actual current state of the graph database,
19
+ showing what node labels, relationship types, and properties exist right now.
20
+
21
+ Attributes:
22
+ graph_id (str): Graph database identifier
23
+ schema (SchemaInfoResponseSchema): Runtime schema information showing actual database structure
24
+ """
25
+
26
+ graph_id: str
27
+ schema: "SchemaInfoResponseSchema"
28
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
+
30
+ def to_dict(self) -> dict[str, Any]:
31
+ graph_id = self.graph_id
32
+
33
+ schema = self.schema.to_dict()
34
+
35
+ field_dict: dict[str, Any] = {}
36
+ field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "graph_id": graph_id,
40
+ "schema": schema,
41
+ }
42
+ )
43
+
44
+ return field_dict
45
+
46
+ @classmethod
47
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
48
+ from ..models.schema_info_response_schema import SchemaInfoResponseSchema
49
+
50
+ d = dict(src_dict)
51
+ graph_id = d.pop("graph_id")
52
+
53
+ schema = SchemaInfoResponseSchema.from_dict(d.pop("schema"))
54
+
55
+ schema_info_response = cls(
56
+ graph_id=graph_id,
57
+ schema=schema,
58
+ )
59
+
60
+ schema_info_response.additional_properties = d
61
+ return schema_info_response
62
+
63
+ @property
64
+ def additional_keys(self) -> list[str]:
65
+ return list(self.additional_properties.keys())
66
+
67
+ def __getitem__(self, key: str) -> Any:
68
+ return self.additional_properties[key]
69
+
70
+ def __setitem__(self, key: str, value: Any) -> None:
71
+ self.additional_properties[key] = value
72
+
73
+ def __delitem__(self, key: str) -> None:
74
+ del self.additional_properties[key]
75
+
76
+ def __contains__(self, key: str) -> bool:
77
+ return key in self.additional_properties
@@ -4,12 +4,12 @@ from typing import Any, TypeVar
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
6
6
 
7
- T = TypeVar("T", bound="GetGraphSchemaResponseGetgraphschema")
7
+ T = TypeVar("T", bound="SchemaInfoResponseSchema")
8
8
 
9
9
 
10
10
  @_attrs_define
11
- class GetGraphSchemaResponseGetgraphschema:
12
- """ """
11
+ class SchemaInfoResponseSchema:
12
+ """Runtime schema information showing actual database structure"""
13
13
 
14
14
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
15
15
 
@@ -22,10 +22,10 @@ class GetGraphSchemaResponseGetgraphschema:
22
22
  @classmethod
23
23
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
24
  d = dict(src_dict)
25
- get_graph_schema_response_getgraphschema = cls()
25
+ schema_info_response_schema = cls()
26
26
 
27
- get_graph_schema_response_getgraphschema.additional_properties = d
28
- return get_graph_schema_response_getgraphschema
27
+ schema_info_response_schema.additional_properties = d
28
+ return schema_info_response_schema
29
29
 
30
30
  @property
31
31
  def additional_keys(self) -> list[str]:
@@ -25,12 +25,13 @@ class SchemaValidationResponse:
25
25
  Attributes:
26
26
  valid (bool): Whether the schema is valid
27
27
  message (str): Validation message
28
- errors (Union[None, Unset, list[str]]): List of validation errors
29
- warnings (Union[None, Unset, list[str]]): List of warnings
30
- stats (Union['SchemaValidationResponseStatsType0', None, Unset]): Schema statistics (nodes, relationships,
31
- properties)
32
- compatibility (Union['SchemaValidationResponseCompatibilityType0', None, Unset]): Compatibility check results if
33
- requested
28
+ errors (Union[None, Unset, list[str]]): List of validation errors (only present when valid=false)
29
+ warnings (Union[None, Unset, list[str]]): List of validation warnings (schema is still valid but has potential
30
+ issues)
31
+ stats (Union['SchemaValidationResponseStatsType0', None, Unset]): Schema statistics (only present when
32
+ valid=true)
33
+ compatibility (Union['SchemaValidationResponseCompatibilityType0', None, Unset]): Compatibility check results
34
+ (only when check_compatibility specified)
34
35
  """
35
36
 
36
37
  valid: bool
@@ -1,8 +1,10 @@
1
1
  from collections.abc import Mapping
2
- from typing import Any, TypeVar
2
+ from typing import Any, TypeVar, Union, cast
3
3
 
4
4
  from attrs import define as _attrs_define
5
5
 
6
+ from ..types import UNSET, Unset
7
+
6
8
  T = TypeVar("T", bound="TableQueryRequest")
7
9
 
8
10
 
@@ -10,14 +12,27 @@ T = TypeVar("T", bound="TableQueryRequest")
10
12
  class TableQueryRequest:
11
13
  """
12
14
  Attributes:
13
- sql (str): SQL query to execute on staging tables
15
+ sql (str): SQL query to execute on staging tables. Use ? placeholders or $param_name for dynamic values to
16
+ prevent SQL injection.
17
+ parameters (Union[None, Unset, list[Any]]): Query parameters for safe value substitution. ALWAYS use parameters
18
+ instead of string concatenation.
14
19
  """
15
20
 
16
21
  sql: str
22
+ parameters: Union[None, Unset, list[Any]] = UNSET
17
23
 
18
24
  def to_dict(self) -> dict[str, Any]:
19
25
  sql = self.sql
20
26
 
27
+ parameters: Union[None, Unset, list[Any]]
28
+ if isinstance(self.parameters, Unset):
29
+ parameters = UNSET
30
+ elif isinstance(self.parameters, list):
31
+ parameters = self.parameters
32
+
33
+ else:
34
+ parameters = self.parameters
35
+
21
36
  field_dict: dict[str, Any] = {}
22
37
 
23
38
  field_dict.update(
@@ -25,6 +40,8 @@ class TableQueryRequest:
25
40
  "sql": sql,
26
41
  }
27
42
  )
43
+ if parameters is not UNSET:
44
+ field_dict["parameters"] = parameters
28
45
 
29
46
  return field_dict
30
47
 
@@ -33,8 +50,26 @@ class TableQueryRequest:
33
50
  d = dict(src_dict)
34
51
  sql = d.pop("sql")
35
52
 
53
+ def _parse_parameters(data: object) -> Union[None, Unset, list[Any]]:
54
+ if data is None:
55
+ return data
56
+ if isinstance(data, Unset):
57
+ return data
58
+ try:
59
+ if not isinstance(data, list):
60
+ raise TypeError()
61
+ parameters_type_0 = cast(list[Any], data)
62
+
63
+ return parameters_type_0
64
+ except: # noqa: E722
65
+ pass
66
+ return cast(Union[None, Unset, list[Any]], data)
67
+
68
+ parameters = _parse_parameters(d.pop("parameters", UNSET))
69
+
36
70
  table_query_request = cls(
37
71
  sql=sql,
72
+ parameters=parameters,
38
73
  )
39
74
 
40
75
  return table_query_request
@@ -4,14 +4,11 @@ from typing import Any, TypeVar
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
6
6
 
7
- T = TypeVar(
8
- "T",
9
- bound="GetFileInfoV1GraphsGraphIdTablesFilesFileIdGetResponseGetFileInfoV1GraphsGraphIdTablesFilesFileIdGet",
10
- )
7
+ T = TypeVar("T", bound="UpdateFileStatusResponseUpdatefilestatus")
11
8
 
12
9
 
13
10
  @_attrs_define
14
- class GetFileInfoV1GraphsGraphIdTablesFilesFileIdGetResponseGetFileInfoV1GraphsGraphIdTablesFilesFileIdGet:
11
+ class UpdateFileStatusResponseUpdatefilestatus:
15
12
  """ """
16
13
 
17
14
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
@@ -25,10 +22,10 @@ class GetFileInfoV1GraphsGraphIdTablesFilesFileIdGetResponseGetFileInfoV1GraphsG
25
22
  @classmethod
26
23
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
27
24
  d = dict(src_dict)
28
- 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 = cls()
25
+ update_file_status_response_updatefilestatus = cls()
29
26
 
30
- 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.additional_properties = d
31
- return 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
27
+ update_file_status_response_updatefilestatus.additional_properties = d
28
+ return update_file_status_response_updatefilestatus
32
29
 
33
30
  @property
34
31
  def additional_keys(self) -> list[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robosystems-client
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Python Client for RoboSystems financial graph database API
5
5
  Author: RFS LLC
6
6
  License: MIT
@@ -35,9 +35,9 @@ Provides-Extra: all
35
35
  Requires-Dist: pandas>=1.5.0; extra == 'all'
36
36
  Requires-Dist: pyarrow>=10.0.0; extra == 'all'
37
37
  Provides-Extra: dev
38
+ Requires-Dist: basedpyright>=1.21.0; extra == 'dev'
38
39
  Requires-Dist: build>=1.0.0; extra == 'dev'
39
40
  Requires-Dist: openapi-python-client>=0.21.8; extra == 'dev'
40
- Requires-Dist: pyright>=1.1.402; extra == 'dev'
41
41
  Requires-Dist: pytest-asyncio>=0.26.0; extra == 'dev'
42
42
  Requires-Dist: pytest-httpx>=0.30.0; extra == 'dev'
43
43
  Requires-Dist: pytest>=8.3.5; extra == 'dev'
@@ -80,8 +80,6 @@ pip install robosystems-client[tables]
80
80
  pip install robosystems-client[all]
81
81
  ```
82
82
 
83
- See the [examples](./examples) directory for usage guides.
84
-
85
83
  ## API Reference
86
84
 
87
85
  - [API reference](https://api.robosystems.ai)