diff --git a/src/client.test.ts b/src/client.test.ts index 5f01e94..1320d73 100644 --- a/src/client.test.ts +++ b/src/client.test.ts @@ -11,6 +11,7 @@ import { ModelDocumentFolder, ModelInvoice, ModelPaymentMethod, + ModelSevUser, ModelTag, ModelUnity, } from "./interfaces.js"; @@ -49,10 +50,7 @@ test("Get next invoice number", async () => { }); test("Create a new invoice", async () => { - const { objects: invoiceNumber } = await sevDeskClient.getNextInvoiceNumber({ - invoiceType: "RE", - useNextNumber: true, - }); + const invoiceNumber = `TEST-${new Date().toISOString()}`; const { objects: contacts } = await sevDeskClient.getContacts(); const { @@ -147,7 +145,6 @@ test("Create a new invoice", async () => { discountDelete: null, }); - console.log(invoice); assertIsInvoice(invoice); }); @@ -211,6 +208,14 @@ test("Get tags", async () => { assert.is(tags.length > 0, true); tags.forEach(assertIsTag); }); + +test("Get users", async () => { + const { objects: users } = await sevDeskClient.getSevUsers(); + + assert.is(users.length > 0, true); + users.forEach(assertIsSevUser); +}); + const assertIsInvoice = (invoice: ModelInvoice) => { assert.is(invoice.objectName, "Invoice"); }; @@ -243,4 +248,8 @@ const assertIsTag = (tag: ModelTag) => { assert.is(tag.objectName, "Tag"); }; +const assertIsSevUser = (user: ModelSevUser) => { + assert.is(user.objectName, "SevUser"); +}; + test.run(); diff --git a/src/client.ts b/src/client.ts index 17b636f..fc469fe 100644 --- a/src/client.ts +++ b/src/client.ts @@ -8,6 +8,7 @@ import { ModelDocumentFolder, ModelInvoice, ModelPaymentMethod, + ModelSevUser, ModelTag, ModelUnity, } from "./interfaces.js"; @@ -277,6 +278,21 @@ export class SevDeskClient { }); } + // ------------------------------------------------------- + // SevUser + // ------------------------------------------------------- + + /** + * Get an overview of all users + */ + async getSevUsers(params: UrlParamsFor<"apiGetSevUsersUrl"> = {}) { + const url = this.urls.apiGetSevUsersUrl(params); + + return this.request<{ objects: Array> }>(url, { + method: "GET", + }); + } + // // pending invoices from sevdesk includes also outstanding / due invoices // // we remove them with a filter but you could also include the if you only need everything pending // async getPendingInvoices(options = { includeOutstanding: false }) { diff --git a/src/urls.ts b/src/urls.ts index 91ffd4d..6e5adb0 100644 --- a/src/urls.ts +++ b/src/urls.ts @@ -142,4 +142,15 @@ export class SevDeskUrls { query, }); } + + // ------------------------------------------------------- + // SevUser + // ------------------------------------------------------- + + apiGetSevUsersUrl({ ...query }: DefaultCollectionQuery & Query = {}) { + return this.apiUrl({ + path: `SevUser`, + query, + }); + } }