Skip to content

Commit 9740abd

Browse files
feat(api): adding support for /v1/conversations to the API
1 parent 5c8de89 commit 9740abd

File tree

17 files changed

+1243
-23
lines changed

17 files changed

+1243
-23
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 111
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-7ef7a457c3bf05364e66e48c9ca34f31bfef1f6c9b7c15b1812346105e0abb16.yml
3-
openapi_spec_hash: a2b1f5d8fbb62175c93b0ebea9f10063
4-
config_hash: 4870312b04f48fd717ea4151053e7fb9
1+
configured_endpoints: 119
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-4bcdfe525558e67a09b32dec7a573e87b94bab47db3951eb4a86a4dafb60296c.yml
3+
openapi_spec_hash: 49e7e46bfe9f61b7b7a60e36840c0cd7
4+
config_hash: e4514526ae01126a61f9b6c14a351737

MIGRATION.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ client.parents.children.retrieve('c_456', { parent_id: 'p_123' });
7373
- `client.beta.threads.messages.retrieve()`
7474
- `client.beta.threads.messages.update()`
7575
- `client.beta.threads.messages.delete()`
76+
- `client.conversations.items.retrieve()`
77+
- `client.conversations.items.delete()`
7678
- `client.evals.runs.retrieve()`
7779
- `client.evals.runs.delete()`
7880
- `client.evals.runs.cancel()`
@@ -111,7 +113,9 @@ client.example.list(undefined, { headers: { ... } });
111113
+ client.example.list({}, { headers: { ... } });
112114
```
113115

114-
This affects the following methods:
116+
<details>
117+
118+
<summary>This affects the following methods</summary>
115119

116120
- `client.chat.completions.list()`
117121
- `client.chat.completions.messages.list()`
@@ -129,6 +133,7 @@ This affects the following methods:
129133
- `client.batches.list()`
130134
- `client.responses.retrieve()`
131135
- `client.responses.inputItems.list()`
136+
- `client.conversations.items.list()`
132137
- `client.evals.list()`
133138
- `client.evals.runs.list()`
134139
- `client.containers.list()`

api.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,7 @@ Types:
670670
- <code><a href="./src/resources/responses/responses.ts">ResponseContent</a></code>
671671
- <code><a href="./src/resources/responses/responses.ts">ResponseContentPartAddedEvent</a></code>
672672
- <code><a href="./src/resources/responses/responses.ts">ResponseContentPartDoneEvent</a></code>
673+
- <code><a href="./src/resources/responses/responses.ts">ResponseConversationParam</a></code>
673674
- <code><a href="./src/resources/responses/responses.ts">ResponseCreatedEvent</a></code>
674675
- <code><a href="./src/resources/responses/responses.ts">ResponseCustomToolCall</a></code>
675676
- <code><a href="./src/resources/responses/responses.ts">ResponseCustomToolCallInputDeltaEvent</a></code>
@@ -769,6 +770,49 @@ Methods:
769770

770771
- <code title="get /responses/{response_id}/input_items">client.responses.inputItems.<a href="./src/resources/responses/input-items.ts">list</a>(responseID, { ...params }) -> ResponseItemsPage</code>
771772

773+
# Conversations
774+
775+
Types:
776+
777+
- <code><a href="./src/resources/conversations/conversations.ts">ComputerScreenshotContent</a></code>
778+
- <code><a href="./src/resources/conversations/conversations.ts">ContainerFileCitationBody</a></code>
779+
- <code><a href="./src/resources/conversations/conversations.ts">Conversation</a></code>
780+
- <code><a href="./src/resources/conversations/conversations.ts">ConversationDeleted</a></code>
781+
- <code><a href="./src/resources/conversations/conversations.ts">ConversationDeletedResource</a></code>
782+
- <code><a href="./src/resources/conversations/conversations.ts">FileCitationBody</a></code>
783+
- <code><a href="./src/resources/conversations/conversations.ts">InputFileContent</a></code>
784+
- <code><a href="./src/resources/conversations/conversations.ts">InputImageContent</a></code>
785+
- <code><a href="./src/resources/conversations/conversations.ts">InputTextContent</a></code>
786+
- <code><a href="./src/resources/conversations/conversations.ts">LobProb</a></code>
787+
- <code><a href="./src/resources/conversations/conversations.ts">Message</a></code>
788+
- <code><a href="./src/resources/conversations/conversations.ts">OutputTextContent</a></code>
789+
- <code><a href="./src/resources/conversations/conversations.ts">RefusalContent</a></code>
790+
- <code><a href="./src/resources/conversations/conversations.ts">SummaryTextContent</a></code>
791+
- <code><a href="./src/resources/conversations/conversations.ts">TextContent</a></code>
792+
- <code><a href="./src/resources/conversations/conversations.ts">TopLogProb</a></code>
793+
- <code><a href="./src/resources/conversations/conversations.ts">URLCitationBody</a></code>
794+
795+
Methods:
796+
797+
- <code title="post /conversations">client.conversations.<a href="./src/resources/conversations/conversations.ts">create</a>({ ...params }) -> Conversation</code>
798+
- <code title="get /conversations/{conversation_id}">client.conversations.<a href="./src/resources/conversations/conversations.ts">retrieve</a>(conversationID) -> Conversation</code>
799+
- <code title="post /conversations/{conversation_id}">client.conversations.<a href="./src/resources/conversations/conversations.ts">update</a>(conversationID, { ...params }) -> Conversation</code>
800+
- <code title="delete /conversations/{conversation_id}">client.conversations.<a href="./src/resources/conversations/conversations.ts">delete</a>(conversationID) -> ConversationDeletedResource</code>
801+
802+
## Items
803+
804+
Types:
805+
806+
- <code><a href="./src/resources/conversations/items.ts">ConversationItem</a></code>
807+
- <code><a href="./src/resources/conversations/items.ts">ConversationItemList</a></code>
808+
809+
Methods:
810+
811+
- <code title="post /conversations/{conversation_id}/items">client.conversations.items.<a href="./src/resources/conversations/items.ts">create</a>(conversationID, { ...params }) -> ConversationItemList</code>
812+
- <code title="get /conversations/{conversation_id}/items/{item_id}">client.conversations.items.<a href="./src/resources/conversations/items.ts">retrieve</a>(itemID, { ...params }) -> ConversationItem</code>
813+
- <code title="get /conversations/{conversation_id}/items">client.conversations.items.<a href="./src/resources/conversations/items.ts">list</a>(conversationID, { ...params }) -> ConversationItemsPage</code>
814+
- <code title="delete /conversations/{conversation_id}/items/{item_id}">client.conversations.items.<a href="./src/resources/conversations/items.ts">delete</a>(itemID, { ...params }) -> Conversation</code>
815+
772816
# Evals
773817

774818
Types:

scripts/detect-breaking-changes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ TEST_PATHS=(
4444
tests/api-resources/uploads/parts.test.ts
4545
tests/api-resources/responses/responses.test.ts
4646
tests/api-resources/responses/input-items.test.ts
47+
tests/api-resources/conversations/conversations.test.ts
48+
tests/api-resources/conversations/items.test.ts
4749
tests/api-resources/evals/evals.test.ts
4850
tests/api-resources/evals/runs/runs.test.ts
4951
tests/api-resources/evals/runs/output-items.test.ts

src/client.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ import * as qs from './internal/qs';
1515
import { VERSION } from './version';
1616
import * as Errors from './core/error';
1717
import * as Pagination from './core/pagination';
18-
import { AbstractPage, type CursorPageParams, CursorPageResponse, PageResponse } from './core/pagination';
18+
import {
19+
AbstractPage,
20+
type ConversationCursorPageParams,
21+
ConversationCursorPageResponse,
22+
type CursorPageParams,
23+
CursorPageResponse,
24+
PageResponse,
25+
} from './core/pagination';
1926
import * as Uploads from './core/uploads';
2027
import * as API from './resources/index';
2128
import { APIPromise } from './core/api-promise';
@@ -97,6 +104,7 @@ import {
97104
ContainerRetrieveResponse,
98105
Containers,
99106
} from './resources/containers/containers';
107+
import { Conversations } from './resources/conversations/conversations';
100108
import {
101109
EvalCreateParams,
102110
EvalCreateResponse,
@@ -954,6 +962,7 @@ export class OpenAI {
954962
batches: API.Batches = new API.Batches(this);
955963
uploads: API.Uploads = new API.Uploads(this);
956964
responses: API.Responses = new API.Responses(this);
965+
conversations: API.Conversations = new API.Conversations(this);
957966
evals: API.Evals = new API.Evals(this);
958967
containers: API.Containers = new API.Containers(this);
959968
}
@@ -974,6 +983,7 @@ OpenAI.Beta = Beta;
974983
OpenAI.Batches = Batches;
975984
OpenAI.Uploads = UploadsAPIUploads;
976985
OpenAI.Responses = Responses;
986+
OpenAI.Conversations = Conversations;
977987
OpenAI.Evals = Evals;
978988
OpenAI.Containers = Containers;
979989

@@ -986,6 +996,12 @@ export declare namespace OpenAI {
986996
export import CursorPage = Pagination.CursorPage;
987997
export { type CursorPageParams as CursorPageParams, type CursorPageResponse as CursorPageResponse };
988998

999+
export import ConversationCursorPage = Pagination.ConversationCursorPage;
1000+
export {
1001+
type ConversationCursorPageParams as ConversationCursorPageParams,
1002+
type ConversationCursorPageResponse as ConversationCursorPageResponse,
1003+
};
1004+
9891005
export {
9901006
Completions as Completions,
9911007
type Completion as Completion,
@@ -1149,6 +1165,8 @@ export declare namespace OpenAI {
11491165

11501166
export { Responses as Responses };
11511167

1168+
export { Conversations as Conversations };
1169+
11521170
export {
11531171
Evals as Evals,
11541172
type EvalCustomDataSourceConfig as EvalCustomDataSourceConfig,

src/core/pagination.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,68 @@ export class CursorPage<Item extends { id: string }>
202202
};
203203
}
204204
}
205+
206+
export interface ConversationCursorPageResponse<Item> {
207+
data: Array<Item>;
208+
209+
has_more: boolean;
210+
211+
last_id: string;
212+
}
213+
214+
export interface ConversationCursorPageParams {
215+
after?: string;
216+
217+
limit?: number;
218+
}
219+
220+
export class ConversationCursorPage<Item>
221+
extends AbstractPage<Item>
222+
implements ConversationCursorPageResponse<Item>
223+
{
224+
data: Array<Item>;
225+
226+
has_more: boolean;
227+
228+
last_id: string;
229+
230+
constructor(
231+
client: OpenAI,
232+
response: Response,
233+
body: ConversationCursorPageResponse<Item>,
234+
options: FinalRequestOptions,
235+
) {
236+
super(client, response, body, options);
237+
238+
this.data = body.data || [];
239+
this.has_more = body.has_more || false;
240+
this.last_id = body.last_id || '';
241+
}
242+
243+
getPaginatedItems(): Item[] {
244+
return this.data ?? [];
245+
}
246+
247+
override hasNextPage(): boolean {
248+
if (this.has_more === false) {
249+
return false;
250+
}
251+
252+
return super.hasNextPage();
253+
}
254+
255+
nextPageRequestOptions(): PageRequestOptions | null {
256+
const cursor = this.last_id;
257+
if (!cursor) {
258+
return null;
259+
}
260+
261+
return {
262+
...this.options,
263+
query: {
264+
...maybeObj(this.options.query),
265+
after: cursor,
266+
},
267+
};
268+
}
269+
}

src/resources/conversations.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
export * from './conversations/index';

0 commit comments

Comments
 (0)