@kulkan/kulterra-api-client 1.2.2 → 1.3.1

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.
package/dist/index.js CHANGED
@@ -1,5 +1,12 @@
1
1
  'use strict';
2
2
 
3
+ // src/endpoints/health-check.ts
4
+ var HEALTH_CHECK_PATH = "/api/v1/health-check";
5
+ async function fetchHealthCheck(http) {
6
+ const { data: body } = await http.get(HEALTH_CHECK_PATH);
7
+ return body;
8
+ }
9
+
3
10
  // src/endpoints/auth.ts
4
11
  var AUTH_BASE = "/api/v1/auth";
5
12
  async function postRegister(http, body) {
@@ -48,16 +55,219 @@ async function getMe(http, accessToken) {
48
55
  }
49
56
 
50
57
  // src/endpoints/user.ts
51
- var AUTH_BASE2 = "/api/v1/users";
52
- async function patchUpdateRoleUserByAdmin(http, { id }, body) {
53
- await http.patch(`${AUTH_BASE2}/${id}/role`, body);
58
+ var API_BASE = "/api/v1";
59
+ var USER_BASE = `${API_BASE}/users`;
60
+ async function getUsers(http, accessToken, userQuery) {
61
+ const { data } = await http.get(USER_BASE, {
62
+ params: userQuery,
63
+ headers: { Authorization: `Bearer ${accessToken}` }
64
+ });
65
+ return data;
66
+ }
67
+ async function getUserById(http, accessToken, { userId }) {
68
+ const { data } = await http.get(`${USER_BASE}/${userId}`, {
69
+ headers: { Authorization: `Bearer ${accessToken}` }
70
+ });
71
+ return data;
72
+ }
73
+ async function patchUpdateMe(http, accessToken, patch) {
74
+ await http.patch(`${API_BASE}/me`, patch, {
75
+ headers: { Authorization: `Bearer ${accessToken}` }
76
+ });
77
+ }
78
+ async function patchUpdateUserRoleByAdmin(http, accessToken, { userId }, body) {
79
+ await http.patch(`${USER_BASE}/${userId}/role`, body, {
80
+ headers: { Authorization: `Bearer ${accessToken}` }
81
+ });
82
+ }
83
+ async function patchUpdateUserBySAdmin(http, accessToken, { userId }, patch) {
84
+ await http.patch(`${USER_BASE}/${userId}`, patch, {
85
+ headers: { Authorization: `Bearer ${accessToken}` }
86
+ });
54
87
  }
55
88
 
56
- // src/endpoints/health-check.ts
57
- var HEALTH_CHECK_PATH = "/api/v1/health-check";
58
- async function fetchHealthCheck(http) {
59
- const { data: body } = await http.get(HEALTH_CHECK_PATH);
60
- return body;
89
+ // src/endpoints/company.ts
90
+ var API_BASE2 = "/api/v1";
91
+ var COMPANY_BASE = `${API_BASE2}/companies`;
92
+ async function getCompanies(http, accessToken, companyQuery) {
93
+ const { data } = await http.get(COMPANY_BASE, {
94
+ params: companyQuery,
95
+ headers: { Authorization: `Bearer ${accessToken}` }
96
+ });
97
+ return data;
98
+ }
99
+ async function getMyCompany(http, accessToken) {
100
+ const { data } = await http.get(`${API_BASE2}/me/company`, {
101
+ headers: { Authorization: `Bearer ${accessToken}` }
102
+ });
103
+ return data;
104
+ }
105
+ async function getCompanyBySlug(http, accessToken, { companySlug }) {
106
+ const { data } = await http.get(
107
+ `${COMPANY_BASE}/${companySlug}`,
108
+ {
109
+ headers: { Authorization: `Bearer ${accessToken}` }
110
+ }
111
+ );
112
+ return data;
113
+ }
114
+ async function postCreateCompany(http, accessToken, newCompanyRequest) {
115
+ const { data } = await http.post(
116
+ COMPANY_BASE,
117
+ newCompanyRequest,
118
+ {
119
+ headers: { Authorization: `Bearer ${accessToken}` }
120
+ }
121
+ );
122
+ return data;
123
+ }
124
+ async function patchUpdateMyCompany(http, accessToken, patch) {
125
+ await http.patch(`${API_BASE2}/me/company`, patch, {
126
+ headers: { Authorization: `Bearer ${accessToken}` }
127
+ });
128
+ }
129
+ async function patchUpdateCompanyBySAdmin(http, accessToken, { companyId }, patch) {
130
+ await http.patch(`${COMPANY_BASE}/${companyId}`, patch, {
131
+ headers: { Authorization: `Bearer ${accessToken}` }
132
+ });
133
+ }
134
+
135
+ // src/endpoints/project.ts
136
+ var API_BASE3 = "/api/v1";
137
+ var COMPANY_BASE2 = `${API_BASE3}/companies`;
138
+ async function getProjects(http, accessToken, projectQuery) {
139
+ const { data } = await http.get(`${COMPANY_BASE2}/projects`, {
140
+ params: projectQuery,
141
+ headers: { Authorization: `Bearer ${accessToken}` }
142
+ });
143
+ return data;
144
+ }
145
+ async function getMyProjects(http, accessToken, projectQuery) {
146
+ const { data } = await http.get(
147
+ `${API_BASE3}/me/projects`,
148
+ {
149
+ params: projectQuery,
150
+ headers: { Authorization: `Bearer ${accessToken}` }
151
+ }
152
+ );
153
+ return data;
154
+ }
155
+ async function getMyProjectById(http, accessToken, { projectId }) {
156
+ const { data } = await http.get(
157
+ `${API_BASE3}/me/projects/${projectId}`,
158
+ {
159
+ headers: { Authorization: `Bearer ${accessToken}` }
160
+ }
161
+ );
162
+ return data;
163
+ }
164
+ async function getProjectByCompanyAndSlug(http, accessToken, { companySlug, projectSlug }) {
165
+ const { data } = await http.get(
166
+ `${COMPANY_BASE2}/${companySlug}/projects/${projectSlug}`,
167
+ {
168
+ headers: { Authorization: `Bearer ${accessToken}` }
169
+ }
170
+ );
171
+ return data;
172
+ }
173
+ async function getProjectsByCompany(http, accessToken, { companySlug }, projectQuery) {
174
+ const { data } = await http.get(`${COMPANY_BASE2}/${companySlug}/projects`, {
175
+ params: projectQuery,
176
+ headers: { Authorization: `Bearer ${accessToken}` }
177
+ });
178
+ return data;
179
+ }
180
+ async function postCreateProject(http, accessToken, { companySlug }, newProjectRequest) {
181
+ const { data } = await http.post(
182
+ `${COMPANY_BASE2}/${companySlug}/projects`,
183
+ newProjectRequest,
184
+ {
185
+ headers: { Authorization: `Bearer ${accessToken}` }
186
+ }
187
+ );
188
+ return data;
189
+ }
190
+ async function patchUpdateProject(http, accessToken, { companySlug, projectSlug }, patch) {
191
+ await http.patch(
192
+ `${COMPANY_BASE2}/${companySlug}/projects/${projectSlug}`,
193
+ patch,
194
+ {
195
+ headers: { Authorization: `Bearer ${accessToken}` }
196
+ }
197
+ );
198
+ }
199
+
200
+ // src/endpoints/property.ts
201
+ var API_BASE4 = "/api/v1";
202
+ var COMPANY_BASE3 = `${API_BASE4}/companies`;
203
+ async function getProperties(http, accessToken, query) {
204
+ const { data } = await http.get(`${API_BASE4}/properties`, {
205
+ params: query,
206
+ headers: { Authorization: `Bearer ${accessToken}` }
207
+ });
208
+ return data;
209
+ }
210
+ async function getMyProperties(http, accessToken, query) {
211
+ const { data } = await http.get(
212
+ `${API_BASE4}/me/properties`,
213
+ {
214
+ params: query,
215
+ headers: { Authorization: `Bearer ${accessToken}` }
216
+ }
217
+ );
218
+ return data;
219
+ }
220
+ async function getMyPropertyById(http, accessToken, { propertyId }) {
221
+ const { data } = await http.get(
222
+ `${API_BASE4}/me/properties/${propertyId}`,
223
+ {
224
+ headers: { Authorization: `Bearer ${accessToken}` }
225
+ }
226
+ );
227
+ return data;
228
+ }
229
+ async function getPropertiesByProject(http, accessToken, { companySlug, projectSlug }, query) {
230
+ const { data } = await http.get(`${COMPANY_BASE3}/${companySlug}/projects/${projectSlug}/properties`, {
231
+ params: query,
232
+ headers: { Authorization: `Bearer ${accessToken}` }
233
+ });
234
+ return data;
235
+ }
236
+ async function getPropertyByProjectAndCode(http, accessToken, {
237
+ companySlug,
238
+ projectSlug,
239
+ propertyCode
240
+ }) {
241
+ const { data } = await http.get(
242
+ `${COMPANY_BASE3}/${companySlug}/projects/${projectSlug}/properties/${propertyCode}`,
243
+ {
244
+ headers: { Authorization: `Bearer ${accessToken}` }
245
+ }
246
+ );
247
+ return data;
248
+ }
249
+ async function postCreateProperty(http, accessToken, { companySlug, projectSlug }, newPropertyRequest) {
250
+ const { data } = await http.post(
251
+ `${COMPANY_BASE3}/${companySlug}/projects/${projectSlug}/properties`,
252
+ newPropertyRequest,
253
+ {
254
+ headers: { Authorization: `Bearer ${accessToken}` }
255
+ }
256
+ );
257
+ return data;
258
+ }
259
+ async function patchUpdateProperty(http, accessToken, {
260
+ companySlug,
261
+ projectSlug,
262
+ propertyCode
263
+ }, patch) {
264
+ await http.patch(
265
+ `${COMPANY_BASE3}/${companySlug}/projects/${projectSlug}/properties/${propertyCode}`,
266
+ patch,
267
+ {
268
+ headers: { Authorization: `Bearer ${accessToken}` }
269
+ }
270
+ );
61
271
  }
62
272
 
63
273
  // src/create-api-client.ts
@@ -75,15 +285,69 @@ function createApiClient(options) {
75
285
  me: (accessToken) => getMe(http, accessToken)
76
286
  },
77
287
  user: {
78
- updateRoleUserByAdmin: ({ id }, body) => patchUpdateRoleUserByAdmin(http, { id }, body)
288
+ users: (accessToken, userQuery) => getUsers(http, accessToken, userQuery),
289
+ userById: (accessToken, { userId }) => getUserById(http, accessToken, { userId }),
290
+ updateMe: (accessToken, patch) => patchUpdateMe(http, accessToken, patch),
291
+ updateUserRoleByAdmin: (accessToken, { userId }, body) => patchUpdateUserRoleByAdmin(http, accessToken, { userId }, body),
292
+ updateUserBySAdmin: (accessToken, { userId }, patch) => patchUpdateUserBySAdmin(http, accessToken, { userId }, patch)
293
+ },
294
+ company: {
295
+ companies: (accessToken, companyQuery) => getCompanies(http, accessToken, companyQuery),
296
+ myCompany: (accessToken) => getMyCompany(http, accessToken),
297
+ companyBySlug: (accessToken, { companySlug }) => getCompanyBySlug(http, accessToken, { companySlug }),
298
+ createCompany: (accessToken, newCompanyRequest) => postCreateCompany(http, accessToken, newCompanyRequest),
299
+ updateMyCompany: (accessToken, patch) => patchUpdateMyCompany(http, accessToken, patch),
300
+ updateCompanyBySAdmin: (accessToken, { companyId }, patch) => patchUpdateCompanyBySAdmin(http, accessToken, { companyId }, patch)
301
+ },
302
+ project: {
303
+ projects: (accessToken, projectQuery) => getProjects(http, accessToken, projectQuery),
304
+ myProjects: (accessToken, projectQuery) => getMyProjects(http, accessToken, projectQuery),
305
+ myProjectById: (accessToken, { projectId }) => getMyProjectById(http, accessToken, { projectId }),
306
+ projectByCompanyAndSlug: (accessToken, { companySlug, projectSlug }) => getProjectByCompanyAndSlug(http, accessToken, { companySlug, projectSlug }),
307
+ projectsByCompany: (accessToken, { companySlug }, projectQuery) => getProjectsByCompany(http, accessToken, { companySlug }, projectQuery),
308
+ createProject: (accessToken, { companySlug }, newProjectRequest) => postCreateProject(http, accessToken, { companySlug }, newProjectRequest),
309
+ updateProject: (accessToken, { companySlug, projectSlug }, patch) => patchUpdateProject(http, accessToken, { companySlug, projectSlug }, patch)
310
+ },
311
+ property: {
312
+ properties: (accessToken, propertyQuery) => getProperties(http, accessToken, propertyQuery),
313
+ myProperties: (accessToken, propertyQuery) => getMyProperties(http, accessToken, propertyQuery),
314
+ myPropertyById: (accessToken, { propertyId }) => getMyPropertyById(http, accessToken, { propertyId }),
315
+ propertiesByProject: (accessToken, { companySlug, projectSlug }, propertyQuery) => getPropertiesByProject(http, accessToken, { companySlug, projectSlug }, propertyQuery),
316
+ propertyByProjectAndCode: (accessToken, { companySlug, projectSlug, propertyCode }) => getPropertyByProjectAndCode(http, accessToken, { companySlug, projectSlug, propertyCode }),
317
+ createProperty: (accessToken, { companySlug, projectSlug }, newPropertyRequest) => postCreateProperty(http, accessToken, { companySlug, projectSlug }, newPropertyRequest),
318
+ updateProperty: (accessToken, { companySlug, projectSlug, propertyCode }, patch) => patchUpdateProperty(http, accessToken, { companySlug, projectSlug, propertyCode }, patch)
79
319
  }
80
320
  };
81
321
  }
82
322
 
83
323
  exports.createApiClient = createApiClient;
324
+ exports.getCompanies = getCompanies;
325
+ exports.getCompanyBySlug = getCompanyBySlug;
84
326
  exports.getGoogleOAuthStart = getGoogleOAuthStart;
85
327
  exports.getMe = getMe;
86
- exports.patchUpdateRoleUserByAdmin = patchUpdateRoleUserByAdmin;
328
+ exports.getMyCompany = getMyCompany;
329
+ exports.getMyProjectById = getMyProjectById;
330
+ exports.getMyProjects = getMyProjects;
331
+ exports.getMyProperties = getMyProperties;
332
+ exports.getMyPropertyById = getMyPropertyById;
333
+ exports.getProjectByCompanyAndSlug = getProjectByCompanyAndSlug;
334
+ exports.getProjects = getProjects;
335
+ exports.getProjectsByCompany = getProjectsByCompany;
336
+ exports.getProperties = getProperties;
337
+ exports.getPropertiesByProject = getPropertiesByProject;
338
+ exports.getPropertyByProjectAndCode = getPropertyByProjectAndCode;
339
+ exports.getUserById = getUserById;
340
+ exports.getUsers = getUsers;
341
+ exports.patchUpdateCompanyBySAdmin = patchUpdateCompanyBySAdmin;
342
+ exports.patchUpdateMe = patchUpdateMe;
343
+ exports.patchUpdateMyCompany = patchUpdateMyCompany;
344
+ exports.patchUpdateProject = patchUpdateProject;
345
+ exports.patchUpdateProperty = patchUpdateProperty;
346
+ exports.patchUpdateUserBySAdmin = patchUpdateUserBySAdmin;
347
+ exports.patchUpdateUserRoleByAdmin = patchUpdateUserRoleByAdmin;
348
+ exports.postCreateCompany = postCreateCompany;
349
+ exports.postCreateProject = postCreateProject;
350
+ exports.postCreateProperty = postCreateProperty;
87
351
  exports.postGoogleOAuthCallback = postGoogleOAuthCallback;
88
352
  exports.postLogin = postLogin;
89
353
  exports.postLogout = postLogout;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints/auth.ts","../src/endpoints/user.ts","../src/endpoints/health-check.ts","../src/create-api-client.ts"],"names":["AUTH_BASE"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n AuthSessionResponse,\n AuthUserResponse,\n IApiResponse,\n LoginRequest,\n LogoutRequest,\n OAuthGoogleCallbackRequest,\n OAuthGoogleStartResponse,\n RefreshRequest,\n RegisterRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst AUTH_BASE = '/api/v1/auth' as const;\n\n/**\n * POST /api/v1/auth/register\n */\nexport async function postRegister(\n http: HttpClient,\n body: RegisterRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, RegisterRequest>(\n `${AUTH_BASE}/register`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/login\n */\nexport async function postLogin(\n http: HttpClient,\n body: LoginRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, LoginRequest>(\n `${AUTH_BASE}/login`,\n body,\n );\n return data;\n}\n\n/**\n * GET /api/v1/auth/oauth/google/start?redirectUri=...\n */\nexport async function getGoogleOAuthStart(\n http: HttpClient,\n redirectUri: string,\n): Promise<IApiResponse<OAuthGoogleStartResponse>> {\n const q = new URLSearchParams({ redirectUri });\n const { data } = await http.get<IApiResponse<OAuthGoogleStartResponse>>(\n `${AUTH_BASE}/oauth/google/start?${q.toString()}`,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/oauth/google/callback\n */\nexport async function postGoogleOAuthCallback(\n http: HttpClient,\n body: OAuthGoogleCallbackRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, OAuthGoogleCallbackRequest>(\n `${AUTH_BASE}/oauth/google/callback`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/refresh\n */\nexport async function postRefresh(\n http: HttpClient,\n body: RefreshRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, RefreshRequest>(\n `${AUTH_BASE}/refresh`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/logout — 204 No Content (no JSON body).\n */\nexport async function postLogout(http: HttpClient, body: LogoutRequest): Promise<void> {\n await http.post<undefined, LogoutRequest>(`${AUTH_BASE}/logout`, body);\n}\n\n/**\n * GET /api/v1/auth/me — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMe(\n http: HttpClient,\n accessToken: string,\n): Promise<IApiResponse<AuthUserResponse>> {\n const { data } = await http.get<IApiResponse<AuthUserResponse>>(`${AUTH_BASE}/me`, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n","import type {\n UpdateUserRoleByAdminRequest,\n updateUserRoleByAdminParams,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst AUTH_BASE = '/api/v1/users' as const;\n\n/**\n * PATCH /api/v1/users/:id/role — 204 No Content (no JSON body).\n */\nexport async function patchUpdateRoleUserByAdmin(\n http: HttpClient,\n { id }: updateUserRoleByAdminParams,\n body: UpdateUserRoleByAdminRequest,\n): Promise<void> {\n await http.patch<undefined, UpdateUserRoleByAdminRequest>(`${AUTH_BASE}/${id}/role`, body);\n}\n","import type { IApiResponse, HealthCheck } from '@kulkan/kulterra-contracts';\nimport type { HttpClient } from '../http-client';\n\n/** Same path as `/api/${v1}/health-check` on the server when `v1` is the string `'v1'`. */\nconst HEALTH_CHECK_PATH = '/api/v1/health-check' as const;\n\n/**\n * GET /api/v1/health-check — server liveness.\n *\n * Returns the full JSON the server sends (`IApiResponse<HealthCheck>`).\n *\n * **Why not `data.data` here?** Adapters like Axios wrap the HTTP body in a property also\n * called `data`. That outer `data` is the entire `res.json(...)` object. The inner\n * `IApiResponse.data` is the `HealthCheck` payload — use `.data` on the **returned** value,\n * e.g. `(await fetchHealthCheck(http)).data`.\n */\nexport async function fetchHealthCheck(http: HttpClient): Promise<IApiResponse<HealthCheck>> {\n const { data: body } = await http.get<IApiResponse<HealthCheck>>(HEALTH_CHECK_PATH);\n\n return body;\n}\n","import {\n getGoogleOAuthStart,\n getMe,\n postGoogleOAuthCallback,\n postLogin,\n postLogout,\n postRefresh,\n postRegister,\n} from './endpoints/auth';\nimport { patchUpdateRoleUserByAdmin } from './endpoints/user';\nimport { fetchHealthCheck } from './endpoints/health-check';\nimport type { HttpClient } from './http-client';\n\nexport interface CreateApiClientOptions {\n /**\n * Preconfigured HTTP client (e.g. Axios instance with `baseURL` set).\n * Paths in this library are relative to that base (e.g. `/api/v1/...`).\n * Both `get` and `post` are required for auth flows.\n */\n readonly http: HttpClient;\n}\n\nexport interface ApiClient {\n readonly healthCheck: () => ReturnType<typeof fetchHealthCheck>;\n readonly auth: {\n readonly register: (\n body: Parameters<typeof postRegister>[1],\n ) => ReturnType<typeof postRegister>;\n readonly login: (body: Parameters<typeof postLogin>[1]) => ReturnType<typeof postLogin>;\n readonly getGoogleOAuthStart: (redirectUri: string) => ReturnType<typeof getGoogleOAuthStart>;\n readonly postGoogleOAuthCallback: (\n body: Parameters<typeof postGoogleOAuthCallback>[1],\n ) => ReturnType<typeof postGoogleOAuthCallback>;\n readonly refresh: (body: Parameters<typeof postRefresh>[1]) => ReturnType<typeof postRefresh>;\n readonly logout: (body: Parameters<typeof postLogout>[1]) => ReturnType<typeof postLogout>;\n readonly me: (accessToken: string) => ReturnType<typeof getMe>;\n };\n readonly user: {\n readonly updateRoleUserByAdmin: (\n { id }: Parameters<typeof patchUpdateRoleUserByAdmin>[1],\n body: Parameters<typeof patchUpdateRoleUserByAdmin>[2],\n ) => ReturnType<typeof patchUpdateRoleUserByAdmin>;\n };\n}\n\n/**\n * Creates a typed API client backed by the provided HTTP implementation.\n */\nexport function createApiClient(options: CreateApiClientOptions): ApiClient {\n const { http } = options;\n\n return {\n healthCheck: () => fetchHealthCheck(http),\n auth: {\n register: (body) => postRegister(http, body),\n login: (body) => postLogin(http, body),\n getGoogleOAuthStart: (redirectUri) => getGoogleOAuthStart(http, redirectUri),\n postGoogleOAuthCallback: (body) => postGoogleOAuthCallback(http, body),\n refresh: (body) => postRefresh(http, body),\n logout: (body) => postLogout(http, body),\n me: (accessToken) => getMe(http, accessToken),\n },\n user: {\n updateRoleUserByAdmin: ({ id }, body) => patchUpdateRoleUserByAdmin(http, { id }, body),\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/endpoints/health-check.ts","../src/endpoints/auth.ts","../src/endpoints/user.ts","../src/endpoints/company.ts","../src/endpoints/project.ts","../src/endpoints/property.ts","../src/create-api-client.ts"],"names":["API_BASE","COMPANY_BASE"],"mappings":"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","file":"index.js","sourcesContent":["import type { IApiResponse, HealthCheck } from '@kulkan/kulterra-contracts';\nimport type { HttpClient } from '../http-client';\n\n/** Same path as `/api/${v1}/health-check` on the server when `v1` is the string `'v1'`. */\nconst HEALTH_CHECK_PATH = '/api/v1/health-check' as const;\n\n/**\n * GET /api/v1/health-check — server liveness.\n *\n * Returns the full JSON the server sends (`IApiResponse<HealthCheck>`).\n *\n * **Why not `data.data` here?** Adapters like Axios wrap the HTTP body in a property also\n * called `data`. That outer `data` is the entire `res.json(...)` object. The inner\n * `IApiResponse.data` is the `HealthCheck` payload — use `.data` on the **returned** value,\n * e.g. `(await fetchHealthCheck(http)).data`.\n */\nexport async function fetchHealthCheck(http: HttpClient): Promise<IApiResponse<HealthCheck>> {\n const { data: body } = await http.get<IApiResponse<HealthCheck>>(HEALTH_CHECK_PATH);\n\n return body;\n}\n","import type {\n AuthSessionResponse,\n AuthUserResponse,\n IApiResponse,\n LoginRequest,\n LogoutRequest,\n OAuthGoogleCallbackRequest,\n OAuthGoogleStartResponse,\n RefreshRequest,\n RegisterRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst AUTH_BASE = '/api/v1/auth' as const;\n\n/**\n * POST /api/v1/auth/register\n */\nexport async function postRegister(\n http: HttpClient,\n body: RegisterRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, RegisterRequest>(\n `${AUTH_BASE}/register`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/login\n */\nexport async function postLogin(\n http: HttpClient,\n body: LoginRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, LoginRequest>(\n `${AUTH_BASE}/login`,\n body,\n );\n return data;\n}\n\n/**\n * GET /api/v1/auth/oauth/google/start?redirectUri=...\n */\nexport async function getGoogleOAuthStart(\n http: HttpClient,\n redirectUri: string,\n): Promise<IApiResponse<OAuthGoogleStartResponse>> {\n const q = new URLSearchParams({ redirectUri });\n const { data } = await http.get<IApiResponse<OAuthGoogleStartResponse>>(\n `${AUTH_BASE}/oauth/google/start?${q.toString()}`,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/oauth/google/callback\n */\nexport async function postGoogleOAuthCallback(\n http: HttpClient,\n body: OAuthGoogleCallbackRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, OAuthGoogleCallbackRequest>(\n `${AUTH_BASE}/oauth/google/callback`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/refresh\n */\nexport async function postRefresh(\n http: HttpClient,\n body: RefreshRequest,\n): Promise<IApiResponse<AuthSessionResponse>> {\n const { data } = await http.post<IApiResponse<AuthSessionResponse>, RefreshRequest>(\n `${AUTH_BASE}/refresh`,\n body,\n );\n return data;\n}\n\n/**\n * POST /api/v1/auth/logout — 204 No Content (no JSON body).\n */\nexport async function postLogout(http: HttpClient, body: LogoutRequest): Promise<void> {\n await http.post<undefined, LogoutRequest>(`${AUTH_BASE}/logout`, body);\n}\n\n/**\n * GET /api/v1/auth/me — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMe(\n http: HttpClient,\n accessToken: string,\n): Promise<IApiResponse<AuthUserResponse>> {\n const { data } = await http.get<IApiResponse<AuthUserResponse>>(`${AUTH_BASE}/me`, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n","import type {\n GetUsersQueryByTokenRequest,\n IApiResponse,\n IPaginatedByTokenResponse,\n ToAdminUsersResponse,\n ToSAdminUsersResponse,\n UpdateUserBySAdminRequest,\n UpdateUserByUserRequest,\n UpdateUserRoleByAdminRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst API_BASE = '/api/v1' as const;\nconst USER_BASE = `${API_BASE}/users` as const;\n\n// GET\n\n/**\n * GET /api/v1/users — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getUsers(\n http: HttpClient,\n accessToken: string,\n userQuery: GetUsersQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<ToAdminUsersResponse | ToSAdminUsersResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedByTokenResponse<ToAdminUsersResponse | ToSAdminUsersResponse>>\n >(USER_BASE, {\n params: userQuery,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/users/:userId — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getUserById(\n http: HttpClient,\n accessToken: string,\n { userId }: { userId: string },\n): Promise<IApiResponse<ToSAdminUsersResponse>> {\n const { data } = await http.get<IApiResponse<ToSAdminUsersResponse>>(`${USER_BASE}/${userId}`, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n// PATCH\n\n/**\n * PATCH /api/v1/me — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateMe(\n http: HttpClient,\n accessToken: string,\n patch: UpdateUserByUserRequest,\n): Promise<void> {\n await http.patch<void, UpdateUserByUserRequest>(`${API_BASE}/me`, patch, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n}\n\n/**\n * PATCH /api/v1/users/:userId/role — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateUserRoleByAdmin(\n http: HttpClient,\n accessToken: string,\n { userId }: { userId: string },\n body: UpdateUserRoleByAdminRequest,\n): Promise<void> {\n await http.patch<void, UpdateUserRoleByAdminRequest>(`${USER_BASE}/${userId}/role`, body, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n}\n\n/**\n * PATCH /api/v1/users/:userId — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateUserBySAdmin(\n http: HttpClient,\n accessToken: string,\n { userId }: { userId: string },\n patch: UpdateUserBySAdminRequest,\n): Promise<void> {\n await http.patch<void, UpdateUserBySAdminRequest>(`${USER_BASE}/${userId}`, patch, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n}\n","import type {\n AdminCompanyResponse,\n CreateCompanyRequest,\n GetCompaniesQueryRequest,\n IApiResponse,\n IPaginatedResponse,\n PublicCompanyResponse,\n SAdminCompanyResponse,\n UpdateCompanyByAdminRequest,\n UpdateCompanyBySAdminRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst API_BASE = '/api/v1' as const;\nconst COMPANY_BASE = `${API_BASE}/companies` as const;\n\n// GET\n\n/**\n * GET /api/v1/companies — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getCompanies(\n http: HttpClient,\n accessToken: string,\n companyQuery: GetCompaniesQueryRequest,\n): Promise<IApiResponse<IPaginatedResponse<PublicCompanyResponse | SAdminCompanyResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedResponse<PublicCompanyResponse | SAdminCompanyResponse>>\n >(COMPANY_BASE, {\n params: companyQuery,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/me/company — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMyCompany(\n http: HttpClient,\n accessToken: string,\n): Promise<IApiResponse<AdminCompanyResponse>> {\n const { data } = await http.get<IApiResponse<AdminCompanyResponse>>(`${API_BASE}/me/company`, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/companies/:companySlug — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getCompanyBySlug(\n http: HttpClient,\n accessToken: string,\n { companySlug }: { companySlug: string },\n): Promise<IApiResponse<PublicCompanyResponse | SAdminCompanyResponse>> {\n const { data } = await http.get<IApiResponse<PublicCompanyResponse | SAdminCompanyResponse>>(\n `${COMPANY_BASE}/${companySlug}`,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n// POST\n\n/**\n * POST /api/v1/companies — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function postCreateCompany(\n http: HttpClient,\n accessToken: string,\n newCompanyRequest: CreateCompanyRequest,\n): Promise<IApiResponse<SAdminCompanyResponse>> {\n const { data } = await http.post<IApiResponse<SAdminCompanyResponse>>(\n COMPANY_BASE,\n newCompanyRequest,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n// PATCH\n\n/**\n * PATCH /api/v1/me/company — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateMyCompany(\n http: HttpClient,\n accessToken: string,\n patch: UpdateCompanyByAdminRequest,\n): Promise<void> {\n await http.patch<void, UpdateCompanyByAdminRequest>(`${API_BASE}/me/company`, patch, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n}\n\n/**\n * PATCH /api/v1/companies/:companyId — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateCompanyBySAdmin(\n http: HttpClient,\n accessToken: string,\n { companyId }: { companyId: string },\n patch: UpdateCompanyBySAdminRequest,\n): Promise<void> {\n await http.patch<void, UpdateCompanyBySAdminRequest>(`${COMPANY_BASE}/${companyId}`, patch, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n}\n","import type {\n CreateProjectRequest,\n GetProjectsQueryByTokenRequest,\n IApiResponse,\n IPaginatedByTokenResponse,\n OwnerProjectResponse,\n ProjectResponse,\n PublicProjectResponse,\n UpdateProjectRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst API_BASE = '/api/v1' as const;\nconst COMPANY_BASE = `${API_BASE}/companies` as const;\n\n// GET\n\n/**\n * GET /api/v1/companies/projects — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getProjects(\n http: HttpClient,\n accessToken: string,\n projectQuery: GetProjectsQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<ProjectResponse | PublicProjectResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedByTokenResponse<ProjectResponse | PublicProjectResponse>>\n >(`${COMPANY_BASE}/projects`, {\n params: projectQuery,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/me/projects — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMyProjects(\n http: HttpClient,\n accessToken: string,\n projectQuery: GetProjectsQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<OwnerProjectResponse>>> {\n const { data } = await http.get<IApiResponse<IPaginatedByTokenResponse<OwnerProjectResponse>>>(\n `${API_BASE}/me/projects`,\n {\n params: projectQuery,\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n/**\n * GET /api/v1/me/projects/:projectId — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMyProjectById(\n http: HttpClient,\n accessToken: string,\n { projectId }: { projectId: string },\n): Promise<IApiResponse<OwnerProjectResponse>> {\n const { data } = await http.get<IApiResponse<OwnerProjectResponse>>(\n `${API_BASE}/me/projects/${projectId}`,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n/**\n * GET /api/v1/companies/:companySlug/projects/:projectSlug — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getProjectByCompanyAndSlug(\n http: HttpClient,\n accessToken: string,\n { companySlug, projectSlug }: { companySlug: string; projectSlug: string },\n): Promise<IApiResponse<ProjectResponse | PublicProjectResponse>> {\n const { data } = await http.get<IApiResponse<ProjectResponse | PublicProjectResponse>>(\n `${COMPANY_BASE}/${companySlug}/projects/${projectSlug}`,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n/**\n * GET /api/v1/companies/:companySlug/projects — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getProjectsByCompany(\n http: HttpClient,\n accessToken: string,\n { companySlug }: { companySlug: string },\n projectQuery: GetProjectsQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<ProjectResponse | PublicProjectResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedByTokenResponse<ProjectResponse | PublicProjectResponse>>\n >(`${COMPANY_BASE}/${companySlug}/projects`, {\n params: projectQuery,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n// POST\n\n/**\n * POST /api/v1/companies/:companySlug/projects — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function postCreateProject(\n http: HttpClient,\n accessToken: string,\n { companySlug }: { companySlug: string },\n newProjectRequest: CreateProjectRequest,\n): Promise<IApiResponse<ProjectResponse>> {\n const { data } = await http.post<IApiResponse<ProjectResponse>>(\n `${COMPANY_BASE}/${companySlug}/projects`,\n newProjectRequest,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n// PATCH\n\n/**\n * PATCH /api/v1/companies/:companySlug/projects/:projectSlug — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateProject(\n http: HttpClient,\n accessToken: string,\n { companySlug, projectSlug }: { companySlug: string; projectSlug: string },\n patch: UpdateProjectRequest,\n): Promise<void> {\n await http.patch<void, UpdateProjectRequest>(\n `${COMPANY_BASE}/${companySlug}/projects/${projectSlug}`,\n patch,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n}\n","import type {\n BuyerPropertyResponse,\n CreatePropertyRequest,\n GetPropertiesQueryByTokenRequest,\n IApiResponse,\n IPaginatedByTokenResponse,\n PropertyResponse,\n PublicPropertyResponse,\n UpdatePropertyRequest,\n} from '@kulkan/kulterra-contracts';\n\nimport type { HttpClient } from '../http-client';\n\nconst API_BASE = '/api/v1' as const;\nconst COMPANY_BASE = `${API_BASE}/companies` as const;\n\n// GET\n\n/**\n * GET /api/v1/properties — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getProperties(\n http: HttpClient,\n accessToken: string,\n query: GetPropertiesQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<PropertyResponse | PublicPropertyResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedByTokenResponse<PropertyResponse | PublicPropertyResponse>>\n >(`${API_BASE}/properties`, {\n params: query,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/me/properties — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMyProperties(\n http: HttpClient,\n accessToken: string,\n query: GetPropertiesQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<BuyerPropertyResponse>>> {\n const { data } = await http.get<IApiResponse<IPaginatedByTokenResponse<BuyerPropertyResponse>>>(\n `${API_BASE}/me/properties`,\n {\n params: query,\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n/**\n * GET /api/v1/me/properties/:propertyId — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getMyPropertyById(\n http: HttpClient,\n accessToken: string,\n { propertyId }: { propertyId: string },\n): Promise<IApiResponse<BuyerPropertyResponse>> {\n const { data } = await http.get<IApiResponse<BuyerPropertyResponse>>(\n `${API_BASE}/me/properties/${propertyId}`,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n/**\n * GET /api/v1/companies/:companySlug/projects/:projectSlug/properties — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getPropertiesByProject(\n http: HttpClient,\n accessToken: string,\n { companySlug, projectSlug }: { companySlug: string; projectSlug: string },\n query: GetPropertiesQueryByTokenRequest,\n): Promise<IApiResponse<IPaginatedByTokenResponse<PropertyResponse | PublicPropertyResponse>>> {\n const { data } = await http.get<\n IApiResponse<IPaginatedByTokenResponse<PropertyResponse | PublicPropertyResponse>>\n >(`${COMPANY_BASE}/${companySlug}/projects/${projectSlug}/properties`, {\n params: query,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n return data;\n}\n\n/**\n * GET /api/v1/companies/:companySlug/projects/:projectSlug/properties/:propertyCode — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function getPropertyByProjectAndCode(\n http: HttpClient,\n accessToken: string,\n {\n companySlug,\n projectSlug,\n propertyCode,\n }: { companySlug: string; projectSlug: string; propertyCode: string },\n): Promise<IApiResponse<PropertyResponse | PublicPropertyResponse>> {\n const { data } = await http.get<IApiResponse<PropertyResponse | PublicPropertyResponse>>(\n `${COMPANY_BASE}/${companySlug}/projects/${projectSlug}/properties/${propertyCode}`,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n// POST\n\n/**\n * POST /api/v1/companies/:companySlug/projects/:projectSlug/properties — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function postCreateProperty(\n http: HttpClient,\n accessToken: string,\n { companySlug, projectSlug }: { companySlug: string; projectSlug: string },\n newPropertyRequest: CreatePropertyRequest,\n): Promise<IApiResponse<PropertyResponse>> {\n const { data } = await http.post<IApiResponse<PropertyResponse>>(\n `${COMPANY_BASE}/${companySlug}/projects/${projectSlug}/properties`,\n newPropertyRequest,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return data;\n}\n\n// PATCH\n\n/**\n * PATCH /api/v1/companies/:companySlug/projects/:projectSlug/properties/:propertyCode — 204 No Content (no JSON body) — requires `Authorization: Bearer <accessToken>`.\n */\nexport async function patchUpdateProperty(\n http: HttpClient,\n accessToken: string,\n {\n companySlug,\n projectSlug,\n propertyCode,\n }: { companySlug: string; projectSlug: string; propertyCode: string },\n patch: UpdatePropertyRequest,\n): Promise<void> {\n await http.patch<void, UpdatePropertyRequest>(\n `${COMPANY_BASE}/${companySlug}/projects/${projectSlug}/properties/${propertyCode}`,\n patch,\n {\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n}\n","import { fetchHealthCheck } from './endpoints/health-check';\nimport type { HttpClient } from './http-client';\nimport {\n getGoogleOAuthStart,\n getMe,\n postGoogleOAuthCallback,\n postLogin,\n postLogout,\n postRefresh,\n postRegister,\n} from './endpoints/auth';\nimport {\n getUserById,\n getUsers,\n patchUpdateMe,\n patchUpdateUserBySAdmin,\n patchUpdateUserRoleByAdmin,\n} from './endpoints/user';\nimport {\n getCompanies,\n getCompanyBySlug,\n getMyCompany,\n patchUpdateCompanyBySAdmin,\n patchUpdateMyCompany,\n postCreateCompany,\n} from './endpoints/company';\nimport {\n getMyProjectById,\n getMyProjects,\n getProjectByCompanyAndSlug,\n getProjects,\n getProjectsByCompany,\n patchUpdateProject,\n postCreateProject,\n} from './endpoints/project';\nimport {\n getMyProperties,\n getMyPropertyById,\n getProperties,\n getPropertiesByProject,\n getPropertyByProjectAndCode,\n patchUpdateProperty,\n postCreateProperty,\n} from './endpoints/property';\n\nexport interface CreateApiClientOptions {\n /**\n * Preconfigured HTTP client (e.g. Axios instance with `baseURL` set).\n * Paths in this library are relative to that base (e.g. `/api/v1/...`).\n * The HTTP implementation must support the methods used by this client,\n * including GET, POST, and PATCH.\n */\n readonly http: HttpClient;\n}\n\nexport interface ApiClient {\n readonly healthCheck: () => ReturnType<typeof fetchHealthCheck>;\n readonly auth: {\n readonly register: (\n body: Parameters<typeof postRegister>[1],\n ) => ReturnType<typeof postRegister>;\n readonly login: (body: Parameters<typeof postLogin>[1]) => ReturnType<typeof postLogin>;\n readonly getGoogleOAuthStart: (redirectUri: string) => ReturnType<typeof getGoogleOAuthStart>;\n readonly postGoogleOAuthCallback: (\n body: Parameters<typeof postGoogleOAuthCallback>[1],\n ) => ReturnType<typeof postGoogleOAuthCallback>;\n readonly refresh: (body: Parameters<typeof postRefresh>[1]) => ReturnType<typeof postRefresh>;\n readonly logout: (body: Parameters<typeof postLogout>[1]) => ReturnType<typeof postLogout>;\n readonly me: (accessToken: string) => ReturnType<typeof getMe>;\n };\n readonly user: {\n readonly users: (\n accessToken: string,\n userQuery: Parameters<typeof getUsers>[2],\n ) => ReturnType<typeof getUsers>;\n readonly userById: (\n accessToken: Parameters<typeof getUserById>[1],\n { userId }: Parameters<typeof getUserById>[2],\n ) => ReturnType<typeof getUserById>;\n readonly updateMe: (\n accessToken: Parameters<typeof patchUpdateMe>[1],\n patch: Parameters<typeof patchUpdateMe>[2],\n ) => ReturnType<typeof patchUpdateMe>;\n readonly updateUserRoleByAdmin: (\n accessToken: Parameters<typeof patchUpdateUserRoleByAdmin>[1],\n { userId }: Parameters<typeof patchUpdateUserRoleByAdmin>[2],\n body: Parameters<typeof patchUpdateUserRoleByAdmin>[3],\n ) => ReturnType<typeof patchUpdateUserRoleByAdmin>;\n readonly updateUserBySAdmin: (\n accessToken: Parameters<typeof patchUpdateUserBySAdmin>[1],\n { userId }: Parameters<typeof patchUpdateUserBySAdmin>[2],\n patch: Parameters<typeof patchUpdateUserBySAdmin>[3],\n ) => ReturnType<typeof patchUpdateUserBySAdmin>;\n };\n readonly company: {\n readonly companies: (\n accessToken: Parameters<typeof getCompanies>[1],\n companyQuery: Parameters<typeof getCompanies>[2],\n ) => ReturnType<typeof getCompanies>;\n readonly myCompany: (\n accessToken: Parameters<typeof getMyCompany>[1],\n ) => ReturnType<typeof getMyCompany>;\n readonly companyBySlug: (\n accessToken: Parameters<typeof getCompanyBySlug>[1],\n { companySlug }: Parameters<typeof getCompanyBySlug>[2],\n ) => ReturnType<typeof getCompanyBySlug>;\n readonly createCompany: (\n accessToken: Parameters<typeof postCreateCompany>[1],\n newCompanyRequest: Parameters<typeof postCreateCompany>[2],\n ) => ReturnType<typeof postCreateCompany>;\n readonly updateMyCompany: (\n accessToken: Parameters<typeof patchUpdateMyCompany>[1],\n patch: Parameters<typeof patchUpdateMyCompany>[2],\n ) => ReturnType<typeof patchUpdateMyCompany>;\n readonly updateCompanyBySAdmin: (\n accessToken: Parameters<typeof patchUpdateCompanyBySAdmin>[1],\n { companyId }: Parameters<typeof patchUpdateCompanyBySAdmin>[2],\n patch: Parameters<typeof patchUpdateCompanyBySAdmin>[3],\n ) => ReturnType<typeof patchUpdateCompanyBySAdmin>;\n };\n readonly project: {\n readonly projects: (\n accessToken: Parameters<typeof getProjects>[1],\n projectQuery: Parameters<typeof getProjects>[2],\n ) => ReturnType<typeof getProjects>;\n readonly myProjects: (\n accessToken: Parameters<typeof getMyProjects>[1],\n projectQuery: Parameters<typeof getMyProjects>[2],\n ) => ReturnType<typeof getMyProjects>;\n readonly myProjectById: (\n accessToken: Parameters<typeof getMyProjectById>[1],\n { projectId }: Parameters<typeof getMyProjectById>[2],\n ) => ReturnType<typeof getMyProjectById>;\n readonly projectByCompanyAndSlug: (\n accessToken: Parameters<typeof getProjectByCompanyAndSlug>[1],\n { companySlug, projectSlug }: Parameters<typeof getProjectByCompanyAndSlug>[2],\n ) => ReturnType<typeof getProjectByCompanyAndSlug>;\n readonly projectsByCompany: (\n accessToken: Parameters<typeof getProjectsByCompany>[1],\n { companySlug }: Parameters<typeof getProjectsByCompany>[2],\n projectQuery: Parameters<typeof getProjectsByCompany>[3],\n ) => ReturnType<typeof getProjectsByCompany>;\n readonly createProject: (\n accessToken: Parameters<typeof postCreateProject>[1],\n { companySlug }: Parameters<typeof postCreateProject>[2],\n newProjectRequest: Parameters<typeof postCreateProject>[3],\n ) => ReturnType<typeof postCreateProject>;\n readonly updateProject: (\n accessToken: Parameters<typeof patchUpdateProject>[1],\n { companySlug, projectSlug }: Parameters<typeof patchUpdateProject>[2],\n patch: Parameters<typeof patchUpdateProject>[3],\n ) => ReturnType<typeof patchUpdateProject>;\n };\n readonly property: {\n readonly properties: (\n accessToken: Parameters<typeof getProperties>[1],\n propertyQuery: Parameters<typeof getProperties>[2],\n ) => ReturnType<typeof getProperties>;\n readonly myProperties: (\n accessToken: Parameters<typeof getMyProperties>[1],\n propertyQuery: Parameters<typeof getMyProperties>[2],\n ) => ReturnType<typeof getMyProperties>;\n readonly myPropertyById: (\n accessToken: Parameters<typeof getMyPropertyById>[1],\n { propertyId }: Parameters<typeof getMyPropertyById>[2],\n ) => ReturnType<typeof getMyPropertyById>;\n readonly propertiesByProject: (\n accessToken: Parameters<typeof getPropertiesByProject>[1],\n { companySlug, projectSlug }: Parameters<typeof getPropertiesByProject>[2],\n propertyQuery: Parameters<typeof getPropertiesByProject>[3],\n ) => ReturnType<typeof getPropertiesByProject>;\n readonly propertyByProjectAndCode: (\n accessToken: Parameters<typeof getPropertyByProjectAndCode>[1],\n { companySlug, projectSlug, propertyCode }: Parameters<typeof getPropertyByProjectAndCode>[2],\n ) => ReturnType<typeof getPropertyByProjectAndCode>;\n readonly createProperty: (\n accessToken: Parameters<typeof postCreateProperty>[1],\n { companySlug, projectSlug }: Parameters<typeof postCreateProperty>[2],\n newPropertyRequest: Parameters<typeof postCreateProperty>[3],\n ) => ReturnType<typeof postCreateProperty>;\n readonly updateProperty: (\n accessToken: Parameters<typeof patchUpdateProperty>[1],\n { companySlug, projectSlug, propertyCode }: Parameters<typeof patchUpdateProperty>[2],\n patch: Parameters<typeof patchUpdateProperty>[3],\n ) => ReturnType<typeof patchUpdateProperty>;\n };\n}\n\n/**\n * Creates a typed API client backed by the provided HTTP implementation.\n */\nexport function createApiClient(options: CreateApiClientOptions): ApiClient {\n const { http } = options;\n\n return {\n healthCheck: () => fetchHealthCheck(http),\n auth: {\n register: (body) => postRegister(http, body),\n login: (body) => postLogin(http, body),\n getGoogleOAuthStart: (redirectUri) => getGoogleOAuthStart(http, redirectUri),\n postGoogleOAuthCallback: (body) => postGoogleOAuthCallback(http, body),\n refresh: (body) => postRefresh(http, body),\n logout: (body) => postLogout(http, body),\n me: (accessToken) => getMe(http, accessToken),\n },\n user: {\n users: (accessToken, userQuery) => getUsers(http, accessToken, userQuery),\n userById: (accessToken, { userId }) => getUserById(http, accessToken, { userId }),\n updateMe: (accessToken, patch) => patchUpdateMe(http, accessToken, patch),\n updateUserRoleByAdmin: (accessToken, { userId }, body) =>\n patchUpdateUserRoleByAdmin(http, accessToken, { userId }, body),\n updateUserBySAdmin: (accessToken, { userId }, patch) =>\n patchUpdateUserBySAdmin(http, accessToken, { userId }, patch),\n },\n company: {\n companies: (accessToken, companyQuery) => getCompanies(http, accessToken, companyQuery),\n myCompany: (accessToken) => getMyCompany(http, accessToken),\n companyBySlug: (accessToken, { companySlug }) =>\n getCompanyBySlug(http, accessToken, { companySlug }),\n createCompany: (accessToken, newCompanyRequest) =>\n postCreateCompany(http, accessToken, newCompanyRequest),\n updateMyCompany: (accessToken, patch) => patchUpdateMyCompany(http, accessToken, patch),\n updateCompanyBySAdmin: (accessToken, { companyId }, patch) =>\n patchUpdateCompanyBySAdmin(http, accessToken, { companyId }, patch),\n },\n project: {\n projects: (accessToken, projectQuery) => getProjects(http, accessToken, projectQuery),\n myProjects: (accessToken, projectQuery) => getMyProjects(http, accessToken, projectQuery),\n myProjectById: (accessToken, { projectId }) =>\n getMyProjectById(http, accessToken, { projectId }),\n projectByCompanyAndSlug: (accessToken, { companySlug, projectSlug }) =>\n getProjectByCompanyAndSlug(http, accessToken, { companySlug, projectSlug }),\n projectsByCompany: (accessToken, { companySlug }, projectQuery) =>\n getProjectsByCompany(http, accessToken, { companySlug }, projectQuery),\n createProject: (accessToken, { companySlug }, newProjectRequest) =>\n postCreateProject(http, accessToken, { companySlug }, newProjectRequest),\n updateProject: (accessToken, { companySlug, projectSlug }, patch) =>\n patchUpdateProject(http, accessToken, { companySlug, projectSlug }, patch),\n },\n property: {\n properties: (accessToken, propertyQuery) => getProperties(http, accessToken, propertyQuery),\n myProperties: (accessToken, propertyQuery) =>\n getMyProperties(http, accessToken, propertyQuery),\n myPropertyById: (accessToken, { propertyId }) =>\n getMyPropertyById(http, accessToken, { propertyId }),\n propertiesByProject: (accessToken, { companySlug, projectSlug }, propertyQuery) =>\n getPropertiesByProject(http, accessToken, { companySlug, projectSlug }, propertyQuery),\n propertyByProjectAndCode: (accessToken, { companySlug, projectSlug, propertyCode }) =>\n getPropertyByProjectAndCode(http, accessToken, { companySlug, projectSlug, propertyCode }),\n createProperty: (accessToken, { companySlug, projectSlug }, newPropertyRequest) =>\n postCreateProperty(http, accessToken, { companySlug, projectSlug }, newPropertyRequest),\n updateProperty: (accessToken, { companySlug, projectSlug, propertyCode }, patch) =>\n patchUpdateProperty(http, accessToken, { companySlug, projectSlug, propertyCode }, patch),\n },\n };\n}\n"]}