@ikatec/digisac-api-sdk 2.1.1 → 2.2.0

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 (100) hide show
  1. package/dist/apis/contactBlockLists/types.d.ts +2 -1
  2. package/dist/apis/contactBlockLists/types.d.ts.map +1 -1
  3. package/dist/apis/contacts/ContactsApi.cjs +8 -0
  4. package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
  5. package/dist/apis/contacts/ContactsApi.d.ts +7 -1
  6. package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
  7. package/dist/apis/contacts/ContactsApi.mjs +8 -0
  8. package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
  9. package/dist/apis/contacts/types.d.ts +16 -0
  10. package/dist/apis/contacts/types.d.ts.map +1 -1
  11. package/dist/apis/departments/DepartmentsApi.cjs +2 -2
  12. package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
  13. package/dist/apis/departments/DepartmentsApi.d.ts +2 -2
  14. package/dist/apis/departments/DepartmentsApi.d.ts.map +1 -1
  15. package/dist/apis/departments/DepartmentsApi.mjs +2 -2
  16. package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
  17. package/dist/apis/departments/types.d.ts +1 -0
  18. package/dist/apis/departments/types.d.ts.map +1 -1
  19. package/dist/apis/kanbanBoards/types.d.ts +2 -0
  20. package/dist/apis/kanbanBoards/types.d.ts.map +1 -1
  21. package/dist/apis/services/ServicesApi.cjs +2 -2
  22. package/dist/apis/services/ServicesApi.cjs.map +1 -1
  23. package/dist/apis/services/ServicesApi.d.ts +2 -2
  24. package/dist/apis/services/ServicesApi.d.ts.map +1 -1
  25. package/dist/apis/services/ServicesApi.mjs +2 -2
  26. package/dist/apis/services/ServicesApi.mjs.map +1 -1
  27. package/dist/apis/services/types.d.ts +1 -0
  28. package/dist/apis/services/types.d.ts.map +1 -1
  29. package/dist/apis/tags/types.d.ts +2 -0
  30. package/dist/apis/tags/types.d.ts.map +1 -1
  31. package/dist/apis/ticketTopics/TicketTopicsApi.cjs +17 -0
  32. package/dist/apis/ticketTopics/TicketTopicsApi.cjs.map +1 -1
  33. package/dist/apis/ticketTopics/TicketTopicsApi.d.ts +11 -0
  34. package/dist/apis/ticketTopics/TicketTopicsApi.d.ts.map +1 -1
  35. package/dist/apis/ticketTopics/TicketTopicsApi.mjs +17 -0
  36. package/dist/apis/ticketTopics/TicketTopicsApi.mjs.map +1 -1
  37. package/dist/apis/tickets/TicketsApi.cjs +11 -0
  38. package/dist/apis/tickets/TicketsApi.cjs.map +1 -1
  39. package/dist/apis/tickets/TicketsApi.d.ts +10 -1
  40. package/dist/apis/tickets/TicketsApi.d.ts.map +1 -1
  41. package/dist/apis/tickets/TicketsApi.mjs +11 -0
  42. package/dist/apis/tickets/TicketsApi.mjs.map +1 -1
  43. package/dist/apis/tickets/types.d.ts +18 -0
  44. package/dist/apis/tickets/types.d.ts.map +1 -1
  45. package/dist/apis/users/UsersApi.cjs +2 -2
  46. package/dist/apis/users/UsersApi.cjs.map +1 -1
  47. package/dist/apis/users/UsersApi.d.ts +2 -2
  48. package/dist/apis/users/UsersApi.d.ts.map +1 -1
  49. package/dist/apis/users/UsersApi.mjs +2 -2
  50. package/dist/apis/users/UsersApi.mjs.map +1 -1
  51. package/dist/apis/users/types.d.ts +1 -0
  52. package/dist/apis/users/types.d.ts.map +1 -1
  53. package/dist/core/ArchivableCrudApi.cjs +39 -0
  54. package/dist/core/ArchivableCrudApi.cjs.map +1 -0
  55. package/dist/core/ArchivableCrudApi.d.ts +31 -0
  56. package/dist/core/ArchivableCrudApi.d.ts.map +1 -0
  57. package/dist/core/ArchivableCrudApi.mjs +38 -0
  58. package/dist/core/ArchivableCrudApi.mjs.map +1 -0
  59. package/dist/core/BaseApiClient.cjs +12 -9
  60. package/dist/core/BaseApiClient.cjs.map +1 -1
  61. package/dist/core/BaseApiClient.d.ts.map +1 -1
  62. package/dist/core/BaseApiClient.mjs +12 -9
  63. package/dist/core/BaseApiClient.mjs.map +1 -1
  64. package/dist/core/BaseCrudApi.cjs +13 -0
  65. package/dist/core/BaseCrudApi.cjs.map +1 -1
  66. package/dist/core/BaseCrudApi.d.ts +6 -0
  67. package/dist/core/BaseCrudApi.d.ts.map +1 -1
  68. package/dist/core/BaseCrudApi.mjs +13 -0
  69. package/dist/core/BaseCrudApi.mjs.map +1 -1
  70. package/dist/core/index.cjs +2 -0
  71. package/dist/core/index.d.ts +1 -0
  72. package/dist/core/index.d.ts.map +1 -1
  73. package/dist/core/index.mjs +2 -1
  74. package/dist/index.cjs +2 -0
  75. package/dist/index.mjs +2 -1
  76. package/package.json +1 -1
  77. package/src/apis/contactBlockLists/types.ts +2 -1
  78. package/src/apis/contacts/ContactsApi.test.ts +24 -0
  79. package/src/apis/contacts/ContactsApi.ts +18 -0
  80. package/src/apis/contacts/types.ts +17 -0
  81. package/src/apis/departments/DepartmentsApi.ts +2 -2
  82. package/src/apis/departments/types.ts +1 -0
  83. package/src/apis/kanbanBoards/types.ts +2 -0
  84. package/src/apis/services/ServicesApi.ts +6 -2
  85. package/src/apis/services/types.ts +1 -0
  86. package/src/apis/tags/types.ts +2 -0
  87. package/src/apis/ticketTopics/TicketTopicsApi.test.ts +58 -0
  88. package/src/apis/ticketTopics/TicketTopicsApi.ts +27 -0
  89. package/src/apis/tickets/TicketsApi.test.ts +64 -0
  90. package/src/apis/tickets/TicketsApi.ts +22 -1
  91. package/src/apis/tickets/types.ts +12 -0
  92. package/src/apis/users/UsersApi.ts +2 -2
  93. package/src/apis/users/types.ts +1 -0
  94. package/src/core/ArchivableCrudApi.test.ts +84 -0
  95. package/src/core/ArchivableCrudApi.ts +42 -0
  96. package/src/core/BaseApiClient.test.ts +41 -0
  97. package/src/core/BaseApiClient.ts +29 -16
  98. package/src/core/BaseCrudApi.test.ts +31 -0
  99. package/src/core/BaseCrudApi.ts +14 -0
  100. package/src/core/index.ts +1 -0
@@ -131,6 +131,37 @@ describe('BaseCrudApi', () => {
131
131
  })
132
132
  })
133
133
 
134
+ // ── getOne ───────────────────────────────────────────────────────
135
+
136
+ describe('getOne', () => {
137
+ it('requests limit 1 (non-paginated) and returns the first item', async () => {
138
+ const item: Item = { id: '1', name: 'Test' }
139
+ vi.mocked(client.get).mockResolvedValue([item])
140
+
141
+ const result = await api.getOne()
142
+ const calledUrl = vi.mocked(client.get).mock.calls.at(0)?.at(0) as string
143
+ expect(calledUrl).toContain('/items?')
144
+ expect(calledUrl).toContain('limit=1')
145
+ expect(calledUrl).toContain('paginate=false')
146
+ expect(result).toEqual(item)
147
+ })
148
+
149
+ it('returns null when no records match', async () => {
150
+ vi.mocked(client.get).mockResolvedValue([])
151
+
152
+ const result = await api.getOne({ where: { name: 'missing' } })
153
+ expect(result).toBeNull()
154
+ })
155
+
156
+ it('forwards custom headers', async () => {
157
+ vi.mocked(client.get).mockResolvedValue([])
158
+ const headers = { 'X-Custom': 'value' }
159
+
160
+ await api.getOne(undefined, headers)
161
+ expect(vi.mocked(client.get).mock.calls.at(0)?.at(1)).toEqual(headers)
162
+ })
163
+ })
164
+
134
165
  // ── getById ──────────────────────────────────────────────────────
135
166
 
136
167
  describe('getById', () => {
@@ -28,6 +28,7 @@ export class BaseCrudApi<
28
28
  this.client = client
29
29
  this.basePath = basePath.replace(/\/$/, '')
30
30
  this.getMany = this.getMany.bind(this)
31
+ this.getOne = this.getOne.bind(this)
31
32
  this.getById = this.getById.bind(this)
32
33
  this.create = this.create.bind(this)
33
34
  this.updateById = this.updateById.bind(this)
@@ -53,6 +54,19 @@ export class BaseCrudApi<
53
54
  )
54
55
  }
55
56
 
57
+ /**
58
+ * Returns the first resource matching the query, or `null` when none match.
59
+ * Convenience over `getMany` with `limit: 1`.
60
+ * @permissions $resourceName.view
61
+ */
62
+ async getOne(query?: TQuery, headers?: Record<string, string>): Promise<TResponse | null> {
63
+ const results = await this.getMany(
64
+ { ...query, limit: 1, paginate: false } as TQuery & { paginate: false },
65
+ headers,
66
+ )
67
+ return results[0] ?? null
68
+ }
69
+
56
70
  /**
57
71
  * Returns a single resource by ID.
58
72
  * @permissions $resourceName.view
package/src/core/index.ts CHANGED
@@ -2,4 +2,5 @@ export type { ApiClient, HttpMethod } from './ApiClient'
2
2
  export { BaseApiClient, ApiError } from './BaseApiClient'
3
3
  export type { ValidationError } from './BaseApiClient'
4
4
  export { BaseCrudApi } from './BaseCrudApi'
5
+ export { ArchivableCrudApi } from './ArchivableCrudApi'
5
6
  export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated } from './types'