openparser-sdk 0.0.1__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.
Files changed (173) hide show
  1. openparser/__init__.py +54 -0
  2. openparser/_files.py +43 -0
  3. openparser/_generated/__init__.py +8 -0
  4. openparser/_generated/api/__init__.py +1 -0
  5. openparser/_generated/api/extract/__init__.py +1 -0
  6. openparser/_generated/api/extract/extract_async.py +280 -0
  7. openparser/_generated/api/extract/extract_batch.py +284 -0
  8. openparser/_generated/api/extract/extract_sync.py +315 -0
  9. openparser/_generated/api/extract/suggest_schema.py +260 -0
  10. openparser/_generated/api/files/__init__.py +1 -0
  11. openparser/_generated/api/files/create_file.py +237 -0
  12. openparser/_generated/api/files/delete_file.py +200 -0
  13. openparser/_generated/api/files/get_file.py +200 -0
  14. openparser/_generated/api/files/get_file_content.py +198 -0
  15. openparser/_generated/api/jobs/__init__.py +1 -0
  16. openparser/_generated/api/jobs/get_job.py +261 -0
  17. openparser/_generated/api/jobs/get_job_result.py +305 -0
  18. openparser/_generated/api/jobs/get_job_source.py +233 -0
  19. openparser/_generated/api/jobs/list_jobs.py +340 -0
  20. openparser/_generated/api/models/__init__.py +1 -0
  21. openparser/_generated/api/models/list_llm_models.py +288 -0
  22. openparser/_generated/api/models/list_ocr_models.py +184 -0
  23. openparser/_generated/api/parse/__init__.py +1 -0
  24. openparser/_generated/api/parse/parse_async.py +316 -0
  25. openparser/_generated/api/parse/parse_batch.py +280 -0
  26. openparser/_generated/api/parse/parse_sync.py +369 -0
  27. openparser/_generated/api/pipelines/__init__.py +1 -0
  28. openparser/_generated/api/pipelines/create_extraction_pipeline.py +242 -0
  29. openparser/_generated/api/pipelines/delete_extraction_pipeline.py +212 -0
  30. openparser/_generated/api/pipelines/get_extraction_pipeline.py +212 -0
  31. openparser/_generated/api/pipelines/list_extraction_pipelines.py +180 -0
  32. openparser/_generated/api/pipelines/update_extraction_pipeline.py +258 -0
  33. openparser/_generated/client.py +270 -0
  34. openparser/_generated/errors.py +14 -0
  35. openparser/_generated/models/__init__.py +261 -0
  36. openparser/_generated/models/batch_child_page.py +97 -0
  37. openparser/_generated/models/batch_child_summary.py +195 -0
  38. openparser/_generated/models/batch_job_accepted.py +139 -0
  39. openparser/_generated/models/batch_job_accepted_operation.py +8 -0
  40. openparser/_generated/models/batch_summary_counts.py +97 -0
  41. openparser/_generated/models/bounding_box.py +82 -0
  42. openparser/_generated/models/chunk_provenance_span.py +97 -0
  43. openparser/_generated/models/content_kind.py +10 -0
  44. openparser/_generated/models/create_extraction_pipeline_request.py +177 -0
  45. openparser/_generated/models/create_extraction_pipeline_request_grounding.py +8 -0
  46. openparser/_generated/models/create_extraction_pipeline_request_llm_options.py +84 -0
  47. openparser/_generated/models/create_extraction_pipeline_request_llm_options_reasoning_effort_type_1.py +13 -0
  48. openparser/_generated/models/create_extraction_pipeline_request_ocr_options.py +78 -0
  49. openparser/_generated/models/create_extraction_pipeline_request_schema.py +68 -0
  50. openparser/_generated/models/create_file_body.py +78 -0
  51. openparser/_generated/models/delete_extraction_pipeline_response.py +66 -0
  52. openparser/_generated/models/delete_file_response.py +57 -0
  53. openparser/_generated/models/error_body.py +106 -0
  54. openparser/_generated/models/error_body_details.py +65 -0
  55. openparser/_generated/models/error_response.py +65 -0
  56. openparser/_generated/models/extract_async_body.py +136 -0
  57. openparser/_generated/models/extract_batch_body.py +143 -0
  58. openparser/_generated/models/extract_batch_item.py +207 -0
  59. openparser/_generated/models/extract_batch_item_grounding.py +8 -0
  60. openparser/_generated/models/extract_batch_item_llm_options.py +84 -0
  61. openparser/_generated/models/extract_batch_item_llm_options_reasoning_effort_type_1.py +13 -0
  62. openparser/_generated/models/extract_batch_item_ocr_options.py +78 -0
  63. openparser/_generated/models/extract_batch_item_schema.py +65 -0
  64. openparser/_generated/models/extract_batch_request.py +99 -0
  65. openparser/_generated/models/extract_batch_request_items_item.py +201 -0
  66. openparser/_generated/models/extract_batch_request_items_item_grounding.py +8 -0
  67. openparser/_generated/models/extract_batch_request_items_item_llm_options.py +84 -0
  68. openparser/_generated/models/extract_batch_request_items_item_llm_options_reasoning_effort_type_1.py +13 -0
  69. openparser/_generated/models/extract_batch_request_items_item_ocr_options.py +78 -0
  70. openparser/_generated/models/extract_batch_request_items_item_schema.py +65 -0
  71. openparser/_generated/models/extract_batch_request_output_format.py +8 -0
  72. openparser/_generated/models/extract_request.py +226 -0
  73. openparser/_generated/models/extract_request_grounding.py +8 -0
  74. openparser/_generated/models/extract_request_llm_options.py +84 -0
  75. openparser/_generated/models/extract_request_llm_options_reasoning_effort_type_1.py +13 -0
  76. openparser/_generated/models/extract_request_ocr_options.py +78 -0
  77. openparser/_generated/models/extract_request_output_format.py +8 -0
  78. openparser/_generated/models/extract_request_schema.py +65 -0
  79. openparser/_generated/models/extract_sync_body.py +136 -0
  80. openparser/_generated/models/extraction_attempt.py +122 -0
  81. openparser/_generated/models/extraction_attempt_kind.py +8 -0
  82. openparser/_generated/models/extraction_attempt_status.py +9 -0
  83. openparser/_generated/models/extraction_chunk.py +184 -0
  84. openparser/_generated/models/extraction_citation.py +169 -0
  85. openparser/_generated/models/extraction_citation_granularity.py +8 -0
  86. openparser/_generated/models/extraction_citation_source_type.py +16 -0
  87. openparser/_generated/models/extraction_grounding_field.py +102 -0
  88. openparser/_generated/models/extraction_grounding_mode.py +8 -0
  89. openparser/_generated/models/extraction_grounding_result.py +87 -0
  90. openparser/_generated/models/extraction_pipeline.py +201 -0
  91. openparser/_generated/models/extraction_pipeline_list_response.py +76 -0
  92. openparser/_generated/models/extraction_pipeline_llm_options.py +84 -0
  93. openparser/_generated/models/extraction_pipeline_llm_options_reasoning_effort_type_0_type_1.py +13 -0
  94. openparser/_generated/models/extraction_pipeline_ocr_options.py +73 -0
  95. openparser/_generated/models/extraction_pipeline_schema.py +67 -0
  96. openparser/_generated/models/extraction_terminal_result.py +206 -0
  97. openparser/_generated/models/extraction_terminal_result_reasoning_effort_type_0.py +13 -0
  98. openparser/_generated/models/extraction_usage_totals.py +80 -0
  99. openparser/_generated/models/job.py +437 -0
  100. openparser/_generated/models/job_accepted.py +131 -0
  101. openparser/_generated/models/job_accepted_operation.py +8 -0
  102. openparser/_generated/models/job_extraction_schema.py +65 -0
  103. openparser/_generated/models/job_failure.py +98 -0
  104. openparser/_generated/models/job_failure_details.py +65 -0
  105. openparser/_generated/models/job_list_response.py +91 -0
  106. openparser/_generated/models/job_operation.py +10 -0
  107. openparser/_generated/models/job_progress.py +68 -0
  108. openparser/_generated/models/job_related_extractions_item.py +145 -0
  109. openparser/_generated/models/job_status.py +11 -0
  110. openparser/_generated/models/job_summary.py +264 -0
  111. openparser/_generated/models/json_schema_object.py +66 -0
  112. openparser/_generated/models/list_llm_models_mode.py +8 -0
  113. openparser/_generated/models/ocr_llm_model_catalog_entry.py +257 -0
  114. openparser/_generated/models/ocr_llm_model_catalog_entry_pricing.py +76 -0
  115. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0.py +134 -0
  116. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_default_effort_type_0.py +13 -0
  117. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_supported_efforts_type_0_item.py +13 -0
  118. openparser/_generated/models/ocr_llm_model_catalog_entry_recommendation.py +8 -0
  119. openparser/_generated/models/ocr_llm_models_response.py +150 -0
  120. openparser/_generated/models/ocr_llm_models_response_mode.py +8 -0
  121. openparser/_generated/models/ocr_model.py +7 -0
  122. openparser/_generated/models/ocr_model_catalog_entry.py +131 -0
  123. openparser/_generated/models/ocr_model_catalog_entry_availability.py +9 -0
  124. openparser/_generated/models/ocr_model_catalog_entry_capabilities.py +97 -0
  125. openparser/_generated/models/ocr_model_catalog_entry_capabilities_options.py +73 -0
  126. openparser/_generated/models/ocr_model_catalog_entry_option_defaults.py +73 -0
  127. openparser/_generated/models/ocr_model_catalog_entry_pricing.py +68 -0
  128. openparser/_generated/models/ocr_models_response.py +76 -0
  129. openparser/_generated/models/ocr_output_format.py +8 -0
  130. openparser/_generated/models/paddle_raw_profile.py +76 -0
  131. openparser/_generated/models/paddle_raw_profile_options.py +115 -0
  132. openparser/_generated/models/page_block.py +332 -0
  133. openparser/_generated/models/page_block_kind.py +9 -0
  134. openparser/_generated/models/page_block_polygon_type_0_item.py +65 -0
  135. openparser/_generated/models/parse_async_body.py +133 -0
  136. openparser/_generated/models/parse_batch_body.py +143 -0
  137. openparser/_generated/models/parse_batch_item.py +109 -0
  138. openparser/_generated/models/parse_batch_item_ocr_options.py +78 -0
  139. openparser/_generated/models/parse_batch_request.py +100 -0
  140. openparser/_generated/models/parse_batch_request_items_item.py +108 -0
  141. openparser/_generated/models/parse_batch_request_items_item_ocr_options.py +78 -0
  142. openparser/_generated/models/parse_batch_request_output_format.py +8 -0
  143. openparser/_generated/models/parse_request.py +112 -0
  144. openparser/_generated/models/parse_request_ocr_options.py +78 -0
  145. openparser/_generated/models/parse_request_output_format.py +8 -0
  146. openparser/_generated/models/parse_sync_body.py +133 -0
  147. openparser/_generated/models/parsed_document.py +187 -0
  148. openparser/_generated/models/public_file.py +117 -0
  149. openparser/_generated/models/raw_parse_result.py +110 -0
  150. openparser/_generated/models/raw_parse_result_result.py +65 -0
  151. openparser/_generated/models/region.py +224 -0
  152. openparser/_generated/models/region_content.py +155 -0
  153. openparser/_generated/models/region_polygon_type_0_item.py +65 -0
  154. openparser/_generated/models/region_type.py +16 -0
  155. openparser/_generated/models/suggest_schema_request.py +69 -0
  156. openparser/_generated/models/suggest_schema_response.py +74 -0
  157. openparser/_generated/models/suggest_schema_response_schema.py +66 -0
  158. openparser/_generated/models/update_extraction_pipeline_request.py +227 -0
  159. openparser/_generated/models/update_extraction_pipeline_request_grounding.py +8 -0
  160. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0.py +84 -0
  161. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1.py +13 -0
  162. openparser/_generated/models/update_extraction_pipeline_request_ocr_options_type_0.py +78 -0
  163. openparser/_generated/models/update_extraction_pipeline_request_schema.py +67 -0
  164. openparser/_generated/py.typed +1 -0
  165. openparser/_generated/types.py +53 -0
  166. openparser/_telemetry.py +34 -0
  167. openparser/client.py +541 -0
  168. openparser/errors.py +172 -0
  169. openparser/py.typed +0 -0
  170. openparser_sdk-0.0.1.dist-info/METADATA +178 -0
  171. openparser_sdk-0.0.1.dist-info/RECORD +173 -0
  172. openparser_sdk-0.0.1.dist-info/WHEEL +4 -0
  173. openparser_sdk-0.0.1.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,340 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.error_response import ErrorResponse
12
+ from ...models.job_list_response import JobListResponse
13
+ from ...models.job_operation import JobOperation
14
+ from ...models.job_status import JobStatus
15
+ from ...types import UNSET, Unset
16
+ from typing import cast
17
+
18
+
19
+
20
+ def _get_kwargs(
21
+ *,
22
+ cursor: str | Unset = UNSET,
23
+ limit: int | Unset = 25,
24
+ status: JobStatus | Unset = UNSET,
25
+ operation: JobOperation | Unset = UNSET,
26
+
27
+ ) -> dict[str, Any]:
28
+
29
+
30
+
31
+
32
+ params: dict[str, Any] = {}
33
+
34
+ params["cursor"] = cursor
35
+
36
+ params["limit"] = limit
37
+
38
+ json_status: str | Unset = UNSET
39
+ if not isinstance(status, Unset):
40
+ json_status = status.value
41
+
42
+ params["status"] = json_status
43
+
44
+ json_operation: str | Unset = UNSET
45
+ if not isinstance(operation, Unset):
46
+ json_operation = operation.value
47
+
48
+ params["operation"] = json_operation
49
+
50
+
51
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
52
+
53
+
54
+ _kwargs: dict[str, Any] = {
55
+ "method": "get",
56
+ "url": "/jobs",
57
+ "params": params,
58
+ }
59
+
60
+
61
+ return _kwargs
62
+
63
+
64
+
65
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ErrorResponse | JobListResponse | None:
66
+ if response.status_code == 200:
67
+ response_200 = JobListResponse.from_dict(response.json())
68
+
69
+
70
+
71
+ return response_200
72
+
73
+ if response.status_code == 400:
74
+ response_400 = ErrorResponse.from_dict(response.json())
75
+
76
+
77
+
78
+ return response_400
79
+
80
+ if response.status_code == 401:
81
+ response_401 = ErrorResponse.from_dict(response.json())
82
+
83
+
84
+
85
+ return response_401
86
+
87
+ if response.status_code == 403:
88
+ response_403 = ErrorResponse.from_dict(response.json())
89
+
90
+
91
+
92
+ return response_403
93
+
94
+ if response.status_code == 429:
95
+ response_429 = ErrorResponse.from_dict(response.json())
96
+
97
+
98
+
99
+ return response_429
100
+
101
+ if client.raise_on_unexpected_status:
102
+ raise errors.UnexpectedStatus(response.status_code, response.content)
103
+ else:
104
+ return None
105
+
106
+
107
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ErrorResponse | JobListResponse]:
108
+ return Response(
109
+ status_code=HTTPStatus(response.status_code),
110
+ content=response.content,
111
+ headers=response.headers,
112
+ parsed=_parse_response(client=client, response=response),
113
+ )
114
+
115
+
116
+ def sync_detailed(
117
+ *,
118
+ client: AuthenticatedClient | Client,
119
+ cursor: str | Unset = UNSET,
120
+ limit: int | Unset = 25,
121
+ status: JobStatus | Unset = UNSET,
122
+ operation: JobOperation | Unset = UNSET,
123
+
124
+ ) -> Response[ErrorResponse | JobListResponse]:
125
+ """ List jobs
126
+
127
+ Tenant-scoped chronological list of top-level OCR jobs (batch children are omitted).
128
+ Returns lightweight summaries only — full results remain on `GET /jobs/{id}`.
129
+ Cursor pagination is stable newest-first with an `id` tie-break. Optional `status`
130
+ and `operation` filters are validated strictly; unknown values return `400`.
131
+
132
+ Args:
133
+ cursor (str | Unset):
134
+ limit (int | Unset): Default: 25.
135
+ status (JobStatus | Unset): Durable job status. For batch parent jobs, status is derived
136
+ from children after each
137
+ child transition:
138
+ 1. If any child is non-terminal, the parent remains `queued` only while every child is
139
+ queued; it becomes `running` once any child is running or terminal.
140
+ 2. When every child is terminal and any child is `indeterminate`, the parent is
141
+ `indeterminate`.
142
+ 3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
143
+ the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
144
+ success/failure closes as parent `succeeded` while preserving failed children in
145
+ summaries).
146
+ 4. When every child is `succeeded`, the parent is `succeeded`.
147
+
148
+ Partial failures are always retained on child summaries; parent status does not drop
149
+ failed children from results.
150
+ operation (JobOperation | Unset):
151
+
152
+ Raises:
153
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
154
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
155
+
156
+ Returns:
157
+ Response[ErrorResponse | JobListResponse]
158
+ """
159
+
160
+
161
+ kwargs = _get_kwargs(
162
+ cursor=cursor,
163
+ limit=limit,
164
+ status=status,
165
+ operation=operation,
166
+
167
+ )
168
+
169
+ response = client.get_httpx_client().request(
170
+ **kwargs,
171
+ )
172
+
173
+ return _build_response(client=client, response=response)
174
+
175
+ def sync(
176
+ *,
177
+ client: AuthenticatedClient | Client,
178
+ cursor: str | Unset = UNSET,
179
+ limit: int | Unset = 25,
180
+ status: JobStatus | Unset = UNSET,
181
+ operation: JobOperation | Unset = UNSET,
182
+
183
+ ) -> ErrorResponse | JobListResponse | None:
184
+ """ List jobs
185
+
186
+ Tenant-scoped chronological list of top-level OCR jobs (batch children are omitted).
187
+ Returns lightweight summaries only — full results remain on `GET /jobs/{id}`.
188
+ Cursor pagination is stable newest-first with an `id` tie-break. Optional `status`
189
+ and `operation` filters are validated strictly; unknown values return `400`.
190
+
191
+ Args:
192
+ cursor (str | Unset):
193
+ limit (int | Unset): Default: 25.
194
+ status (JobStatus | Unset): Durable job status. For batch parent jobs, status is derived
195
+ from children after each
196
+ child transition:
197
+ 1. If any child is non-terminal, the parent remains `queued` only while every child is
198
+ queued; it becomes `running` once any child is running or terminal.
199
+ 2. When every child is terminal and any child is `indeterminate`, the parent is
200
+ `indeterminate`.
201
+ 3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
202
+ the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
203
+ success/failure closes as parent `succeeded` while preserving failed children in
204
+ summaries).
205
+ 4. When every child is `succeeded`, the parent is `succeeded`.
206
+
207
+ Partial failures are always retained on child summaries; parent status does not drop
208
+ failed children from results.
209
+ operation (JobOperation | Unset):
210
+
211
+ Raises:
212
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
213
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
214
+
215
+ Returns:
216
+ ErrorResponse | JobListResponse
217
+ """
218
+
219
+
220
+ return sync_detailed(
221
+ client=client,
222
+ cursor=cursor,
223
+ limit=limit,
224
+ status=status,
225
+ operation=operation,
226
+
227
+ ).parsed
228
+
229
+ async def asyncio_detailed(
230
+ *,
231
+ client: AuthenticatedClient | Client,
232
+ cursor: str | Unset = UNSET,
233
+ limit: int | Unset = 25,
234
+ status: JobStatus | Unset = UNSET,
235
+ operation: JobOperation | Unset = UNSET,
236
+
237
+ ) -> Response[ErrorResponse | JobListResponse]:
238
+ """ List jobs
239
+
240
+ Tenant-scoped chronological list of top-level OCR jobs (batch children are omitted).
241
+ Returns lightweight summaries only — full results remain on `GET /jobs/{id}`.
242
+ Cursor pagination is stable newest-first with an `id` tie-break. Optional `status`
243
+ and `operation` filters are validated strictly; unknown values return `400`.
244
+
245
+ Args:
246
+ cursor (str | Unset):
247
+ limit (int | Unset): Default: 25.
248
+ status (JobStatus | Unset): Durable job status. For batch parent jobs, status is derived
249
+ from children after each
250
+ child transition:
251
+ 1. If any child is non-terminal, the parent remains `queued` only while every child is
252
+ queued; it becomes `running` once any child is running or terminal.
253
+ 2. When every child is terminal and any child is `indeterminate`, the parent is
254
+ `indeterminate`.
255
+ 3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
256
+ the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
257
+ success/failure closes as parent `succeeded` while preserving failed children in
258
+ summaries).
259
+ 4. When every child is `succeeded`, the parent is `succeeded`.
260
+
261
+ Partial failures are always retained on child summaries; parent status does not drop
262
+ failed children from results.
263
+ operation (JobOperation | Unset):
264
+
265
+ Raises:
266
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
267
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
268
+
269
+ Returns:
270
+ Response[ErrorResponse | JobListResponse]
271
+ """
272
+
273
+
274
+ kwargs = _get_kwargs(
275
+ cursor=cursor,
276
+ limit=limit,
277
+ status=status,
278
+ operation=operation,
279
+
280
+ )
281
+
282
+ response = await client.get_async_httpx_client().request(
283
+ **kwargs
284
+ )
285
+
286
+ return _build_response(client=client, response=response)
287
+
288
+ async def asyncio(
289
+ *,
290
+ client: AuthenticatedClient | Client,
291
+ cursor: str | Unset = UNSET,
292
+ limit: int | Unset = 25,
293
+ status: JobStatus | Unset = UNSET,
294
+ operation: JobOperation | Unset = UNSET,
295
+
296
+ ) -> ErrorResponse | JobListResponse | None:
297
+ """ List jobs
298
+
299
+ Tenant-scoped chronological list of top-level OCR jobs (batch children are omitted).
300
+ Returns lightweight summaries only — full results remain on `GET /jobs/{id}`.
301
+ Cursor pagination is stable newest-first with an `id` tie-break. Optional `status`
302
+ and `operation` filters are validated strictly; unknown values return `400`.
303
+
304
+ Args:
305
+ cursor (str | Unset):
306
+ limit (int | Unset): Default: 25.
307
+ status (JobStatus | Unset): Durable job status. For batch parent jobs, status is derived
308
+ from children after each
309
+ child transition:
310
+ 1. If any child is non-terminal, the parent remains `queued` only while every child is
311
+ queued; it becomes `running` once any child is running or terminal.
312
+ 2. When every child is terminal and any child is `indeterminate`, the parent is
313
+ `indeterminate`.
314
+ 3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
315
+ the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
316
+ success/failure closes as parent `succeeded` while preserving failed children in
317
+ summaries).
318
+ 4. When every child is `succeeded`, the parent is `succeeded`.
319
+
320
+ Partial failures are always retained on child summaries; parent status does not drop
321
+ failed children from results.
322
+ operation (JobOperation | Unset):
323
+
324
+ Raises:
325
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
326
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
327
+
328
+ Returns:
329
+ ErrorResponse | JobListResponse
330
+ """
331
+
332
+
333
+ return (await asyncio_detailed(
334
+ client=client,
335
+ cursor=cursor,
336
+ limit=limit,
337
+ status=status,
338
+ operation=operation,
339
+
340
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """
@@ -0,0 +1,288 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.error_response import ErrorResponse
12
+ from ...models.list_llm_models_mode import ListLlmModelsMode
13
+ from ...models.ocr_llm_models_response import OcrLlmModelsResponse
14
+ from ...types import UNSET, Unset
15
+ from typing import cast
16
+
17
+
18
+
19
+ def _get_kwargs(
20
+ *,
21
+ mode: ListLlmModelsMode | Unset = ListLlmModelsMode.SUGGESTED,
22
+ q: str | Unset = UNSET,
23
+ page: int | Unset = 1,
24
+ limit: int | Unset = 25,
25
+
26
+ ) -> dict[str, Any]:
27
+
28
+
29
+
30
+
31
+ params: dict[str, Any] = {}
32
+
33
+ json_mode: str | Unset = UNSET
34
+ if not isinstance(mode, Unset):
35
+ json_mode = mode.value
36
+
37
+ params["mode"] = json_mode
38
+
39
+ params["q"] = q
40
+
41
+ params["page"] = page
42
+
43
+ params["limit"] = limit
44
+
45
+
46
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
47
+
48
+
49
+ _kwargs: dict[str, Any] = {
50
+ "method": "get",
51
+ "url": "/models/llm",
52
+ "params": params,
53
+ }
54
+
55
+
56
+ return _kwargs
57
+
58
+
59
+
60
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ErrorResponse | OcrLlmModelsResponse | None:
61
+ if response.status_code == 200:
62
+ response_200 = OcrLlmModelsResponse.from_dict(response.json())
63
+
64
+
65
+
66
+ return response_200
67
+
68
+ if response.status_code == 401:
69
+ response_401 = ErrorResponse.from_dict(response.json())
70
+
71
+
72
+
73
+ return response_401
74
+
75
+ if response.status_code == 403:
76
+ response_403 = ErrorResponse.from_dict(response.json())
77
+
78
+
79
+
80
+ return response_403
81
+
82
+ if response.status_code == 429:
83
+ response_429 = ErrorResponse.from_dict(response.json())
84
+
85
+
86
+
87
+ return response_429
88
+
89
+ if client.raise_on_unexpected_status:
90
+ raise errors.UnexpectedStatus(response.status_code, response.content)
91
+ else:
92
+ return None
93
+
94
+
95
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ErrorResponse | OcrLlmModelsResponse]:
96
+ return Response(
97
+ status_code=HTTPStatus(response.status_code),
98
+ content=response.content,
99
+ headers=response.headers,
100
+ parsed=_parse_response(client=client, response=response),
101
+ )
102
+
103
+
104
+ def sync_detailed(
105
+ *,
106
+ client: AuthenticatedClient | Client,
107
+ mode: ListLlmModelsMode | Unset = ListLlmModelsMode.SUGGESTED,
108
+ q: str | Unset = UNSET,
109
+ page: int | Unset = 1,
110
+ limit: int | Unset = 25,
111
+
112
+ ) -> Response[ErrorResponse | OcrLlmModelsResponse]:
113
+ """ List compatible LLM models
114
+
115
+ Returns a cached, normalized OpenRouter catalog filtered to models that advertise
116
+ strict structured output (`structured_outputs` + `response_format`), have valid finite
117
+ provider-list cost (internally) that is converted to customer retail rates, produce text, and are
118
+ not expired.
119
+
120
+ Default `mode=suggested` returns a short recommended subset. `mode=search` discovers the
121
+ full compatible catalog with optional `q` / pagination. Field grounding and schema
122
+ suggestion remain restricted to certified models.
123
+
124
+ Args:
125
+ mode (ListLlmModelsMode | Unset): Default: ListLlmModelsMode.SUGGESTED.
126
+ q (str | Unset):
127
+ page (int | Unset): Default: 1.
128
+ limit (int | Unset): Default: 25.
129
+
130
+ Raises:
131
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
132
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
133
+
134
+ Returns:
135
+ Response[ErrorResponse | OcrLlmModelsResponse]
136
+ """
137
+
138
+
139
+ kwargs = _get_kwargs(
140
+ mode=mode,
141
+ q=q,
142
+ page=page,
143
+ limit=limit,
144
+
145
+ )
146
+
147
+ response = client.get_httpx_client().request(
148
+ **kwargs,
149
+ )
150
+
151
+ return _build_response(client=client, response=response)
152
+
153
+ def sync(
154
+ *,
155
+ client: AuthenticatedClient | Client,
156
+ mode: ListLlmModelsMode | Unset = ListLlmModelsMode.SUGGESTED,
157
+ q: str | Unset = UNSET,
158
+ page: int | Unset = 1,
159
+ limit: int | Unset = 25,
160
+
161
+ ) -> ErrorResponse | OcrLlmModelsResponse | None:
162
+ """ List compatible LLM models
163
+
164
+ Returns a cached, normalized OpenRouter catalog filtered to models that advertise
165
+ strict structured output (`structured_outputs` + `response_format`), have valid finite
166
+ provider-list cost (internally) that is converted to customer retail rates, produce text, and are
167
+ not expired.
168
+
169
+ Default `mode=suggested` returns a short recommended subset. `mode=search` discovers the
170
+ full compatible catalog with optional `q` / pagination. Field grounding and schema
171
+ suggestion remain restricted to certified models.
172
+
173
+ Args:
174
+ mode (ListLlmModelsMode | Unset): Default: ListLlmModelsMode.SUGGESTED.
175
+ q (str | Unset):
176
+ page (int | Unset): Default: 1.
177
+ limit (int | Unset): Default: 25.
178
+
179
+ Raises:
180
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
181
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
182
+
183
+ Returns:
184
+ ErrorResponse | OcrLlmModelsResponse
185
+ """
186
+
187
+
188
+ return sync_detailed(
189
+ client=client,
190
+ mode=mode,
191
+ q=q,
192
+ page=page,
193
+ limit=limit,
194
+
195
+ ).parsed
196
+
197
+ async def asyncio_detailed(
198
+ *,
199
+ client: AuthenticatedClient | Client,
200
+ mode: ListLlmModelsMode | Unset = ListLlmModelsMode.SUGGESTED,
201
+ q: str | Unset = UNSET,
202
+ page: int | Unset = 1,
203
+ limit: int | Unset = 25,
204
+
205
+ ) -> Response[ErrorResponse | OcrLlmModelsResponse]:
206
+ """ List compatible LLM models
207
+
208
+ Returns a cached, normalized OpenRouter catalog filtered to models that advertise
209
+ strict structured output (`structured_outputs` + `response_format`), have valid finite
210
+ provider-list cost (internally) that is converted to customer retail rates, produce text, and are
211
+ not expired.
212
+
213
+ Default `mode=suggested` returns a short recommended subset. `mode=search` discovers the
214
+ full compatible catalog with optional `q` / pagination. Field grounding and schema
215
+ suggestion remain restricted to certified models.
216
+
217
+ Args:
218
+ mode (ListLlmModelsMode | Unset): Default: ListLlmModelsMode.SUGGESTED.
219
+ q (str | Unset):
220
+ page (int | Unset): Default: 1.
221
+ limit (int | Unset): Default: 25.
222
+
223
+ Raises:
224
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
225
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
226
+
227
+ Returns:
228
+ Response[ErrorResponse | OcrLlmModelsResponse]
229
+ """
230
+
231
+
232
+ kwargs = _get_kwargs(
233
+ mode=mode,
234
+ q=q,
235
+ page=page,
236
+ limit=limit,
237
+
238
+ )
239
+
240
+ response = await client.get_async_httpx_client().request(
241
+ **kwargs
242
+ )
243
+
244
+ return _build_response(client=client, response=response)
245
+
246
+ async def asyncio(
247
+ *,
248
+ client: AuthenticatedClient | Client,
249
+ mode: ListLlmModelsMode | Unset = ListLlmModelsMode.SUGGESTED,
250
+ q: str | Unset = UNSET,
251
+ page: int | Unset = 1,
252
+ limit: int | Unset = 25,
253
+
254
+ ) -> ErrorResponse | OcrLlmModelsResponse | None:
255
+ """ List compatible LLM models
256
+
257
+ Returns a cached, normalized OpenRouter catalog filtered to models that advertise
258
+ strict structured output (`structured_outputs` + `response_format`), have valid finite
259
+ provider-list cost (internally) that is converted to customer retail rates, produce text, and are
260
+ not expired.
261
+
262
+ Default `mode=suggested` returns a short recommended subset. `mode=search` discovers the
263
+ full compatible catalog with optional `q` / pagination. Field grounding and schema
264
+ suggestion remain restricted to certified models.
265
+
266
+ Args:
267
+ mode (ListLlmModelsMode | Unset): Default: ListLlmModelsMode.SUGGESTED.
268
+ q (str | Unset):
269
+ page (int | Unset): Default: 1.
270
+ limit (int | Unset): Default: 25.
271
+
272
+ Raises:
273
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
274
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
275
+
276
+ Returns:
277
+ ErrorResponse | OcrLlmModelsResponse
278
+ """
279
+
280
+
281
+ return (await asyncio_detailed(
282
+ client=client,
283
+ mode=mode,
284
+ q=q,
285
+ page=page,
286
+ limit=limit,
287
+
288
+ )).parsed