Skip to content

Commit 73fa6b1

Browse files
feat: fix(api): RAG-286: Add to_markdown subresource to AI resource
* fix(api): RAG-286: Add to_markdown subresource to AI resource
1 parent 7b7b62f commit 73fa6b1

9 files changed

Lines changed: 375 additions & 1 deletion

File tree

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 1822
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-ca8fbfa82d19dca400ec61b8c93392de1acd157860e435419f9a5e9ec8c586e0.yml
33
openapi_spec_hash: 77d55c70bc3824ac61bd056e2319ee18
4-
config_hash: 4bd8c8b19860de3e5da0f6dfb78ab679
4+
config_hash: 9fad1bedf93f562258b7ce34e98e2e7d

api.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9866,6 +9866,18 @@ Methods:
98669866

98679867
- <code title="get /accounts/{account_id}/ai/models/schema">client.ai.models.schema.<a href="./src/cloudflare/resources/ai/models/schema.py">get</a>(\*, account_id, \*\*<a href="src/cloudflare/types/ai/models/schema_get_params.py">params</a>) -> object</code>
98689868

9869+
## ToMarkdown
9870+
9871+
Types:
9872+
9873+
```python
9874+
from cloudflare.types.ai import ToMarkdownTransformResponse
9875+
```
9876+
9877+
Methods:
9878+
9879+
- <code title="post /accounts/{account_id}/ai/tomarkdown">client.ai.to_markdown.<a href="./src/cloudflare/resources/ai/to_markdown.py">transform</a>(body, \*, account_id, \*\*<a href="src/cloudflare/types/ai/to_markdown_transform_params.py">params</a>) -> <a href="./src/cloudflare/types/ai/to_markdown_transform_response.py">SyncSinglePage[ToMarkdownTransformResponse]</a></code>
9880+
98699881
# SecurityCenter
98709882

98719883
## Insights

src/cloudflare/resources/ai/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@
4040
FinetunesResourceWithStreamingResponse,
4141
AsyncFinetunesResourceWithStreamingResponse,
4242
)
43+
from .to_markdown import (
44+
ToMarkdownResource,
45+
AsyncToMarkdownResource,
46+
ToMarkdownResourceWithRawResponse,
47+
AsyncToMarkdownResourceWithRawResponse,
48+
ToMarkdownResourceWithStreamingResponse,
49+
AsyncToMarkdownResourceWithStreamingResponse,
50+
)
4351

4452
__all__ = [
4553
"FinetunesResource",
@@ -66,6 +74,12 @@
6674
"AsyncModelsResourceWithRawResponse",
6775
"ModelsResourceWithStreamingResponse",
6876
"AsyncModelsResourceWithStreamingResponse",
77+
"ToMarkdownResource",
78+
"AsyncToMarkdownResource",
79+
"ToMarkdownResourceWithRawResponse",
80+
"AsyncToMarkdownResourceWithRawResponse",
81+
"ToMarkdownResourceWithStreamingResponse",
82+
"AsyncToMarkdownResourceWithStreamingResponse",
6983
"AIResource",
7084
"AsyncAIResource",
7185
"AIResourceWithRawResponse",

src/cloudflare/resources/ai/ai.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
async_to_streamed_response_wrapper,
3636
)
3737
from ..._wrappers import ResultWrapper
38+
from .to_markdown import (
39+
ToMarkdownResource,
40+
AsyncToMarkdownResource,
41+
ToMarkdownResourceWithRawResponse,
42+
AsyncToMarkdownResourceWithRawResponse,
43+
ToMarkdownResourceWithStreamingResponse,
44+
AsyncToMarkdownResourceWithStreamingResponse,
45+
)
3846
from .models.models import (
3947
ModelsResource,
4048
AsyncModelsResource,
@@ -74,6 +82,10 @@ def tasks(self) -> TasksResource:
7482
def models(self) -> ModelsResource:
7583
return ModelsResource(self._client)
7684

85+
@cached_property
86+
def to_markdown(self) -> ToMarkdownResource:
87+
return ToMarkdownResource(self._client)
88+
7789
@cached_property
7890
def with_raw_response(self) -> AIResourceWithRawResponse:
7991
"""
@@ -1048,6 +1060,10 @@ def tasks(self) -> AsyncTasksResource:
10481060
def models(self) -> AsyncModelsResource:
10491061
return AsyncModelsResource(self._client)
10501062

1063+
@cached_property
1064+
def to_markdown(self) -> AsyncToMarkdownResource:
1065+
return AsyncToMarkdownResource(self._client)
1066+
10511067
@cached_property
10521068
def with_raw_response(self) -> AsyncAIResourceWithRawResponse:
10531069
"""
@@ -2029,6 +2045,10 @@ def tasks(self) -> TasksResourceWithRawResponse:
20292045
def models(self) -> ModelsResourceWithRawResponse:
20302046
return ModelsResourceWithRawResponse(self._ai.models)
20312047

2048+
@cached_property
2049+
def to_markdown(self) -> ToMarkdownResourceWithRawResponse:
2050+
return ToMarkdownResourceWithRawResponse(self._ai.to_markdown)
2051+
20322052

20332053
class AsyncAIResourceWithRawResponse:
20342054
def __init__(self, ai: AsyncAIResource) -> None:
@@ -2054,6 +2074,10 @@ def tasks(self) -> AsyncTasksResourceWithRawResponse:
20542074
def models(self) -> AsyncModelsResourceWithRawResponse:
20552075
return AsyncModelsResourceWithRawResponse(self._ai.models)
20562076

2077+
@cached_property
2078+
def to_markdown(self) -> AsyncToMarkdownResourceWithRawResponse:
2079+
return AsyncToMarkdownResourceWithRawResponse(self._ai.to_markdown)
2080+
20572081

20582082
class AIResourceWithStreamingResponse:
20592083
def __init__(self, ai: AIResource) -> None:
@@ -2079,6 +2103,10 @@ def tasks(self) -> TasksResourceWithStreamingResponse:
20792103
def models(self) -> ModelsResourceWithStreamingResponse:
20802104
return ModelsResourceWithStreamingResponse(self._ai.models)
20812105

2106+
@cached_property
2107+
def to_markdown(self) -> ToMarkdownResourceWithStreamingResponse:
2108+
return ToMarkdownResourceWithStreamingResponse(self._ai.to_markdown)
2109+
20822110

20832111
class AsyncAIResourceWithStreamingResponse:
20842112
def __init__(self, ai: AsyncAIResource) -> None:
@@ -2103,3 +2131,7 @@ def tasks(self) -> AsyncTasksResourceWithStreamingResponse:
21032131
@cached_property
21042132
def models(self) -> AsyncModelsResourceWithStreamingResponse:
21052133
return AsyncModelsResourceWithStreamingResponse(self._ai.models)
2134+
2135+
@cached_property
2136+
def to_markdown(self) -> AsyncToMarkdownResourceWithStreamingResponse:
2137+
return AsyncToMarkdownResourceWithStreamingResponse(self._ai.to_markdown)
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
import httpx
6+
7+
from ..._files import read_file_content
8+
from ..._types import Body, Query, Headers, NotGiven, FileContent, not_given
9+
from ..._compat import cached_property
10+
from ..._resource import SyncAPIResource, AsyncAPIResource
11+
from ..._response import (
12+
to_raw_response_wrapper,
13+
to_streamed_response_wrapper,
14+
async_to_raw_response_wrapper,
15+
async_to_streamed_response_wrapper,
16+
)
17+
from ...pagination import SyncSinglePage, AsyncSinglePage
18+
from ..._base_client import AsyncPaginator, make_request_options
19+
from ...types.ai.to_markdown_transform_response import ToMarkdownTransformResponse
20+
21+
__all__ = ["ToMarkdownResource", "AsyncToMarkdownResource"]
22+
23+
24+
class ToMarkdownResource(SyncAPIResource):
25+
@cached_property
26+
def with_raw_response(self) -> ToMarkdownResourceWithRawResponse:
27+
"""
28+
This property can be used as a prefix for any HTTP method call to return
29+
the raw response object instead of the parsed content.
30+
31+
For more information, see https://www.github.com/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
32+
"""
33+
return ToMarkdownResourceWithRawResponse(self)
34+
35+
@cached_property
36+
def with_streaming_response(self) -> ToMarkdownResourceWithStreamingResponse:
37+
"""
38+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
39+
40+
For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
41+
"""
42+
return ToMarkdownResourceWithStreamingResponse(self)
43+
44+
def transform(
45+
self,
46+
body: FileContent,
47+
*,
48+
account_id: str,
49+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
50+
# The extra values given here take precedence over values defined on the client or passed to this method.
51+
extra_headers: Headers | None = None,
52+
extra_query: Query | None = None,
53+
extra_body: Body | None = None,
54+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
55+
) -> SyncSinglePage[ToMarkdownTransformResponse]:
56+
"""
57+
Convert Files into Markdown
58+
59+
Args:
60+
extra_headers: Send extra headers
61+
62+
extra_query: Add additional query parameters to the request
63+
64+
extra_body: Add additional JSON properties to the request
65+
66+
timeout: Override the client-level default timeout for this request, in seconds
67+
"""
68+
if not account_id:
69+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
70+
extra_headers = {"Content-Type": "application/octet-stream", **(extra_headers or {})}
71+
return self._get_api_list(
72+
f"/accounts/{account_id}/ai/tomarkdown",
73+
page=SyncSinglePage[ToMarkdownTransformResponse],
74+
body=read_file_content(body),
75+
options=make_request_options(
76+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
77+
),
78+
model=ToMarkdownTransformResponse,
79+
method="post",
80+
)
81+
82+
83+
class AsyncToMarkdownResource(AsyncAPIResource):
84+
@cached_property
85+
def with_raw_response(self) -> AsyncToMarkdownResourceWithRawResponse:
86+
"""
87+
This property can be used as a prefix for any HTTP method call to return
88+
the raw response object instead of the parsed content.
89+
90+
For more information, see https://www.github.com/cloudflare/cloudflare-python#accessing-raw-response-data-eg-headers
91+
"""
92+
return AsyncToMarkdownResourceWithRawResponse(self)
93+
94+
@cached_property
95+
def with_streaming_response(self) -> AsyncToMarkdownResourceWithStreamingResponse:
96+
"""
97+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
98+
99+
For more information, see https://www.github.com/cloudflare/cloudflare-python#with_streaming_response
100+
"""
101+
return AsyncToMarkdownResourceWithStreamingResponse(self)
102+
103+
def transform(
104+
self,
105+
body: FileContent,
106+
*,
107+
account_id: str,
108+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
109+
# The extra values given here take precedence over values defined on the client or passed to this method.
110+
extra_headers: Headers | None = None,
111+
extra_query: Query | None = None,
112+
extra_body: Body | None = None,
113+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
114+
) -> AsyncPaginator[ToMarkdownTransformResponse, AsyncSinglePage[ToMarkdownTransformResponse]]:
115+
"""
116+
Convert Files into Markdown
117+
118+
Args:
119+
extra_headers: Send extra headers
120+
121+
extra_query: Add additional query parameters to the request
122+
123+
extra_body: Add additional JSON properties to the request
124+
125+
timeout: Override the client-level default timeout for this request, in seconds
126+
"""
127+
if not account_id:
128+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
129+
extra_headers = {"Content-Type": "application/octet-stream", **(extra_headers or {})}
130+
return self._get_api_list(
131+
f"/accounts/{account_id}/ai/tomarkdown",
132+
page=AsyncSinglePage[ToMarkdownTransformResponse],
133+
body=read_file_content(body),
134+
options=make_request_options(
135+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
136+
),
137+
model=ToMarkdownTransformResponse,
138+
method="post",
139+
)
140+
141+
142+
class ToMarkdownResourceWithRawResponse:
143+
def __init__(self, to_markdown: ToMarkdownResource) -> None:
144+
self._to_markdown = to_markdown
145+
146+
self.transform = to_raw_response_wrapper(
147+
to_markdown.transform,
148+
)
149+
150+
151+
class AsyncToMarkdownResourceWithRawResponse:
152+
def __init__(self, to_markdown: AsyncToMarkdownResource) -> None:
153+
self._to_markdown = to_markdown
154+
155+
self.transform = async_to_raw_response_wrapper(
156+
to_markdown.transform,
157+
)
158+
159+
160+
class ToMarkdownResourceWithStreamingResponse:
161+
def __init__(self, to_markdown: ToMarkdownResource) -> None:
162+
self._to_markdown = to_markdown
163+
164+
self.transform = to_streamed_response_wrapper(
165+
to_markdown.transform,
166+
)
167+
168+
169+
class AsyncToMarkdownResourceWithStreamingResponse:
170+
def __init__(self, to_markdown: AsyncToMarkdownResource) -> None:
171+
self._to_markdown = to_markdown
172+
173+
self.transform = async_to_streamed_response_wrapper(
174+
to_markdown.transform,
175+
)

src/cloudflare/types/ai/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@
88
from .finetune_create_params import FinetuneCreateParams as FinetuneCreateParams
99
from .finetune_list_response import FinetuneListResponse as FinetuneListResponse
1010
from .finetune_create_response import FinetuneCreateResponse as FinetuneCreateResponse
11+
from .to_markdown_transform_params import ToMarkdownTransformParams as ToMarkdownTransformParams
12+
from .to_markdown_transform_response import ToMarkdownTransformResponse as ToMarkdownTransformResponse
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing_extensions import Required, TypedDict
6+
7+
__all__ = ["ToMarkdownTransformParams"]
8+
9+
10+
class ToMarkdownTransformParams(TypedDict, total=False):
11+
account_id: Required[str]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from pydantic import Field as FieldInfo
4+
5+
from ..._models import BaseModel
6+
7+
__all__ = ["ToMarkdownTransformResponse"]
8+
9+
10+
class ToMarkdownTransformResponse(BaseModel):
11+
data: str
12+
13+
format: str
14+
15+
mime_type: str = FieldInfo(alias="mimeType")
16+
17+
name: str
18+
19+
tokens: str

0 commit comments

Comments
 (0)