Skip to content

Commit 07e8813

Browse files
feat(workflows): add bulk support (#2526)
1 parent 1dc6add commit 07e8813

7 files changed

Lines changed: 96 additions & 2 deletions

File tree

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 1650
1+
configured_endpoints: 1651
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-0ed9f898b31619623e50d660d04beca50e44987bfd3eb3a6ff98d3bca2a9c569.yml

api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7856,12 +7856,14 @@ Types:
78567856

78577857
- <code><a href="./src/resources/workflows/instances/instances.ts">InstanceCreateResponse</a></code>
78587858
- <code><a href="./src/resources/workflows/instances/instances.ts">InstanceListResponse</a></code>
7859+
- <code><a href="./src/resources/workflows/instances/instances.ts">InstanceBulkResponse</a></code>
78597860
- <code><a href="./src/resources/workflows/instances/instances.ts">InstanceGetResponse</a></code>
78607861

78617862
Methods:
78627863

78637864
- <code title="post /accounts/{account_id}/workflows/{workflow_name}/instances">client.workflows.instances.<a href="./src/resources/workflows/instances/instances.ts">create</a>(workflowName, { ...params }) -> InstanceCreateResponse</code>
78647865
- <code title="get /accounts/{account_id}/workflows/{workflow_name}/instances">client.workflows.instances.<a href="./src/resources/workflows/instances/instances.ts">list</a>(workflowName, { ...params }) -> InstanceListResponsesV4PagePaginationArray</code>
7866+
- <code title="post /accounts/{account_id}/workflows/{workflow_name}/instances/batch">client.workflows.instances.<a href="./src/resources/workflows/instances/instances.ts">bulk</a>(workflowName, [ ...body ]) -> InstanceBulkResponsesSinglePage</code>
78657867
- <code title="get /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}">client.workflows.instances.<a href="./src/resources/workflows/instances/instances.ts">get</a>(workflowName, instanceId, { ...params }) -> InstanceGetResponse</code>
78667868

78677869
### Status

src/resources/workflows/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22

33
export {
44
InstanceListResponsesV4PagePaginationArray,
5+
InstanceBulkResponsesSinglePage,
56
Instances,
67
type InstanceCreateResponse,
78
type InstanceListResponse,
9+
type InstanceBulkResponse,
810
type InstanceGetResponse,
911
type InstanceCreateParams,
1012
type InstanceListParams,
13+
type InstanceBulkParams,
1114
type InstanceGetParams,
1215
} from './instances/index';
1316
export {

src/resources/workflows/instances/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22

33
export {
44
InstanceListResponsesV4PagePaginationArray,
5+
InstanceBulkResponsesSinglePage,
56
Instances,
67
type InstanceCreateResponse,
78
type InstanceListResponse,
9+
type InstanceBulkResponse,
810
type InstanceGetResponse,
911
type InstanceCreateParams,
1012
type InstanceListParams,
13+
type InstanceBulkParams,
1114
type InstanceGetParams,
1215
} from './instances';
1316
export { Status, type StatusEditResponse, type StatusEditParams } from './status';

src/resources/workflows/instances/instances.ts

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { APIResource } from '../../../resource';
44
import * as Core from '../../../core';
55
import * as StatusAPI from './status';
66
import { Status, StatusEditParams, StatusEditResponse } from './status';
7-
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from '../../../pagination';
7+
import { SinglePage, V4PagePaginationArray, type V4PagePaginationArrayParams } from '../../../pagination';
88

99
export class Instances extends APIResource {
1010
status: StatusAPI.Status = new StatusAPI.Status(this._client);
@@ -42,6 +42,22 @@ export class Instances extends APIResource {
4242
);
4343
}
4444

45+
/**
46+
* Batch create new Workflow instances
47+
*/
48+
bulk(
49+
workflowName: string,
50+
params: InstanceBulkParams,
51+
options?: Core.RequestOptions,
52+
): Core.PagePromise<InstanceBulkResponsesSinglePage, InstanceBulkResponse> {
53+
const { account_id, body } = params ?? {};
54+
return this._client.getAPIList(
55+
`/accounts/${account_id}/workflows/${workflowName}/instances/batch`,
56+
InstanceBulkResponsesSinglePage,
57+
{ body: body, method: 'post', ...options },
58+
);
59+
}
60+
4561
/**
4662
* Get logs and status from instance
4763
*/
@@ -63,6 +79,8 @@ export class Instances extends APIResource {
6379

6480
export class InstanceListResponsesV4PagePaginationArray extends V4PagePaginationArray<InstanceListResponse> {}
6581

82+
export class InstanceBulkResponsesSinglePage extends SinglePage<InstanceBulkResponse> {}
83+
6684
export interface InstanceCreateResponse {
6785
id: string;
6886

@@ -109,6 +127,25 @@ export interface InstanceListResponse {
109127
workflow_id: string;
110128
}
111129

130+
export interface InstanceBulkResponse {
131+
id: string;
132+
133+
status:
134+
| 'queued'
135+
| 'running'
136+
| 'paused'
137+
| 'errored'
138+
| 'terminated'
139+
| 'complete'
140+
| 'waitingForPause'
141+
| 'waiting'
142+
| 'unknown';
143+
144+
version_id: string;
145+
146+
workflow_id: string;
147+
}
148+
112149
export interface InstanceGetResponse {
113150
end: string | null;
114151

@@ -292,21 +329,45 @@ export interface InstanceListParams extends V4PagePaginationArrayParams {
292329
| 'unknown';
293330
}
294331

332+
export interface InstanceBulkParams {
333+
/**
334+
* Path param:
335+
*/
336+
account_id: string;
337+
338+
/**
339+
* Body param:
340+
*/
341+
body?: Array<InstanceBulkParams.Body>;
342+
}
343+
344+
export namespace InstanceBulkParams {
345+
export interface Body {
346+
instance_id?: string;
347+
348+
params?: unknown;
349+
}
350+
}
351+
295352
export interface InstanceGetParams {
296353
account_id: string;
297354
}
298355

299356
Instances.InstanceListResponsesV4PagePaginationArray = InstanceListResponsesV4PagePaginationArray;
357+
Instances.InstanceBulkResponsesSinglePage = InstanceBulkResponsesSinglePage;
300358
Instances.Status = Status;
301359

302360
export declare namespace Instances {
303361
export {
304362
type InstanceCreateResponse as InstanceCreateResponse,
305363
type InstanceListResponse as InstanceListResponse,
364+
type InstanceBulkResponse as InstanceBulkResponse,
306365
type InstanceGetResponse as InstanceGetResponse,
307366
InstanceListResponsesV4PagePaginationArray as InstanceListResponsesV4PagePaginationArray,
367+
InstanceBulkResponsesSinglePage as InstanceBulkResponsesSinglePage,
308368
type InstanceCreateParams as InstanceCreateParams,
309369
type InstanceListParams as InstanceListParams,
370+
type InstanceBulkParams as InstanceBulkParams,
310371
type InstanceGetParams as InstanceGetParams,
311372
};
312373

src/resources/workflows/workflows.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import {
1313
} from './versions';
1414
import * as InstancesAPI from './instances/instances';
1515
import {
16+
InstanceBulkParams,
17+
InstanceBulkResponse,
18+
InstanceBulkResponsesSinglePage,
1619
InstanceCreateParams,
1720
InstanceCreateResponse,
1821
InstanceGetParams,
@@ -207,6 +210,7 @@ export interface WorkflowGetParams {
207210

208211
Workflows.Instances = InstancesAPIInstances;
209212
Workflows.InstanceListResponsesV4PagePaginationArray = InstanceListResponsesV4PagePaginationArray;
213+
Workflows.InstanceBulkResponsesSinglePage = InstanceBulkResponsesSinglePage;
210214
Workflows.Versions = Versions;
211215
Workflows.VersionListResponsesV4PagePaginationArray = VersionListResponsesV4PagePaginationArray;
212216

@@ -215,10 +219,13 @@ export declare namespace Workflows {
215219
InstancesAPIInstances as Instances,
216220
type InstanceCreateResponse as InstanceCreateResponse,
217221
type InstanceListResponse as InstanceListResponse,
222+
type InstanceBulkResponse as InstanceBulkResponse,
218223
type InstanceGetResponse as InstanceGetResponse,
219224
InstanceListResponsesV4PagePaginationArray as InstanceListResponsesV4PagePaginationArray,
225+
InstanceBulkResponsesSinglePage as InstanceBulkResponsesSinglePage,
220226
type InstanceCreateParams as InstanceCreateParams,
221227
type InstanceListParams as InstanceListParams,
228+
type InstanceBulkParams as InstanceBulkParams,
222229
type InstanceGetParams as InstanceGetParams,
223230
};
224231

tests/api-resources/workflows/instances/instances.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,24 @@ describe('resource instances', () => {
5151
});
5252
});
5353

54+
test('bulk: only required params', async () => {
55+
const responsePromise = client.workflows.instances.bulk('x', { account_id: 'account_id' });
56+
const rawResponse = await responsePromise.asResponse();
57+
expect(rawResponse).toBeInstanceOf(Response);
58+
const response = await responsePromise;
59+
expect(response).not.toBeInstanceOf(Response);
60+
const dataAndResponse = await responsePromise.withResponse();
61+
expect(dataAndResponse.data).toBe(response);
62+
expect(dataAndResponse.response).toBe(rawResponse);
63+
});
64+
65+
test('bulk: required and optional params', async () => {
66+
const response = await client.workflows.instances.bulk('x', {
67+
account_id: 'account_id',
68+
body: [{ instance_id: 'instance_id', params: {} }],
69+
});
70+
});
71+
5472
test('get: only required params', async () => {
5573
const responsePromise = client.workflows.instances.get('x', 'x', { account_id: 'account_id' });
5674
const rawResponse = await responsePromise.asResponse();

0 commit comments

Comments
 (0)