Skip to content

Commit

Permalink
feat(api): update via SDK Studio
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-bot committed May 6, 2024
1 parent 1a2fb6f commit 6f4ae87
Show file tree
Hide file tree
Showing 19 changed files with 429 additions and 292 deletions.
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 37
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/plastic-labs%2Fhoncho-e36029186c19d818349104455aabb7827128d0f0719e768337e9d04c17f4d676.yml
configured_endpoints: 38
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/plastic-labs%2Fhoncho-9d856cd5016ed2e3273de9ef9aaca939bc2e90a0c557ad44c808fafa928b8310.yml
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,37 @@ On timeout, an `APIConnectionTimeoutError` is thrown.

Note that requests which time out will be [retried twice by default](#retries).

## Auto-pagination

List methods in the Honcho API are paginated.
You can use `for await … of` syntax to iterate through items across all pages:

```ts
async function fetchAllAppsUsers(params) {
const allAppsUsers = [];
// Automatically fetches more pages as needed.
for await (const user of honcho.apps.users.list('REPLACE_ME')) {
allAppsUsers.push(user);
}
return allAppsUsers;
}
```

Alternatively, you can make request a single page at a time:

```ts
let page = await honcho.apps.users.list('REPLACE_ME');
for (const user of page.items) {
console.log(user);
}

// Convenience methods are provided for manually paginating:
while (page.hasNextPage()) {
page = page.getNextPage();
// ...
}
```

## Advanced Usage

### Accessing raw Response data (e.g., headers)
Expand Down
31 changes: 13 additions & 18 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ Types:
Methods:

- <code title="post /apps/{app_id}/users">client.apps.users.<a href="./src/resources/apps/users/users.ts">create</a>(appId, { ...params }) -> User</code>
- <code title="get /apps/{app_id}/users/{user_id}">client.apps.users.<a href="./src/resources/apps/users/users.ts">retrieve</a>(appId, userId) -> User</code>
- <code title="put /apps/{app_id}/users/{user_id}">client.apps.users.<a href="./src/resources/apps/users/users.ts">update</a>(appId, userId, { ...params }) -> User</code>
- <code title="get /apps/{app_id}/users">client.apps.users.<a href="./src/resources/apps/users/users.ts">list</a>(appId, { ...params }) -> PageUser</code>
- <code title="get /apps/{app_id}/users">client.apps.users.<a href="./src/resources/apps/users/users.ts">list</a>(appId, { ...params }) -> UsersPage</code>
- <code title="get /apps/{app_id}/users/{user_id}">client.apps.users.<a href="./src/resources/apps/users/users.ts">get</a>(appId, userId) -> User</code>
- <code title="get /apps/{app_id}/users/name/{name}">client.apps.users.<a href="./src/resources/apps/users/users.ts">getByName</a>(appId, name) -> User</code>
- <code title="get /apps/{app_id}/users/get_or_create/{name}">client.apps.users.<a href="./src/resources/apps/users/users.ts">getOrCreate</a>(appId, name) -> User</code>

### Sessions
Expand All @@ -35,14 +36,17 @@ Types:
- <code><a href="./src/resources/apps/users/sessions/sessions.ts">PageSession</a></code>
- <code><a href="./src/resources/apps/users/sessions/sessions.ts">Session</a></code>
- <code><a href="./src/resources/apps/users/sessions/sessions.ts">SessionDeleteResponse</a></code>
- <code><a href="./src/resources/apps/users/sessions/sessions.ts">SessionStreamResponse</a></code>

Methods:

- <code title="post /apps/{app_id}/users/{user_id}/sessions">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">create</a>(appId, userId, { ...params }) -> Session</code>
- <code title="put /apps/{app_id}/users/{user_id}/sessions/{session_id}">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">update</a>(appId, userId, sessionId, { ...params }) -> Session</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">list</a>(appId, userId, { ...params }) -> PageSession</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">list</a>(appId, userId, { ...params }) -> SessionsPage</code>
- <code title="delete /apps/{app_id}/users/{user_id}/sessions/{session_id}">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">delete</a>(appId, userId, sessionId) -> unknown</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/chat">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">chat</a>(appId, userId, sessionId, { ...params }) -> AgentChat</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">get</a>(appId, userId, sessionId) -> Session</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/chat/stream">client.apps.users.sessions.<a href="./src/resources/apps/users/sessions/sessions.ts">stream</a>(appId, userId, sessionId, { ...params }) -> unknown</code>

#### Messages

Expand All @@ -55,7 +59,7 @@ Methods:

- <code title="post /apps/{app_id}/users/{user_id}/sessions/{session_id}/messages">client.apps.users.sessions.messages.<a href="./src/resources/apps/users/sessions/messages.ts">create</a>(appId, userId, sessionId, { ...params }) -> Message</code>
- <code title="put /apps/{app_id}/users/{user_id}/sessions/{session_id}/messages/{message_id}">client.apps.users.sessions.messages.<a href="./src/resources/apps/users/sessions/messages.ts">update</a>(appId, userId, sessionId, messageId, { ...params }) -> Message</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/messages">client.apps.users.sessions.messages.<a href="./src/resources/apps/users/sessions/messages.ts">list</a>(appId, userId, sessionId, { ...params }) -> PageMessage</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/messages">client.apps.users.sessions.messages.<a href="./src/resources/apps/users/sessions/messages.ts">list</a>(appId, userId, sessionId, { ...params }) -> MessagesPage</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/messages/{message_id}">client.apps.users.sessions.messages.<a href="./src/resources/apps/users/sessions/messages.ts">get</a>(appId, userId, sessionId, messageId) -> Message</code>

#### Metamessages
Expand All @@ -69,19 +73,9 @@ Methods:

- <code title="post /apps/{app_id}/users/{user_id}/sessions/{session_id}/metamessages">client.apps.users.sessions.metamessages.<a href="./src/resources/apps/users/sessions/metamessages.ts">create</a>(appId, userId, sessionId, { ...params }) -> Metamessage</code>
- <code title="put /apps/{app_id}/users/{user_id}/sessions/{session_id}/metamessages/{metamessage_id}">client.apps.users.sessions.metamessages.<a href="./src/resources/apps/users/sessions/metamessages.ts">update</a>(appId, userId, sessionId, metamessageId, { ...params }) -> Metamessage</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/metamessages">client.apps.users.sessions.metamessages.<a href="./src/resources/apps/users/sessions/metamessages.ts">list</a>(appId, userId, sessionId, { ...params }) -> PageMetamessage</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/metamessages">client.apps.users.sessions.metamessages.<a href="./src/resources/apps/users/sessions/metamessages.ts">list</a>(appId, userId, sessionId, { ...params }) -> MetamessagesPage</code>
- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/metamessages/{metamessage_id}">client.apps.users.sessions.metamessages.<a href="./src/resources/apps/users/sessions/metamessages.ts">get</a>(appId, userId, sessionId, metamessageId, { ...params }) -> Metamessage</code>

#### Chat

Types:

- <code><a href="./src/resources/apps/users/sessions/chat.ts">ChatStreamResponse</a></code>

Methods:

- <code title="get /apps/{app_id}/users/{user_id}/sessions/{session_id}/chat/stream">client.apps.users.sessions.chat.<a href="./src/resources/apps/users/sessions/chat.ts">stream</a>(appId, userId, sessionId, { ...params }) -> unknown</code>

### Collections

Types:
Expand All @@ -93,10 +87,11 @@ Types:
Methods:

- <code title="post /apps/{app_id}/users/{user_id}/collections">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">create</a>(appId, userId, { ...params }) -> Collection</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/{collection_id}">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">retrieve</a>(appId, userId, collectionId) -> Collection</code>
- <code title="put /apps/{app_id}/users/{user_id}/collections/{collection_id}">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">update</a>(appId, userId, collectionId, { ...params }) -> Collection</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">list</a>(appId, userId, { ...params }) -> PageCollection</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">list</a>(appId, userId, { ...params }) -> CollectionsPage</code>
- <code title="delete /apps/{app_id}/users/{user_id}/collections/{collection_id}">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">delete</a>(appId, userId, collectionId) -> unknown</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/{collection_id}">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">get</a>(appId, userId, collectionId) -> Collection</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/name/{name}">client.apps.users.collections.<a href="./src/resources/apps/users/collections/collections.ts">getByName</a>(appId, userId, name) -> Collection</code>

#### Documents

Expand All @@ -110,7 +105,7 @@ Methods:

- <code title="post /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">create</a>(appId, userId, collectionId, { ...params }) -> Document</code>
- <code title="put /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents/{document_id}">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">update</a>(appId, userId, collectionId, documentId, { ...params }) -> Document</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">list</a>(appId, userId, collectionId, { ...params }) -> PageDocument</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">list</a>(appId, userId, collectionId, { ...params }) -> DocumentsPage</code>
- <code title="delete /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents/{document_id}">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">delete</a>(appId, userId, collectionId, documentId) -> unknown</code>
- <code title="get /apps/{app_id}/users/{user_id}/collections/{collection_id}/documents/{document_id}">client.apps.users.collections.documents.<a href="./src/resources/apps/users/collections/documents.ts">get</a>(appId, userId, collectionId, documentId) -> Document</code>

Expand Down
1 change: 1 addition & 0 deletions src/resources/apps/apps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export namespace Apps {
export import Users = UsersAPI.Users;
export import PageUser = UsersAPI.PageUser;
export import User = UsersAPI.User;
export import UsersPage = UsersAPI.UsersPage;
export import UserCreateParams = UsersAPI.UserCreateParams;
export import UserUpdateParams = UsersAPI.UserUpdateParams;
export import UserListParams = UsersAPI.UserListParams;
Expand Down
10 changes: 9 additions & 1 deletion src/resources/apps/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

export { App, AppCreateParams, AppUpdateParams, Apps } from './apps';
export { PageUser, User, UserCreateParams, UserUpdateParams, UserListParams, Users } from './users/index';
export {
PageUser,
User,
UserCreateParams,
UserUpdateParams,
UserListParams,
UsersPage,
Users,
} from './users/index';
76 changes: 45 additions & 31 deletions src/resources/apps/users/collections/collections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import * as CollectionsAPI from 'honcho/resources/apps/users/collections/collect
import * as DocumentsAPI from 'honcho/resources/apps/users/collections/documents';
import * as NameAPI from 'honcho/resources/apps/users/collections/name';
import * as QueryAPI from 'honcho/resources/apps/users/collections/query';
import { Page, type PageParams } from 'honcho/pagination';

export class Collections extends APIResource {
documents: DocumentsAPI.Documents = new DocumentsAPI.Documents(this._client);
Expand All @@ -25,18 +26,6 @@ export class Collections extends APIResource {
return this._client.post(`/apps/${appId}/users/${userId}/collections`, { body, ...options });
}

/**
* Get Collection By Id
*/
retrieve(
appId: string,
userId: string,
collectionId: string,
options?: Core.RequestOptions,
): Core.APIPromise<Collection> {
return this._client.get(`/apps/${appId}/users/${userId}/collections/${collectionId}`, options);
}

/**
* Update Collection
*/
Expand Down Expand Up @@ -67,18 +56,25 @@ export class Collections extends APIResource {
userId: string,
query?: CollectionListParams,
options?: Core.RequestOptions,
): Core.APIPromise<PageCollection>;
list(appId: string, userId: string, options?: Core.RequestOptions): Core.APIPromise<PageCollection>;
): Core.PagePromise<CollectionsPage, Collection>;
list(
appId: string,
userId: string,
options?: Core.RequestOptions,
): Core.PagePromise<CollectionsPage, Collection>;
list(
appId: string,
userId: string,
query: CollectionListParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.APIPromise<PageCollection> {
): Core.PagePromise<CollectionsPage, Collection> {
if (isRequestOptions(query)) {
return this.list(appId, userId, {}, query);
}
return this._client.get(`/apps/${appId}/users/${userId}/collections`, { query, ...options });
return this._client.getAPIList(`/apps/${appId}/users/${userId}/collections`, CollectionsPage, {
query,
...options,
});
}

/**
Expand All @@ -92,8 +88,34 @@ export class Collections extends APIResource {
): Core.APIPromise<unknown> {
return this._client.delete(`/apps/${appId}/users/${userId}/collections/${collectionId}`, options);
}

/**
* Get Collection By Id
*/
get(
appId: string,
userId: string,
collectionId: string,
options?: Core.RequestOptions,
): Core.APIPromise<Collection> {
return this._client.get(`/apps/${appId}/users/${userId}/collections/${collectionId}`, options);
}

/**
* Get Collection By Name
*/
getByName(
appId: string,
userId: string,
name: string,
options?: Core.RequestOptions,
): Core.APIPromise<Collection> {
return this._client.get(`/apps/${appId}/users/${userId}/collections/name/${name}`, options);
}
}

export class CollectionsPage extends Page<Collection> {}

export interface Collection {
id: string;

Expand All @@ -109,13 +131,13 @@ export interface Collection {
export interface PageCollection {
items: Array<Collection>;

page: number | null;
page: number;

size: number | null;
size: number;

total: number | null;
total: number;

pages?: number | null;
pages?: number;
}

export type CollectionDeleteResponse = unknown;
Expand All @@ -132,33 +154,25 @@ export interface CollectionUpdateParams {
metadata?: unknown | null;
}

export interface CollectionListParams {
export interface CollectionListParams extends PageParams {
filter?: string | null;

/**
* Page number
*/
page?: number;

reverse?: boolean | null;

/**
* Page size
*/
size?: number;
}

export namespace Collections {
export import Collection = CollectionsAPI.Collection;
export import PageCollection = CollectionsAPI.PageCollection;
export import CollectionDeleteResponse = CollectionsAPI.CollectionDeleteResponse;
export import CollectionsPage = CollectionsAPI.CollectionsPage;
export import CollectionCreateParams = CollectionsAPI.CollectionCreateParams;
export import CollectionUpdateParams = CollectionsAPI.CollectionUpdateParams;
export import CollectionListParams = CollectionsAPI.CollectionListParams;
export import Documents = DocumentsAPI.Documents;
export import Document = DocumentsAPI.Document;
export import PageDocument = DocumentsAPI.PageDocument;
export import DocumentDeleteResponse = DocumentsAPI.DocumentDeleteResponse;
export import DocumentsPage = DocumentsAPI.DocumentsPage;
export import DocumentCreateParams = DocumentsAPI.DocumentCreateParams;
export import DocumentUpdateParams = DocumentsAPI.DocumentUpdateParams;
export import DocumentListParams = DocumentsAPI.DocumentListParams;
Expand Down
39 changes: 17 additions & 22 deletions src/resources/apps/users/collections/documents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import * as Core from 'honcho/core';
import { APIResource } from 'honcho/resource';
import { isRequestOptions } from 'honcho/core';
import * as DocumentsAPI from 'honcho/resources/apps/users/collections/documents';
import { Page, type PageParams } from 'honcho/pagination';

export class Documents extends APIResource {
/**
Expand Down Expand Up @@ -48,27 +49,28 @@ export class Documents extends APIResource {
collectionId: string,
query?: DocumentListParams,
options?: Core.RequestOptions,
): Core.APIPromise<PageDocument>;
): Core.PagePromise<DocumentsPage, Document>;
list(
appId: string,
userId: string,
collectionId: string,
options?: Core.RequestOptions,
): Core.APIPromise<PageDocument>;
): Core.PagePromise<DocumentsPage, Document>;
list(
appId: string,
userId: string,
collectionId: string,
query: DocumentListParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.APIPromise<PageDocument> {
): Core.PagePromise<DocumentsPage, Document> {
if (isRequestOptions(query)) {
return this.list(appId, userId, collectionId, {}, query);
}
return this._client.get(`/apps/${appId}/users/${userId}/collections/${collectionId}/documents`, {
query,
...options,
});
return this._client.getAPIList(
`/apps/${appId}/users/${userId}/collections/${collectionId}/documents`,
DocumentsPage,
{ query, ...options },
);
}

/**
Expand Down Expand Up @@ -104,6 +106,8 @@ export class Documents extends APIResource {
}
}

export class DocumentsPage extends Page<Document> {}

export interface Document {
id: string;

Expand All @@ -119,13 +123,13 @@ export interface Document {
export interface PageDocument {
items: Array<Document>;

page: number | null;
page: number;

size: number | null;
size: number;

total: number | null;
total: number;

pages?: number | null;
pages?: number;
}

export type DocumentDeleteResponse = unknown;
Expand All @@ -142,26 +146,17 @@ export interface DocumentUpdateParams {
metadata?: unknown | null;
}

export interface DocumentListParams {
export interface DocumentListParams extends PageParams {
filter?: string | null;

/**
* Page number
*/
page?: number;

reverse?: boolean | null;

/**
* Page size
*/
size?: number;
}

export namespace Documents {
export import Document = DocumentsAPI.Document;
export import PageDocument = DocumentsAPI.PageDocument;
export import DocumentDeleteResponse = DocumentsAPI.DocumentDeleteResponse;
export import DocumentsPage = DocumentsAPI.DocumentsPage;
export import DocumentCreateParams = DocumentsAPI.DocumentCreateParams;
export import DocumentUpdateParams = DocumentsAPI.DocumentUpdateParams;
export import DocumentListParams = DocumentsAPI.DocumentListParams;
Expand Down
Loading

0 comments on commit 6f4ae87

Please sign in to comment.