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,280 @@
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.batch_job_accepted import BatchJobAccepted
12
+ from ...models.error_response import ErrorResponse
13
+ from ...models.parse_batch_body import ParseBatchBody
14
+ from typing import cast
15
+
16
+
17
+
18
+ def _get_kwargs(
19
+ *,
20
+ body: ParseBatchBody,
21
+ idempotency_key: str,
22
+
23
+ ) -> dict[str, Any]:
24
+ headers: dict[str, Any] = {}
25
+ headers["Idempotency-Key"] = idempotency_key
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ _kwargs: dict[str, Any] = {
34
+ "method": "post",
35
+ "url": "/parse/batch",
36
+ }
37
+
38
+ _kwargs["files"] = body.to_multipart()
39
+
40
+
41
+
42
+ _kwargs["headers"] = headers
43
+ return _kwargs
44
+
45
+
46
+
47
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> BatchJobAccepted | ErrorResponse | None:
48
+ if response.status_code == 202:
49
+ response_202 = BatchJobAccepted.from_dict(response.json())
50
+
51
+
52
+
53
+ return response_202
54
+
55
+ if response.status_code == 400:
56
+ response_400 = ErrorResponse.from_dict(response.json())
57
+
58
+
59
+
60
+ return response_400
61
+
62
+ if response.status_code == 401:
63
+ response_401 = ErrorResponse.from_dict(response.json())
64
+
65
+
66
+
67
+ return response_401
68
+
69
+ if response.status_code == 402:
70
+ response_402 = ErrorResponse.from_dict(response.json())
71
+
72
+
73
+
74
+ return response_402
75
+
76
+ if response.status_code == 403:
77
+ response_403 = ErrorResponse.from_dict(response.json())
78
+
79
+
80
+
81
+ return response_403
82
+
83
+ if response.status_code == 409:
84
+ response_409 = ErrorResponse.from_dict(response.json())
85
+
86
+
87
+
88
+ return response_409
89
+
90
+ if response.status_code == 413:
91
+ response_413 = ErrorResponse.from_dict(response.json())
92
+
93
+
94
+
95
+ return response_413
96
+
97
+ if response.status_code == 415:
98
+ response_415 = ErrorResponse.from_dict(response.json())
99
+
100
+
101
+
102
+ return response_415
103
+
104
+ if response.status_code == 422:
105
+ response_422 = ErrorResponse.from_dict(response.json())
106
+
107
+
108
+
109
+ return response_422
110
+
111
+ if response.status_code == 429:
112
+ response_429 = ErrorResponse.from_dict(response.json())
113
+
114
+
115
+
116
+ return response_429
117
+
118
+ if response.status_code == 503:
119
+ response_503 = ErrorResponse.from_dict(response.json())
120
+
121
+
122
+
123
+ return response_503
124
+
125
+ if client.raise_on_unexpected_status:
126
+ raise errors.UnexpectedStatus(response.status_code, response.content)
127
+ else:
128
+ return None
129
+
130
+
131
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[BatchJobAccepted | ErrorResponse]:
132
+ return Response(
133
+ status_code=HTTPStatus(response.status_code),
134
+ content=response.content,
135
+ headers=response.headers,
136
+ parsed=_parse_response(client=client, response=response),
137
+ )
138
+
139
+
140
+ def sync_detailed(
141
+ *,
142
+ client: AuthenticatedClient | Client,
143
+ body: ParseBatchBody,
144
+ idempotency_key: str,
145
+
146
+ ) -> Response[BatchJobAccepted | ErrorResponse]:
147
+ """ Parse multiple documents in one batch
148
+
149
+ Admit up to 100 parse child jobs in one durable batch. Every uploaded file must be mapped
150
+ exactly once by `file_index`. Partial child failures are preserved in batch results.
151
+ Parent status derivation for mixed outcomes is defined on `JobStatus`.
152
+
153
+ Args:
154
+ idempotency_key (str):
155
+ body (ParseBatchBody):
156
+
157
+ Raises:
158
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
159
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
160
+
161
+ Returns:
162
+ Response[BatchJobAccepted | ErrorResponse]
163
+ """
164
+
165
+
166
+ kwargs = _get_kwargs(
167
+ body=body,
168
+ idempotency_key=idempotency_key,
169
+
170
+ )
171
+
172
+ response = client.get_httpx_client().request(
173
+ **kwargs,
174
+ )
175
+
176
+ return _build_response(client=client, response=response)
177
+
178
+ def sync(
179
+ *,
180
+ client: AuthenticatedClient | Client,
181
+ body: ParseBatchBody,
182
+ idempotency_key: str,
183
+
184
+ ) -> BatchJobAccepted | ErrorResponse | None:
185
+ """ Parse multiple documents in one batch
186
+
187
+ Admit up to 100 parse child jobs in one durable batch. Every uploaded file must be mapped
188
+ exactly once by `file_index`. Partial child failures are preserved in batch results.
189
+ Parent status derivation for mixed outcomes is defined on `JobStatus`.
190
+
191
+ Args:
192
+ idempotency_key (str):
193
+ body (ParseBatchBody):
194
+
195
+ Raises:
196
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
197
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
198
+
199
+ Returns:
200
+ BatchJobAccepted | ErrorResponse
201
+ """
202
+
203
+
204
+ return sync_detailed(
205
+ client=client,
206
+ body=body,
207
+ idempotency_key=idempotency_key,
208
+
209
+ ).parsed
210
+
211
+ async def asyncio_detailed(
212
+ *,
213
+ client: AuthenticatedClient | Client,
214
+ body: ParseBatchBody,
215
+ idempotency_key: str,
216
+
217
+ ) -> Response[BatchJobAccepted | ErrorResponse]:
218
+ """ Parse multiple documents in one batch
219
+
220
+ Admit up to 100 parse child jobs in one durable batch. Every uploaded file must be mapped
221
+ exactly once by `file_index`. Partial child failures are preserved in batch results.
222
+ Parent status derivation for mixed outcomes is defined on `JobStatus`.
223
+
224
+ Args:
225
+ idempotency_key (str):
226
+ body (ParseBatchBody):
227
+
228
+ Raises:
229
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
230
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
231
+
232
+ Returns:
233
+ Response[BatchJobAccepted | ErrorResponse]
234
+ """
235
+
236
+
237
+ kwargs = _get_kwargs(
238
+ body=body,
239
+ idempotency_key=idempotency_key,
240
+
241
+ )
242
+
243
+ response = await client.get_async_httpx_client().request(
244
+ **kwargs
245
+ )
246
+
247
+ return _build_response(client=client, response=response)
248
+
249
+ async def asyncio(
250
+ *,
251
+ client: AuthenticatedClient | Client,
252
+ body: ParseBatchBody,
253
+ idempotency_key: str,
254
+
255
+ ) -> BatchJobAccepted | ErrorResponse | None:
256
+ """ Parse multiple documents in one batch
257
+
258
+ Admit up to 100 parse child jobs in one durable batch. Every uploaded file must be mapped
259
+ exactly once by `file_index`. Partial child failures are preserved in batch results.
260
+ Parent status derivation for mixed outcomes is defined on `JobStatus`.
261
+
262
+ Args:
263
+ idempotency_key (str):
264
+ body (ParseBatchBody):
265
+
266
+ Raises:
267
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
268
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
269
+
270
+ Returns:
271
+ BatchJobAccepted | ErrorResponse
272
+ """
273
+
274
+
275
+ return (await asyncio_detailed(
276
+ client=client,
277
+ body=body,
278
+ idempotency_key=idempotency_key,
279
+
280
+ )).parsed
@@ -0,0 +1,369 @@
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_accepted import JobAccepted
13
+ from ...models.parse_sync_body import ParseSyncBody
14
+ from ...models.parsed_document import ParsedDocument
15
+ from ...models.raw_parse_result import RawParseResult
16
+ from typing import cast
17
+
18
+
19
+
20
+ def _get_kwargs(
21
+ *,
22
+ body: ParseSyncBody,
23
+ idempotency_key: str,
24
+
25
+ ) -> dict[str, Any]:
26
+ headers: dict[str, Any] = {}
27
+ headers["Idempotency-Key"] = idempotency_key
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ _kwargs: dict[str, Any] = {
36
+ "method": "post",
37
+ "url": "/parse",
38
+ }
39
+
40
+ _kwargs["files"] = body.to_multipart()
41
+
42
+
43
+
44
+ _kwargs["headers"] = headers
45
+ return _kwargs
46
+
47
+
48
+
49
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ErrorResponse | JobAccepted | ParsedDocument | RawParseResult | None:
50
+ if response.status_code == 200:
51
+ def _parse_response_200(data: object) -> ParsedDocument | RawParseResult:
52
+ try:
53
+ if not isinstance(data, dict):
54
+ raise TypeError()
55
+ componentsschemas_parse_result_type_0 = ParsedDocument.from_dict(data)
56
+
57
+
58
+
59
+ return componentsschemas_parse_result_type_0
60
+ except (TypeError, ValueError, AttributeError, KeyError):
61
+ pass
62
+ if not isinstance(data, dict):
63
+ raise TypeError()
64
+ componentsschemas_parse_result_type_1 = RawParseResult.from_dict(data)
65
+
66
+
67
+
68
+ return componentsschemas_parse_result_type_1
69
+
70
+ response_200 = _parse_response_200(response.json())
71
+
72
+ return response_200
73
+
74
+ if response.status_code == 202:
75
+ response_202 = JobAccepted.from_dict(response.json())
76
+
77
+
78
+
79
+ return response_202
80
+
81
+ if response.status_code == 400:
82
+ response_400 = ErrorResponse.from_dict(response.json())
83
+
84
+
85
+
86
+ return response_400
87
+
88
+ if response.status_code == 401:
89
+ response_401 = ErrorResponse.from_dict(response.json())
90
+
91
+
92
+
93
+ return response_401
94
+
95
+ if response.status_code == 402:
96
+ response_402 = ErrorResponse.from_dict(response.json())
97
+
98
+
99
+
100
+ return response_402
101
+
102
+ if response.status_code == 403:
103
+ response_403 = ErrorResponse.from_dict(response.json())
104
+
105
+
106
+
107
+ return response_403
108
+
109
+ if response.status_code == 409:
110
+ response_409 = ErrorResponse.from_dict(response.json())
111
+
112
+
113
+
114
+ return response_409
115
+
116
+ if response.status_code == 413:
117
+ response_413 = ErrorResponse.from_dict(response.json())
118
+
119
+
120
+
121
+ return response_413
122
+
123
+ if response.status_code == 415:
124
+ response_415 = ErrorResponse.from_dict(response.json())
125
+
126
+
127
+
128
+ return response_415
129
+
130
+ if response.status_code == 422:
131
+ response_422 = ErrorResponse.from_dict(response.json())
132
+
133
+
134
+
135
+ return response_422
136
+
137
+ if response.status_code == 429:
138
+ response_429 = ErrorResponse.from_dict(response.json())
139
+
140
+
141
+
142
+ return response_429
143
+
144
+ if response.status_code == 503:
145
+ response_503 = ErrorResponse.from_dict(response.json())
146
+
147
+
148
+
149
+ return response_503
150
+
151
+ if response.status_code == 504:
152
+ response_504 = ErrorResponse.from_dict(response.json())
153
+
154
+
155
+
156
+ return response_504
157
+
158
+ if client.raise_on_unexpected_status:
159
+ raise errors.UnexpectedStatus(response.status_code, response.content)
160
+ else:
161
+ return None
162
+
163
+
164
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ErrorResponse | JobAccepted | ParsedDocument | RawParseResult]:
165
+ return Response(
166
+ status_code=HTTPStatus(response.status_code),
167
+ content=response.content,
168
+ headers=response.headers,
169
+ parsed=_parse_response(client=client, response=response),
170
+ )
171
+
172
+
173
+ def sync_detailed(
174
+ *,
175
+ client: AuthenticatedClient | Client,
176
+ body: ParseSyncBody,
177
+ idempotency_key: str,
178
+
179
+ ) -> Response[ErrorResponse | JobAccepted | ParsedDocument | RawParseResult]:
180
+ r""" Parse a document synchronously
181
+
182
+ Admit a parse job, wait up to the sync wait limit, and return the selected terminal parse
183
+ representation when ready. `output_format` defaults to the versioned provider-neutral
184
+ `openparser@1`; `raw` returns a stable provider envelope around the untouched successful
185
+ Paddle result. Terminal `failed` within the wait window returns `422` `ErrorResponse`;
186
+ terminal `indeterminate` returns `504` `ErrorResponse`. Returns `202` with a durable job
187
+ reference and `Location` if the wait limit expires first.
188
+
189
+ Example (`multipart/form-data`):
190
+
191
+ ```bash
192
+ curl -X POST 'https://api.openparser.dev/parse' \
193
+ -H 'Authorization: Bearer YOUR_API_KEY' \
194
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
195
+ -F 'request={\"ocr_model\":\"paddleocr-
196
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
197
+ -F 'file=@./document.pdf'
198
+ ```
199
+
200
+ Args:
201
+ idempotency_key (str):
202
+ body (ParseSyncBody):
203
+
204
+ Raises:
205
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
206
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
207
+
208
+ Returns:
209
+ Response[ErrorResponse | JobAccepted | ParsedDocument | RawParseResult]
210
+ """
211
+
212
+
213
+ kwargs = _get_kwargs(
214
+ body=body,
215
+ idempotency_key=idempotency_key,
216
+
217
+ )
218
+
219
+ response = client.get_httpx_client().request(
220
+ **kwargs,
221
+ )
222
+
223
+ return _build_response(client=client, response=response)
224
+
225
+ def sync(
226
+ *,
227
+ client: AuthenticatedClient | Client,
228
+ body: ParseSyncBody,
229
+ idempotency_key: str,
230
+
231
+ ) -> ErrorResponse | JobAccepted | ParsedDocument | RawParseResult | None:
232
+ r""" Parse a document synchronously
233
+
234
+ Admit a parse job, wait up to the sync wait limit, and return the selected terminal parse
235
+ representation when ready. `output_format` defaults to the versioned provider-neutral
236
+ `openparser@1`; `raw` returns a stable provider envelope around the untouched successful
237
+ Paddle result. Terminal `failed` within the wait window returns `422` `ErrorResponse`;
238
+ terminal `indeterminate` returns `504` `ErrorResponse`. Returns `202` with a durable job
239
+ reference and `Location` if the wait limit expires first.
240
+
241
+ Example (`multipart/form-data`):
242
+
243
+ ```bash
244
+ curl -X POST 'https://api.openparser.dev/parse' \
245
+ -H 'Authorization: Bearer YOUR_API_KEY' \
246
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
247
+ -F 'request={\"ocr_model\":\"paddleocr-
248
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
249
+ -F 'file=@./document.pdf'
250
+ ```
251
+
252
+ Args:
253
+ idempotency_key (str):
254
+ body (ParseSyncBody):
255
+
256
+ Raises:
257
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
258
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
259
+
260
+ Returns:
261
+ ErrorResponse | JobAccepted | ParsedDocument | RawParseResult
262
+ """
263
+
264
+
265
+ return sync_detailed(
266
+ client=client,
267
+ body=body,
268
+ idempotency_key=idempotency_key,
269
+
270
+ ).parsed
271
+
272
+ async def asyncio_detailed(
273
+ *,
274
+ client: AuthenticatedClient | Client,
275
+ body: ParseSyncBody,
276
+ idempotency_key: str,
277
+
278
+ ) -> Response[ErrorResponse | JobAccepted | ParsedDocument | RawParseResult]:
279
+ r""" Parse a document synchronously
280
+
281
+ Admit a parse job, wait up to the sync wait limit, and return the selected terminal parse
282
+ representation when ready. `output_format` defaults to the versioned provider-neutral
283
+ `openparser@1`; `raw` returns a stable provider envelope around the untouched successful
284
+ Paddle result. Terminal `failed` within the wait window returns `422` `ErrorResponse`;
285
+ terminal `indeterminate` returns `504` `ErrorResponse`. Returns `202` with a durable job
286
+ reference and `Location` if the wait limit expires first.
287
+
288
+ Example (`multipart/form-data`):
289
+
290
+ ```bash
291
+ curl -X POST 'https://api.openparser.dev/parse' \
292
+ -H 'Authorization: Bearer YOUR_API_KEY' \
293
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
294
+ -F 'request={\"ocr_model\":\"paddleocr-
295
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
296
+ -F 'file=@./document.pdf'
297
+ ```
298
+
299
+ Args:
300
+ idempotency_key (str):
301
+ body (ParseSyncBody):
302
+
303
+ Raises:
304
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
305
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
306
+
307
+ Returns:
308
+ Response[ErrorResponse | JobAccepted | ParsedDocument | RawParseResult]
309
+ """
310
+
311
+
312
+ kwargs = _get_kwargs(
313
+ body=body,
314
+ idempotency_key=idempotency_key,
315
+
316
+ )
317
+
318
+ response = await client.get_async_httpx_client().request(
319
+ **kwargs
320
+ )
321
+
322
+ return _build_response(client=client, response=response)
323
+
324
+ async def asyncio(
325
+ *,
326
+ client: AuthenticatedClient | Client,
327
+ body: ParseSyncBody,
328
+ idempotency_key: str,
329
+
330
+ ) -> ErrorResponse | JobAccepted | ParsedDocument | RawParseResult | None:
331
+ r""" Parse a document synchronously
332
+
333
+ Admit a parse job, wait up to the sync wait limit, and return the selected terminal parse
334
+ representation when ready. `output_format` defaults to the versioned provider-neutral
335
+ `openparser@1`; `raw` returns a stable provider envelope around the untouched successful
336
+ Paddle result. Terminal `failed` within the wait window returns `422` `ErrorResponse`;
337
+ terminal `indeterminate` returns `504` `ErrorResponse`. Returns `202` with a durable job
338
+ reference and `Location` if the wait limit expires first.
339
+
340
+ Example (`multipart/form-data`):
341
+
342
+ ```bash
343
+ curl -X POST 'https://api.openparser.dev/parse' \
344
+ -H 'Authorization: Bearer YOUR_API_KEY' \
345
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
346
+ -F 'request={\"ocr_model\":\"paddleocr-
347
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
348
+ -F 'file=@./document.pdf'
349
+ ```
350
+
351
+ Args:
352
+ idempotency_key (str):
353
+ body (ParseSyncBody):
354
+
355
+ Raises:
356
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
357
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
358
+
359
+ Returns:
360
+ ErrorResponse | JobAccepted | ParsedDocument | RawParseResult
361
+ """
362
+
363
+
364
+ return (await asyncio_detailed(
365
+ client=client,
366
+ body=body,
367
+ idempotency_key=idempotency_key,
368
+
369
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """