Skip to content

Commit fabbf01

Browse files
authored
Merge pull request #224 from zendesk/victor.piolin/create-many-ticket
chore: Implement Create many ticket endpoints
2 parents cb8f24e + d6568bc commit fabbf01

3 files changed

Lines changed: 62 additions & 2 deletions

File tree

__tests__/services/zendesk-api-service.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,4 +871,38 @@ describe("ZendeskService", () => {
871871
expect(requestMock).toHaveBeenCalledTimes(1);
872872
});
873873
});
874+
875+
describe("createManyTickets", () => {
876+
it("should create many tickets with the correct data", async () => {
877+
await service.createManyTickets([
878+
{
879+
subject: "test",
880+
requester_id: 123,
881+
type: "problem",
882+
comment: {
883+
body: "Super important issue"
884+
}
885+
}
886+
]);
887+
888+
expect(requestMock).toHaveBeenNthCalledWith(1, {
889+
url: `/api/v2/create_many`,
890+
type: "POST",
891+
contentType: "application/json",
892+
data: JSON.stringify({
893+
tickets: [
894+
{
895+
subject: "test",
896+
requester_id: 123,
897+
type: "problem",
898+
comment: {
899+
body: "Super important issue"
900+
}
901+
}
902+
]
903+
})
904+
});
905+
expect(requestMock).toHaveBeenCalledTimes(1);
906+
});
907+
});
874908
});

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zendesk/zaf-toolbox",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"description": "A toolbox for ZAF application built with 🩷 by Zendesk Labs",
55
"main": "lib/src/index.js",
66
"types": "lib/src/index.d.ts",

src/services/zendesk-api-service.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import {
2828
IMessagesResults,
2929
IListFilter,
3030
ICreateAccessTokenResponse,
31-
IZendeskTicket
31+
IZendeskTicket,
32+
IBulkJobResponse
3233
} from "@models/index";
3334
import {
3435
ICreateConnectionResponse,
@@ -263,6 +264,31 @@ export class ZendeskApiService {
263264
});
264265
}
265266

267+
/**
268+
* Create many tickets
269+
* A limit of 100 tickets can be created at a time.
270+
*
271+
* @link https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#create-ticket
272+
* @param ticket The ticket to create
273+
* @returns {IZendeskTicket}
274+
*/
275+
public async createManyTickets(
276+
tickets: Omit<IZendeskTicket, "id" | "created_at" | "updated_at" | "url" | "is_public">[]
277+
): Promise<IBulkJobResponse> {
278+
if (tickets.length > 100) {
279+
throw new Error("A limit of 100 tickets can be created at a time.");
280+
}
281+
282+
return await this.client.request<IBulkJobResponse>({
283+
url: "/api/v2/create_many",
284+
type: "POST",
285+
contentType: "application/json",
286+
data: JSON.stringify({
287+
tickets
288+
})
289+
});
290+
}
291+
266292
/**
267293
* Fetch all user instance tags
268294
*/

0 commit comments

Comments
 (0)