@sales-planner/http-client 0.3.0 → 0.4.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/README.md +25 -19
- package/dist/client.d.ts +6 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -2
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -29,9 +29,9 @@ const shops = await client.getShops();
|
|
|
29
29
|
// Get SKUs for a shop
|
|
30
30
|
const skus = await client.getSkus({ shop_id: 1, tenant_id: 1 });
|
|
31
31
|
|
|
32
|
-
// Import sales history
|
|
32
|
+
// Import sales history (marketplace field required)
|
|
33
33
|
const result = await client.importSalesHistoryJson([
|
|
34
|
-
{ sku_code: 'SKU-001', period: '2026-01', quantity: 100 }
|
|
34
|
+
{ sku_code: 'SKU-001', period: '2026-01', quantity: 100, marketplace: 'WB' }
|
|
35
35
|
], { shop_id: 1, tenant_id: 1 });
|
|
36
36
|
```
|
|
37
37
|
|
|
@@ -41,38 +41,44 @@ const result = await client.importSalesHistoryJson([
|
|
|
41
41
|
- `getMe()` - Get current user with roles and tenants
|
|
42
42
|
|
|
43
43
|
### Users
|
|
44
|
-
- `getUsers()`, `getUser(id)
|
|
44
|
+
- `getUsers()`, `getUser(id)` - System admin or tenant admin (filtered by their tenants)
|
|
45
|
+
- `createUser(dto)`, `deleteUser(id)` - Tenant admin or higher
|
|
45
46
|
|
|
46
47
|
### Tenants
|
|
47
|
-
- `getTenants()`, `getTenant(id)
|
|
48
|
-
- `
|
|
48
|
+
- `getTenants()`, `getTenant(id)` - All authenticated users
|
|
49
|
+
- `createTenant(dto)` - System admin only
|
|
50
|
+
- `updateTenant(id, dto)`, `deleteTenant(id)` - Authenticated users (validation happens server-side)
|
|
51
|
+
- `createTenantWithShopAndUser(dto)` - System admin only
|
|
49
52
|
|
|
50
53
|
### Shops
|
|
51
|
-
- `getShops(tenantId?)`, `getShop(id)`, `createShop(dto)`, `updateShop(id, dto)`, `deleteShop(id)`
|
|
54
|
+
- `getShops(tenantId?)`, `getShop(id)`, `createShop(dto)`, `updateShop(id, dto)`, `deleteShop(id)` - Requires tenant access
|
|
52
55
|
- `deleteShopData(id)` - Delete all data (SKUs, sales history) for a shop
|
|
53
56
|
|
|
54
57
|
### SKUs
|
|
55
|
-
- `getSkus(ctx)`, `getSku(id, ctx)
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
58
|
+
- `getSkus(ctx)`, `getSku(id, ctx)` - Requires read access (viewer or higher)
|
|
59
|
+
- `createSku(dto, ctx)`, `updateSku(id, dto, ctx)`, `deleteSku(id, ctx)` - Requires write access (editor or higher)
|
|
60
|
+
- `importSkusJson(items, ctx)`, `importSkusCsv(csvContent, ctx)` - Requires write access
|
|
61
|
+
- `exportSkusJson(ctx)`, `exportSkusCsv(ctx)` - Requires read access
|
|
62
|
+
- `getSkusExampleJson()`, `getSkusExampleCsv()` - Get import format examples (no auth required)
|
|
59
63
|
|
|
60
64
|
### Sales History
|
|
61
|
-
- `getSalesHistory(ctx, query?)`, `getSalesHistoryItem(id, ctx)`
|
|
62
|
-
- `createSalesHistory(dto, ctx)`, `updateSalesHistory(id, dto, ctx)`, `deleteSalesHistory(id, ctx)`
|
|
63
|
-
- `importSalesHistoryJson(items, ctx)`, `importSalesHistoryCsv(csvContent, ctx)`
|
|
64
|
-
- `exportSalesHistoryJson(ctx, query?)`, `exportSalesHistoryCsv(ctx, query?)`
|
|
65
|
-
- `getSalesHistoryExampleJson()`, `getSalesHistoryExampleCsv()` - Get import format examples
|
|
65
|
+
- `getSalesHistory(ctx, query?)`, `getSalesHistoryItem(id, ctx)` - Requires read access (viewer or higher)
|
|
66
|
+
- `createSalesHistory(dto, ctx)`, `updateSalesHistory(id, dto, ctx)`, `deleteSalesHistory(id, ctx)` - Requires write access (editor or higher)
|
|
67
|
+
- `importSalesHistoryJson(items, ctx)`, `importSalesHistoryCsv(csvContent, ctx)` - Requires write access
|
|
68
|
+
- `exportSalesHistoryJson(ctx, query?)`, `exportSalesHistoryCsv(ctx, query?)` - Requires read access
|
|
69
|
+
- `getSalesHistoryExampleJson()`, `getSalesHistoryExampleCsv()` - Get import format examples (no auth required)
|
|
66
70
|
|
|
67
71
|
### Roles & User Roles
|
|
68
|
-
- `getRoles()`, `getRole(id)
|
|
69
|
-
- `
|
|
72
|
+
- `getRoles()`, `getRole(id)` - System admin only
|
|
73
|
+
- `createRole(dto)`, `updateRole(id, dto)`, `deleteRole(id)` - System admin only
|
|
74
|
+
- `createUserRole(dto)`, `deleteUserRole(id)` - Tenant admin or higher for their tenant
|
|
70
75
|
|
|
71
76
|
### API Keys
|
|
72
|
-
- `getApiKeys()`, `createApiKey(dto)`, `deleteApiKey(id)`
|
|
77
|
+
- `getApiKeys()`, `createApiKey(dto)`, `deleteApiKey(id)` - System admin only
|
|
73
78
|
|
|
74
79
|
### Marketplaces
|
|
75
|
-
- `getMarketplaces()`, `getMarketplace(id)
|
|
80
|
+
- `getMarketplaces()`, `getMarketplace(id)` - All authenticated users
|
|
81
|
+
- `createMarketplace(dto)`, `updateMarketplace(id, dto)`, `deleteMarketplace(id)` - System admin only
|
|
76
82
|
|
|
77
83
|
## Error Handling
|
|
78
84
|
|
package/dist/client.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export declare class SalesPlannerClient {
|
|
|
59
59
|
deleteRole(id: number): Promise<void>;
|
|
60
60
|
createUserRole(dto: CreateUserRoleDto): Promise<void>;
|
|
61
61
|
deleteUserRole(id: number): Promise<void>;
|
|
62
|
-
getApiKeys(): Promise<ApiKey[]>;
|
|
62
|
+
getApiKeys(userId?: number): Promise<ApiKey[]>;
|
|
63
63
|
createApiKey(dto: CreateApiKeyDto): Promise<ApiKey>;
|
|
64
64
|
deleteApiKey(id: number): Promise<void>;
|
|
65
65
|
getMarketplaces(): Promise<Marketplace[]>;
|
|
@@ -67,6 +67,11 @@ export declare class SalesPlannerClient {
|
|
|
67
67
|
createMarketplace(dto: CreateMarketplaceDto): Promise<Marketplace>;
|
|
68
68
|
updateMarketplace(id: string, dto: Partial<CreateMarketplaceDto>): Promise<Marketplace>;
|
|
69
69
|
deleteMarketplace(id: string): Promise<void>;
|
|
70
|
+
getRoot(): Promise<string>;
|
|
71
|
+
getHealth(): Promise<{
|
|
72
|
+
status: string;
|
|
73
|
+
version: string;
|
|
74
|
+
}>;
|
|
70
75
|
}
|
|
71
76
|
export declare class ApiError extends Error {
|
|
72
77
|
status: number;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACJ,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY;YAKlB,mBAAmB;YAcnB,OAAO;YA4CP,WAAW;YA+BX,SAAS;YAgCT,aAAa;YAiBb,iBAAiB;IAgBzB,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAQzC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,2BAA2B,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACJ,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,WAAW,EACX,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY;YAKlB,mBAAmB;YAcnB,OAAO;YA4CP,WAAW;YA+BX,SAAS;YAgCT,aAAa;YAiBb,iBAAiB;IAgBzB,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAQzC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,2BAA2B,CAC/B,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;IAI7B,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAI5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQrD,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,SAAS,CACb,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,WAAW,CAAC,EAChD,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC;IAIT,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9E,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIrF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhF,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIhE,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAItD,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI9C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQpC,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrF,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9E,kBAAkB,CACtB,GAAG,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,WAAW,CAAC,EACzD,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,YAAY,CAAC;IAIlB,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,YAAY,CAAC;IAIlB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,sBAAsB,CAC1B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,YAAY,CAAC;IAIlB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxF,sBAAsB,CAC1B,GAAG,EAAE,iBAAiB,EACtB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAI9B,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,0BAA0B,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAI/D,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ5C,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIhD,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlE,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAIvF,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ1B,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAOhE;AAED,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB"}
|
package/dist/client.js
CHANGED
|
@@ -277,8 +277,8 @@ export class SalesPlannerClient {
|
|
|
277
277
|
// ============================================================
|
|
278
278
|
// API Keys
|
|
279
279
|
// ============================================================
|
|
280
|
-
async getApiKeys() {
|
|
281
|
-
return this.request('GET', '/api-keys');
|
|
280
|
+
async getApiKeys(userId) {
|
|
281
|
+
return this.request('GET', '/api-keys', { params: { user_id: userId } });
|
|
282
282
|
}
|
|
283
283
|
async createApiKey(dto) {
|
|
284
284
|
return this.request('POST', '/api-keys', { body: dto });
|
|
@@ -304,6 +304,21 @@ export class SalesPlannerClient {
|
|
|
304
304
|
async deleteMarketplace(id) {
|
|
305
305
|
return this.request('DELETE', `/marketplaces/${id}`);
|
|
306
306
|
}
|
|
307
|
+
// Health & Info (unauthenticated)
|
|
308
|
+
async getRoot() {
|
|
309
|
+
const response = await fetch(`${this.baseUrl}/`);
|
|
310
|
+
if (!response.ok) {
|
|
311
|
+
throw new ApiError(response.status, response.statusText);
|
|
312
|
+
}
|
|
313
|
+
return response.text();
|
|
314
|
+
}
|
|
315
|
+
async getHealth() {
|
|
316
|
+
const response = await fetch(`${this.baseUrl}/health`);
|
|
317
|
+
if (!response.ok) {
|
|
318
|
+
throw new ApiError(response.status, response.statusText);
|
|
319
|
+
}
|
|
320
|
+
return response.json();
|
|
321
|
+
}
|
|
307
322
|
}
|
|
308
323
|
export class ApiError extends Error {
|
|
309
324
|
status;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sales-planner/http-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "HTTP client for Sales Planner API",
|
|
5
5
|
"author": "Damir Manapov",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,13 +24,16 @@
|
|
|
24
24
|
"README.md"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@sales-planner/shared": "0.4.
|
|
27
|
+
"@sales-planner/shared": "0.4.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"typescript": "^5.7.3"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"build": "tsc",
|
|
34
|
-
"typecheck": "tsc --noEmit"
|
|
34
|
+
"typecheck": "tsc --noEmit",
|
|
35
|
+
"lint": "biome lint --error-on-warnings src",
|
|
36
|
+
"format": "biome format --write src",
|
|
37
|
+
"format:check": "biome format src"
|
|
35
38
|
}
|
|
36
39
|
}
|