Skip to content

Commit

Permalink
feat(api): manual updates (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
Stainless Bot committed Sep 24, 2024
1 parent 50a86f4 commit d072c4d
Show file tree
Hide file tree
Showing 8 changed files with 182 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 16
configured_endpoints: 18
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/writerai%2Fwriter-5d34056e0e749d39a81c92ed4fb221da6ac627cff4cb9edcb6b054fa00abb335.yml
4 changes: 4 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ Types:
- <code><a href="./src/resources/graphs.ts">GraphCreateResponse</a></code>
- <code><a href="./src/resources/graphs.ts">GraphUpdateResponse</a></code>
- <code><a href="./src/resources/graphs.ts">GraphDeleteResponse</a></code>
- <code><a href="./src/resources/graphs.ts">GraphQuestionResponse</a></code>
- <code><a href="./src/resources/graphs.ts">GraphRemoveFileFromGraphResponse</a></code>

Methods:
Expand All @@ -58,6 +59,7 @@ Methods:
- <code title="get /v1/graphs">client.graphs.<a href="./src/resources/graphs.ts">list</a>({ ...params }) -> GraphsCursorPage</code>
- <code title="delete /v1/graphs/{graph_id}">client.graphs.<a href="./src/resources/graphs.ts">delete</a>(graphId) -> GraphDeleteResponse</code>
- <code title="post /v1/graphs/{graph_id}/file">client.graphs.<a href="./src/resources/graphs.ts">addFileToGraph</a>(graphId, { ...params }) -> File</code>
- <code title="post /v1/graphs/question">client.graphs.<a href="./src/resources/graphs.ts">question</a>({ ...params }) -> GraphQuestionResponse</code>
- <code title="delete /v1/graphs/{graph_id}/file/{file_id}">client.graphs.<a href="./src/resources/graphs.ts">removeFileFromGraph</a>(graphId, fileId) -> GraphRemoveFileFromGraphResponse</code>

# Files
Expand All @@ -66,11 +68,13 @@ Types:

- <code><a href="./src/resources/files.ts">File</a></code>
- <code><a href="./src/resources/files.ts">FileDeleteResponse</a></code>
- <code><a href="./src/resources/files.ts">FileRetryResponse</a></code>

Methods:

- <code title="get /v1/files/{file_id}">client.files.<a href="./src/resources/files.ts">retrieve</a>(fileId) -> File</code>
- <code title="get /v1/files">client.files.<a href="./src/resources/files.ts">list</a>({ ...params }) -> FilesCursorPage</code>
- <code title="delete /v1/files/{file_id}">client.files.<a href="./src/resources/files.ts">delete</a>(fileId) -> FileDeleteResponse</code>
- <code title="get /v1/files/{file_id}/download">client.files.<a href="./src/resources/files.ts">download</a>(fileId) -> Response</code>
- <code title="post /v1/files/retry">client.files.<a href="./src/resources/files.ts">retry</a>({ ...params }) -> unknown</code>
- <code title="post /v1/files">client.files.<a href="./src/resources/files.ts">upload</a>({ ...params }) -> File</code>
4 changes: 4 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,18 +215,22 @@ export namespace Writer {
export import GraphCreateResponse = API.GraphCreateResponse;
export import GraphUpdateResponse = API.GraphUpdateResponse;
export import GraphDeleteResponse = API.GraphDeleteResponse;
export import GraphQuestionResponse = API.GraphQuestionResponse;
export import GraphRemoveFileFromGraphResponse = API.GraphRemoveFileFromGraphResponse;
export import GraphsCursorPage = API.GraphsCursorPage;
export import GraphCreateParams = API.GraphCreateParams;
export import GraphUpdateParams = API.GraphUpdateParams;
export import GraphListParams = API.GraphListParams;
export import GraphAddFileToGraphParams = API.GraphAddFileToGraphParams;
export import GraphQuestionParams = API.GraphQuestionParams;

export import Files = API.Files;
export import File = API.File;
export import FileDeleteResponse = API.FileDeleteResponse;
export import FileRetryResponse = API.FileRetryResponse;
export import FilesCursorPage = API.FilesCursorPage;
export import FileListParams = API.FileListParams;
export import FileRetryParams = API.FileRetryParams;
export import FileUploadParams = API.FileUploadParams;
}

Expand Down
18 changes: 18 additions & 0 deletions src/resources/files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ export class Files extends APIResource {
return this._client.get(`/v1/files/${fileId}/download`, { ...options, __binaryResponse: true });
}

/**
* Retry failed files
*/
retry(body: FileRetryParams, options?: Core.RequestOptions): Core.APIPromise<unknown> {
return this._client.post('/v1/files/retry', { body, ...options });
}

/**
* Upload file
*/
Expand Down Expand Up @@ -103,6 +110,8 @@ export interface FileDeleteResponse {
deleted: boolean;
}

export type FileRetryResponse = unknown;

export interface FileListParams extends CursorPageParams {
/**
* The unique identifier of the graph to which the files belong.
Expand All @@ -128,6 +137,13 @@ export interface FileListParams extends CursorPageParams {
status?: 'in_progress' | 'completed' | 'failed';
}

export interface FileRetryParams {
/**
* The unique identifier of the files to be retried.
*/
file_ids: Array<string>;
}

export interface FileUploadParams {
/**
* Body param:
Expand All @@ -145,7 +161,9 @@ export interface FileUploadParams {
export namespace Files {
export import File = FilesAPI.File;
export import FileDeleteResponse = FilesAPI.FileDeleteResponse;
export import FileRetryResponse = FilesAPI.FileRetryResponse;
export import FilesCursorPage = FilesAPI.FilesCursorPage;
export import FileListParams = FilesAPI.FileListParams;
export import FileRetryParams = FilesAPI.FileRetryParams;
export import FileUploadParams = FilesAPI.FileUploadParams;
}
91 changes: 91 additions & 0 deletions src/resources/graphs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,13 @@ export class Graphs extends APIResource {
) as Core.APIPromise<FilesAPI.File>;
}) as Core.APIPromise<FilesAPI.File>;
}

Check failure on line 85 in src/resources/graphs.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `··`
/**
* Knowledge Graph question
*/
question(body: GraphQuestionParams, options?: Core.RequestOptions): Core.APIPromise<GraphQuestionResponse> {
return this._client.post('/v1/graphs/question', { body, ...options });
}

/**
* Remove file from graph
Expand Down Expand Up @@ -201,6 +208,64 @@ export interface GraphDeleteResponse {
deleted: boolean;
}

export interface GraphQuestionResponse {
/**
* The answer to the question.
*/
answer: string;

/**
* The question that was asked.
*/
question: string;

sources: Array<GraphQuestionResponse.Source>;

subqueries?: Array<GraphQuestionResponse.Subquery>;
}

export namespace GraphQuestionResponse {
export interface Source {
/**
* The unique identifier of the file.
*/
file_id: string;

/**
* A snippet of text from the source file.
*/
snippet: string;
}

export interface Subquery {
/**
* The answer to the subquery.
*/
answer: string;

/**
* The subquery that was asked.
*/
query: string;

sources: Array<Subquery.Source>;
}

export namespace Subquery {
export interface Source {
/**
* The unique identifier of the file.
*/
file_id: string;

/**
* A snippet of text from the source file.
*/
snippet: string;
}
}
}

export interface GraphRemoveFileFromGraphResponse {
/**
* A unique identifier of the deleted file.
Expand Down Expand Up @@ -258,15 +323,41 @@ export interface GraphAddFileToGraphParams {
file_id: string;
}

export interface GraphQuestionParams {
/**
* The unique identifiers of the Knowledge Graphs to be queried.
*/
graph_ids: Array<string>;

/**
* The question to be answered using the Knowledge Graph.
*/
question: string;

/**
* Determines whether the model's output should be streamed. If true, the output is
* generated and sent incrementally, which can be useful for real-time
* applications.
*/
stream: boolean;

/**
* Specify whether to include subqueries.
*/
subqueries: boolean;
}

export namespace Graphs {
export import Graph = GraphsAPI.Graph;
export import GraphCreateResponse = GraphsAPI.GraphCreateResponse;
export import GraphUpdateResponse = GraphsAPI.GraphUpdateResponse;
export import GraphDeleteResponse = GraphsAPI.GraphDeleteResponse;
export import GraphQuestionResponse = GraphsAPI.GraphQuestionResponse;
export import GraphRemoveFileFromGraphResponse = GraphsAPI.GraphRemoveFileFromGraphResponse;
export import GraphsCursorPage = GraphsAPI.GraphsCursorPage;
export import GraphCreateParams = GraphsAPI.GraphCreateParams;
export import GraphUpdateParams = GraphsAPI.GraphUpdateParams;
export import GraphListParams = GraphsAPI.GraphListParams;
export import GraphAddFileToGraphParams = GraphsAPI.GraphAddFileToGraphParams;
export import GraphQuestionParams = GraphsAPI.GraphQuestionParams;
}
13 changes: 12 additions & 1 deletion src/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,28 @@ export {
CompletionCreateParamsStreaming,
Completions,
} from './completions';
export { File, FileDeleteResponse, FileListParams, FileUploadParams, FilesCursorPage, Files } from './files';
export {
File,
FileDeleteResponse,
FileRetryResponse,
FileListParams,
FileRetryParams,
FileUploadParams,
FilesCursorPage,
Files,
} from './files';
export {
Graph,
GraphCreateResponse,
GraphUpdateResponse,
GraphDeleteResponse,
GraphQuestionResponse,
GraphRemoveFileFromGraphResponse,
GraphCreateParams,
GraphUpdateParams,
GraphListParams,
GraphAddFileToGraphParams,
GraphQuestionParams,
GraphsCursorPage,
Graphs,
} from './graphs';
Expand Down
27 changes: 27 additions & 0 deletions tests/api-resources/files.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,33 @@ describe('resource files', () => {
);
});

test('retry: only required params', async () => {
const responsePromise = client.files.retry({
file_ids: [
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
],
});
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
expect(response).not.toBeInstanceOf(Response);
const dataAndResponse = await responsePromise.withResponse();
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});

test('retry: required and optional params', async () => {
const response = await client.files.retry({
file_ids: [
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
],
});
});

// requests with binary data not yet supported in test environment
test.skip('upload: only required params', async () => {
const responsePromise = client.files.upload({
Expand Down
25 changes: 25 additions & 0 deletions tests/api-resources/graphs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,31 @@ describe('resource graphs', () => {
});
});

test('question: only required params', async () => {
const responsePromise = client.graphs.question({
graph_ids: ['182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'],
question: 'question',
stream: true,
subqueries: true,
});
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
expect(response).not.toBeInstanceOf(Response);
const dataAndResponse = await responsePromise.withResponse();
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});

test('question: required and optional params', async () => {
const response = await client.graphs.question({
graph_ids: ['182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'],
question: 'question',
stream: true,
subqueries: true,
});
});

test('removeFileFromGraph', async () => {
const responsePromise = client.graphs.removeFileFromGraph(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
Expand Down

0 comments on commit d072c4d

Please sign in to comment.