@kombo-api/sdk 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm/funcs/generalSendPassthroughRequest.d.ts +3 -0
  2. package/esm/funcs/generalSendPassthroughRequest.d.ts.map +1 -1
  3. package/esm/funcs/generalSendPassthroughRequest.js +3 -0
  4. package/esm/funcs/generalSendPassthroughRequest.js.map +1 -1
  5. package/esm/lib/config.d.ts +3 -3
  6. package/esm/lib/config.js +3 -3
  7. package/esm/models/deletehrisabsencesabsenceidpositiveresponse.d.ts.map +1 -1
  8. package/esm/models/deletehrisabsencesabsenceidpositiveresponse.js +2 -6
  9. package/esm/models/deletehrisabsencesabsenceidpositiveresponse.js.map +1 -1
  10. package/esm/models/getatsjobspositiveresponse.d.ts.map +1 -1
  11. package/esm/models/getatsjobspositiveresponse.js +6 -26
  12. package/esm/models/getatsjobspositiveresponse.js.map +1 -1
  13. package/esm/models/gethrisabsencespositiveresponse.d.ts.map +1 -1
  14. package/esm/models/gethrisabsencespositiveresponse.js +2 -6
  15. package/esm/models/gethrisabsencespositiveresponse.js.map +1 -1
  16. package/esm/models/gethrisemployeespositiveresponse.d.ts +4 -0
  17. package/esm/models/gethrisemployeespositiveresponse.d.ts.map +1 -1
  18. package/esm/models/gethrisemployeespositiveresponse.js +11 -46
  19. package/esm/models/gethrisemployeespositiveresponse.js.map +1 -1
  20. package/esm/models/gethrisemploymentspositiveresponse.d.ts.map +1 -1
  21. package/esm/models/gethrisemploymentspositiveresponse.js +4 -16
  22. package/esm/models/gethrisemploymentspositiveresponse.js.map +1 -1
  23. package/esm/models/postconnectcreatelinkrequestbody.d.ts +2 -0
  24. package/esm/models/postconnectcreatelinkrequestbody.d.ts.map +1 -1
  25. package/esm/models/postconnectcreatelinkrequestbody.js +2 -0
  26. package/esm/models/postconnectcreatelinkrequestbody.js.map +1 -1
  27. package/esm/models/posthrisabsencespositiveresponse.d.ts.map +1 -1
  28. package/esm/models/posthrisabsencespositiveresponse.js +2 -6
  29. package/esm/models/posthrisabsencespositiveresponse.js.map +1 -1
  30. package/esm/models/posthrisemployeesformpositiveresponse.d.ts +8 -0
  31. package/esm/models/posthrisemployeesformpositiveresponse.d.ts.map +1 -1
  32. package/esm/models/posthrisemployeesformpositiveresponse.js +2 -0
  33. package/esm/models/posthrisemployeesformpositiveresponse.js.map +1 -1
  34. package/esm/sdk/general.d.ts +3 -0
  35. package/esm/sdk/general.d.ts.map +1 -1
  36. package/esm/sdk/general.js +3 -0
  37. package/esm/sdk/general.js.map +1 -1
  38. package/esm/types/enums.d.ts +10 -6
  39. package/esm/types/enums.d.ts.map +1 -1
  40. package/esm/types/enums.js +38 -1
  41. package/esm/types/enums.js.map +1 -1
  42. package/esm/types/index.d.ts +0 -1
  43. package/esm/types/index.d.ts.map +1 -1
  44. package/esm/types/index.js +0 -1
  45. package/esm/types/index.js.map +1 -1
  46. package/examples/package-lock.json +4 -2
  47. package/jsr.json +1 -1
  48. package/package.json +6 -3
  49. package/src/funcs/generalSendPassthroughRequest.ts +3 -0
  50. package/src/lib/config.ts +3 -3
  51. package/src/models/deletehrisabsencesabsenceidpositiveresponse.ts +5 -6
  52. package/src/models/getatsjobspositiveresponse.ts +7 -26
  53. package/src/models/gethrisabsencespositiveresponse.ts +3 -6
  54. package/src/models/gethrisemployeespositiveresponse.ts +16 -46
  55. package/src/models/gethrisemploymentspositiveresponse.ts +5 -16
  56. package/src/models/postconnectcreatelinkrequestbody.ts +2 -0
  57. package/src/models/posthrisabsencespositiveresponse.ts +3 -6
  58. package/src/models/posthrisemployeesformpositiveresponse.ts +10 -0
  59. package/src/sdk/general.ts +3 -0
  60. package/src/types/enums.ts +55 -6
  61. package/src/types/index.ts +0 -1
  62. package/tests/basic-behavior.spec.ts +162 -0
  63. package/tests/error-handling.spec.ts +604 -0
  64. package/tests/helpers/test-context.ts +147 -0
  65. package/tests/job-board.spec.ts +32 -0
  66. package/vitest.config.ts +8 -0
@@ -0,0 +1,162 @@
1
+ import { it, expect } from "vitest";
2
+ import { TestContext, describeSdkSuite } from "./helpers/test-context";
3
+
4
+ // TODO: test basic error handling behavior
5
+ describeSdkSuite("Basic SDK Behavior", () => {
6
+ it("should include API key in Authorization header", async () => {
7
+ const ctx = new TestContext({ apiKey: "my-custom-api-key" });
8
+
9
+ ctx.mockEndpoint({
10
+ method: "GET",
11
+ path: "/v1/ats/jobs",
12
+ response: {
13
+ body: {
14
+ status: "success",
15
+ data: { results: [], next: null },
16
+ },
17
+ },
18
+ });
19
+
20
+ const jobs = await ctx.kombo.ats.getJobs({});
21
+ for await (const _page of jobs) {
22
+ break;
23
+ }
24
+
25
+ const request = ctx.getLastRequest();
26
+ expect(request?.headers.authorization).toBe("Bearer my-custom-api-key");
27
+ });
28
+
29
+ it("should include integration ID in X-Integration-Id header when specified", async () => {
30
+ const ctx = new TestContext({
31
+ apiKey: "test-key",
32
+ integrationId: "my-integration-123",
33
+ });
34
+
35
+ ctx.mockEndpoint({
36
+ method: "GET",
37
+ path: "/v1/ats/jobs",
38
+ response: {
39
+ body: {
40
+ status: "success",
41
+ data: { results: [], next: null },
42
+ },
43
+ },
44
+ });
45
+
46
+ const jobs = await ctx.kombo.ats.getJobs({});
47
+ for await (const _page of jobs) {
48
+ break;
49
+ }
50
+
51
+ const request = ctx.getLastRequest();
52
+ expect(request?.headers["x-integration-id"]).toBe("my-integration-123");
53
+ });
54
+
55
+ it("should not include X-Integration-Id header when not provided", async () => {
56
+ const ctx = new TestContext({
57
+ apiKey: "test-key",
58
+ integrationId: undefined,
59
+ });
60
+
61
+ ctx.mockEndpoint({
62
+ method: "GET",
63
+ path: "/v1/ats/jobs",
64
+ response: {
65
+ body: {
66
+ status: "success",
67
+ data: { results: [], next: null },
68
+ },
69
+ },
70
+ });
71
+
72
+ // TODO: shouldn't this throw an error?
73
+ const jobs = await ctx.kombo.ats.getJobs({});
74
+ for await (const _page of jobs) {
75
+ break;
76
+ }
77
+
78
+ const request = ctx.getLastRequest();
79
+ // When integration ID is undefined, the header is not set
80
+ expect(request?.headers["x-integration-id"]).toBeUndefined();
81
+ });
82
+
83
+ it("should correctly encode comma-separated query parameters", async () => {
84
+ const ctx = new TestContext();
85
+
86
+ ctx.mockEndpoint({
87
+ method: "GET",
88
+ path: "/v1/ats/jobs",
89
+ response: {
90
+ body: {
91
+ status: "success",
92
+ data: {
93
+ results: [],
94
+ next: null,
95
+ },
96
+ },
97
+ },
98
+ });
99
+
100
+ // Make the API call
101
+ const _jobs = await ctx.kombo.ats.getJobs({
102
+ statuses: ["OPEN", "CLOSED"],
103
+ ids: ["CPDifhHr7izJhKHmGPkXqknC", "J7znt8TJRiwPVA7paC2iCh8u"],
104
+ });
105
+
106
+ // Verify and snapshot the request details
107
+ const request = ctx.getLastRequest();
108
+ expect(request.path).toMatchInlineSnapshot(
109
+ `"/v1/ats/jobs?ids=CPDifhHr7izJhKHmGPkXqknC%2CJ7znt8TJRiwPVA7paC2iCh8u&statuses=OPEN%2CCLOSED&include_deleted=false&page_size=100"`
110
+ );
111
+ });
112
+
113
+ it("should correctly encode boolean query parameters", async () => {
114
+ const ctx = new TestContext();
115
+
116
+ ctx.mockEndpoint({
117
+ method: "GET",
118
+ path: "/v1/ats/jobs",
119
+ response: {
120
+ body: {
121
+ status: "success",
122
+ data: { results: [], next: null },
123
+ },
124
+ },
125
+ });
126
+
127
+ // Test with boolean true
128
+ const jobsWithDeleted = await ctx.kombo.ats.getJobs({
129
+ include_deleted: true,
130
+ });
131
+ for await (const _page of jobsWithDeleted) {
132
+ break;
133
+ }
134
+
135
+ const requestWithDeleted = ctx.getLastRequest();
136
+ expect(requestWithDeleted.path).toContain("include_deleted=true");
137
+
138
+ ctx.clear();
139
+
140
+ ctx.mockEndpoint({
141
+ method: "GET",
142
+ path: "/v1/ats/jobs",
143
+ response: {
144
+ body: {
145
+ status: "success",
146
+ data: { results: [], next: null },
147
+ },
148
+ },
149
+ });
150
+
151
+ // Test with boolean false
152
+ const jobsWithoutDeleted = await ctx.kombo.ats.getJobs({
153
+ include_deleted: false,
154
+ });
155
+ for await (const _page of jobsWithoutDeleted) {
156
+ break;
157
+ }
158
+
159
+ const requestWithoutDeleted = ctx.getLastRequest();
160
+ expect(requestWithoutDeleted.path).toContain("include_deleted=false");
161
+ });
162
+ });