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,184 @@
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.ocr_models_response import OcrModelsResponse
13
+ from typing import cast
14
+
15
+
16
+
17
+ def _get_kwargs(
18
+
19
+ ) -> dict[str, Any]:
20
+
21
+
22
+
23
+
24
+
25
+
26
+ _kwargs: dict[str, Any] = {
27
+ "method": "get",
28
+ "url": "/models/ocr",
29
+ }
30
+
31
+
32
+ return _kwargs
33
+
34
+
35
+
36
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ErrorResponse | OcrModelsResponse | None:
37
+ if response.status_code == 200:
38
+ response_200 = OcrModelsResponse.from_dict(response.json())
39
+
40
+
41
+
42
+ return response_200
43
+
44
+ if response.status_code == 401:
45
+ response_401 = ErrorResponse.from_dict(response.json())
46
+
47
+
48
+
49
+ return response_401
50
+
51
+ if response.status_code == 403:
52
+ response_403 = ErrorResponse.from_dict(response.json())
53
+
54
+
55
+
56
+ return response_403
57
+
58
+ if response.status_code == 429:
59
+ response_429 = ErrorResponse.from_dict(response.json())
60
+
61
+
62
+
63
+ return response_429
64
+
65
+ if client.raise_on_unexpected_status:
66
+ raise errors.UnexpectedStatus(response.status_code, response.content)
67
+ else:
68
+ return None
69
+
70
+
71
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ErrorResponse | OcrModelsResponse]:
72
+ return Response(
73
+ status_code=HTTPStatus(response.status_code),
74
+ content=response.content,
75
+ headers=response.headers,
76
+ parsed=_parse_response(client=client, response=response),
77
+ )
78
+
79
+
80
+ def sync_detailed(
81
+ *,
82
+ client: AuthenticatedClient | Client,
83
+
84
+ ) -> Response[ErrorResponse | OcrModelsResponse]:
85
+ """ List OCR models
86
+
87
+ Returns the public OCR model registry with capabilities and availability.
88
+ Currently exposes PaddleOCR-VL 1.6.
89
+
90
+ Raises:
91
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
92
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
93
+
94
+ Returns:
95
+ Response[ErrorResponse | OcrModelsResponse]
96
+ """
97
+
98
+
99
+ kwargs = _get_kwargs(
100
+
101
+ )
102
+
103
+ response = client.get_httpx_client().request(
104
+ **kwargs,
105
+ )
106
+
107
+ return _build_response(client=client, response=response)
108
+
109
+ def sync(
110
+ *,
111
+ client: AuthenticatedClient | Client,
112
+
113
+ ) -> ErrorResponse | OcrModelsResponse | None:
114
+ """ List OCR models
115
+
116
+ Returns the public OCR model registry with capabilities and availability.
117
+ Currently exposes PaddleOCR-VL 1.6.
118
+
119
+ Raises:
120
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
121
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
122
+
123
+ Returns:
124
+ ErrorResponse | OcrModelsResponse
125
+ """
126
+
127
+
128
+ return sync_detailed(
129
+ client=client,
130
+
131
+ ).parsed
132
+
133
+ async def asyncio_detailed(
134
+ *,
135
+ client: AuthenticatedClient | Client,
136
+
137
+ ) -> Response[ErrorResponse | OcrModelsResponse]:
138
+ """ List OCR models
139
+
140
+ Returns the public OCR model registry with capabilities and availability.
141
+ Currently exposes PaddleOCR-VL 1.6.
142
+
143
+ Raises:
144
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
145
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
146
+
147
+ Returns:
148
+ Response[ErrorResponse | OcrModelsResponse]
149
+ """
150
+
151
+
152
+ kwargs = _get_kwargs(
153
+
154
+ )
155
+
156
+ response = await client.get_async_httpx_client().request(
157
+ **kwargs
158
+ )
159
+
160
+ return _build_response(client=client, response=response)
161
+
162
+ async def asyncio(
163
+ *,
164
+ client: AuthenticatedClient | Client,
165
+
166
+ ) -> ErrorResponse | OcrModelsResponse | None:
167
+ """ List OCR models
168
+
169
+ Returns the public OCR model registry with capabilities and availability.
170
+ Currently exposes PaddleOCR-VL 1.6.
171
+
172
+ Raises:
173
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
174
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
175
+
176
+ Returns:
177
+ ErrorResponse | OcrModelsResponse
178
+ """
179
+
180
+
181
+ return (await asyncio_detailed(
182
+ client=client,
183
+
184
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """
@@ -0,0 +1,316 @@
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_async_body import ParseAsyncBody
14
+ from typing import cast
15
+
16
+
17
+
18
+ def _get_kwargs(
19
+ *,
20
+ body: ParseAsyncBody,
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/async",
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) -> ErrorResponse | JobAccepted | None:
48
+ if response.status_code == 202:
49
+ response_202 = JobAccepted.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[ErrorResponse | JobAccepted]:
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: ParseAsyncBody,
144
+ idempotency_key: str,
145
+
146
+ ) -> Response[ErrorResponse | JobAccepted]:
147
+ r""" Parse a document asynchronously
148
+
149
+ Admit a durable parse job and return immediately.
150
+
151
+ Example (`multipart/form-data`):
152
+
153
+ ```bash
154
+ curl -X POST 'https://api.openparser.dev/parse/async' \
155
+ -H 'Authorization: Bearer YOUR_API_KEY' \
156
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
157
+ -F 'request={\"ocr_model\":\"paddleocr-
158
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
159
+ -F 'file=@./document.pdf'
160
+ ```
161
+
162
+ Args:
163
+ idempotency_key (str):
164
+ body (ParseAsyncBody):
165
+
166
+ Raises:
167
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
168
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
169
+
170
+ Returns:
171
+ Response[ErrorResponse | JobAccepted]
172
+ """
173
+
174
+
175
+ kwargs = _get_kwargs(
176
+ body=body,
177
+ idempotency_key=idempotency_key,
178
+
179
+ )
180
+
181
+ response = client.get_httpx_client().request(
182
+ **kwargs,
183
+ )
184
+
185
+ return _build_response(client=client, response=response)
186
+
187
+ def sync(
188
+ *,
189
+ client: AuthenticatedClient | Client,
190
+ body: ParseAsyncBody,
191
+ idempotency_key: str,
192
+
193
+ ) -> ErrorResponse | JobAccepted | None:
194
+ r""" Parse a document asynchronously
195
+
196
+ Admit a durable parse job and return immediately.
197
+
198
+ Example (`multipart/form-data`):
199
+
200
+ ```bash
201
+ curl -X POST 'https://api.openparser.dev/parse/async' \
202
+ -H 'Authorization: Bearer YOUR_API_KEY' \
203
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
204
+ -F 'request={\"ocr_model\":\"paddleocr-
205
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
206
+ -F 'file=@./document.pdf'
207
+ ```
208
+
209
+ Args:
210
+ idempotency_key (str):
211
+ body (ParseAsyncBody):
212
+
213
+ Raises:
214
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
215
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
216
+
217
+ Returns:
218
+ ErrorResponse | JobAccepted
219
+ """
220
+
221
+
222
+ return sync_detailed(
223
+ client=client,
224
+ body=body,
225
+ idempotency_key=idempotency_key,
226
+
227
+ ).parsed
228
+
229
+ async def asyncio_detailed(
230
+ *,
231
+ client: AuthenticatedClient | Client,
232
+ body: ParseAsyncBody,
233
+ idempotency_key: str,
234
+
235
+ ) -> Response[ErrorResponse | JobAccepted]:
236
+ r""" Parse a document asynchronously
237
+
238
+ Admit a durable parse job and return immediately.
239
+
240
+ Example (`multipart/form-data`):
241
+
242
+ ```bash
243
+ curl -X POST 'https://api.openparser.dev/parse/async' \
244
+ -H 'Authorization: Bearer YOUR_API_KEY' \
245
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
246
+ -F 'request={\"ocr_model\":\"paddleocr-
247
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
248
+ -F 'file=@./document.pdf'
249
+ ```
250
+
251
+ Args:
252
+ idempotency_key (str):
253
+ body (ParseAsyncBody):
254
+
255
+ Raises:
256
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
257
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
258
+
259
+ Returns:
260
+ Response[ErrorResponse | JobAccepted]
261
+ """
262
+
263
+
264
+ kwargs = _get_kwargs(
265
+ body=body,
266
+ idempotency_key=idempotency_key,
267
+
268
+ )
269
+
270
+ response = await client.get_async_httpx_client().request(
271
+ **kwargs
272
+ )
273
+
274
+ return _build_response(client=client, response=response)
275
+
276
+ async def asyncio(
277
+ *,
278
+ client: AuthenticatedClient | Client,
279
+ body: ParseAsyncBody,
280
+ idempotency_key: str,
281
+
282
+ ) -> ErrorResponse | JobAccepted | None:
283
+ r""" Parse a document asynchronously
284
+
285
+ Admit a durable parse job and return immediately.
286
+
287
+ Example (`multipart/form-data`):
288
+
289
+ ```bash
290
+ curl -X POST 'https://api.openparser.dev/parse/async' \
291
+ -H 'Authorization: Bearer YOUR_API_KEY' \
292
+ -H \"Idempotency-Key: $(uuidgen 2>/dev/null || openssl rand -hex 16)\" \
293
+ -F 'request={\"ocr_model\":\"paddleocr-
294
+ vl-1.6\",\"output_format\":\"openparser@1\"};type=application/json' \
295
+ -F 'file=@./document.pdf'
296
+ ```
297
+
298
+ Args:
299
+ idempotency_key (str):
300
+ body (ParseAsyncBody):
301
+
302
+ Raises:
303
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
304
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
305
+
306
+ Returns:
307
+ ErrorResponse | JobAccepted
308
+ """
309
+
310
+
311
+ return (await asyncio_detailed(
312
+ client=client,
313
+ body=body,
314
+ idempotency_key=idempotency_key,
315
+
316
+ )).parsed