@viu/emporix-sdk 2.22.0 → 2.25.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.
- package/CHANGELOG.md +144 -0
- package/README.md +16 -6
- package/dist/availability.cjs +118 -0
- package/dist/availability.cjs.map +1 -1
- package/dist/availability.d.cts +178 -2
- package/dist/availability.d.ts +178 -2
- package/dist/availability.js +1 -1
- package/dist/cart.cjs +156 -11
- package/dist/cart.cjs.map +1 -1
- package/dist/cart.d.cts +177 -4
- package/dist/cart.d.ts +177 -4
- package/dist/cart.js +1 -1
- package/dist/category.cjs +192 -2
- package/dist/category.cjs.map +1 -1
- package/dist/category.d.cts +399 -2
- package/dist/category.d.ts +399 -2
- package/dist/category.js +1 -1
- package/dist/checkout.d.cts +1 -1
- package/dist/checkout.d.ts +1 -1
- package/dist/{chunk-HD5RBCM6.js → chunk-27NLS646.js} +10 -2
- package/dist/chunk-27NLS646.js.map +1 -0
- package/dist/{chunk-MMX5FGMI.js → chunk-6PJFOX3A.js} +109 -2
- package/dist/chunk-6PJFOX3A.js.map +1 -0
- package/dist/chunk-HWVFF6B2.js +378 -0
- package/dist/chunk-HWVFF6B2.js.map +1 -0
- package/dist/chunk-LQFRJSVT.js +224 -0
- package/dist/chunk-LQFRJSVT.js.map +1 -0
- package/dist/chunk-P7G4LOOV.js +264 -0
- package/dist/chunk-P7G4LOOV.js.map +1 -0
- package/dist/{chunk-44F52KRE.js → chunk-QQMLN76U.js} +27 -2
- package/dist/chunk-QQMLN76U.js.map +1 -0
- package/dist/chunk-UNW6SFSB.js +363 -0
- package/dist/chunk-UNW6SFSB.js.map +1 -0
- package/dist/chunk-V3275BA7.js +181 -0
- package/dist/chunk-V3275BA7.js.map +1 -0
- package/dist/chunk-W2KBVWJ2.js +323 -0
- package/dist/chunk-W2KBVWJ2.js.map +1 -0
- package/dist/{chunk-5DWCYDQD.js → chunk-YVZ6GOLE.js} +158 -13
- package/dist/chunk-YVZ6GOLE.js.map +1 -0
- package/dist/chunk-ZOFGDNSX.js +305 -0
- package/dist/chunk-ZOFGDNSX.js.map +1 -0
- package/dist/companies.cjs +25 -0
- package/dist/companies.cjs.map +1 -1
- package/dist/companies.d.cts +15 -1
- package/dist/companies.d.ts +15 -1
- package/dist/companies.js +1 -1
- package/dist/contacts.cjs +8 -0
- package/dist/contacts.cjs.map +1 -1
- package/dist/contacts.d.cts +3 -1
- package/dist/contacts.d.ts +3 -1
- package/dist/contacts.js +1 -1
- package/dist/{context-CfXJcYKP.d.cts → context-DC5gSgKK.d.cts} +18 -0
- package/dist/{context-CfXJcYKP.d.ts → context-DC5gSgKK.d.ts} +18 -0
- package/dist/customer-groups-BqYsPCA6.d.cts +706 -0
- package/dist/customer-groups-CLm6Gu9U.d.ts +706 -0
- package/dist/customer-groups.cjs +200 -17
- package/dist/customer-groups.cjs.map +1 -1
- package/dist/customer-groups.d.cts +2 -110
- package/dist/customer-groups.d.ts +2 -110
- package/dist/customer-groups.js +1 -1
- package/dist/customer.d.cts +1 -1
- package/dist/customer.d.ts +1 -1
- package/dist/index.cjs +2231 -395
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +435 -13
- package/dist/index.d.ts +435 -13
- package/dist/index.js +679 -344
- package/dist/index.js.map +1 -1
- package/dist/locations.d.cts +1 -1
- package/dist/locations.d.ts +1 -1
- package/dist/media.d.cts +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/orders.cjs +160 -2
- package/dist/orders.cjs.map +1 -1
- package/dist/orders.d.cts +222 -2
- package/dist/orders.d.ts +222 -2
- package/dist/orders.js +1 -1
- package/dist/payment.cjs +107 -0
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.d.cts +300 -2
- package/dist/payment.d.ts +300 -2
- package/dist/payment.js +1 -1
- package/dist/price.cjs +197 -0
- package/dist/price.cjs.map +1 -1
- package/dist/price.d.cts +578 -2
- package/dist/price.d.ts +578 -2
- package/dist/price.js +1 -1
- package/dist/product.cjs +190 -0
- package/dist/product.cjs.map +1 -1
- package/dist/product.d.cts +504 -2
- package/dist/product.d.ts +504 -2
- package/dist/product.js +1 -1
- package/dist/segment.cjs +179 -0
- package/dist/segment.cjs.map +1 -1
- package/dist/segment.d.cts +182 -2
- package/dist/segment.d.ts +182 -2
- package/dist/segment.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-36T4YPQJ.js +0 -106
- package/dist/chunk-36T4YPQJ.js.map +0 -1
- package/dist/chunk-3BTPX7IJ.js +0 -41
- package/dist/chunk-3BTPX7IJ.js.map +0 -1
- package/dist/chunk-44F52KRE.js.map +0 -1
- package/dist/chunk-5DWCYDQD.js.map +0 -1
- package/dist/chunk-A3LYJUD4.js +0 -108
- package/dist/chunk-A3LYJUD4.js.map +0 -1
- package/dist/chunk-DXOLWAOY.js +0 -188
- package/dist/chunk-DXOLWAOY.js.map +0 -1
- package/dist/chunk-FZMP5NQZ.js +0 -173
- package/dist/chunk-FZMP5NQZ.js.map +0 -1
- package/dist/chunk-HD5RBCM6.js.map +0 -1
- package/dist/chunk-IVCCGJN5.js +0 -63
- package/dist/chunk-IVCCGJN5.js.map +0 -1
- package/dist/chunk-MMX5FGMI.js.map +0 -1
- package/dist/chunk-NE7MIZPR.js +0 -144
- package/dist/chunk-NE7MIZPR.js.map +0 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
// src/services/iam.ts
|
|
2
|
+
var IamService = class {
|
|
3
|
+
constructor(ctx) {
|
|
4
|
+
this.ctx = ctx;
|
|
5
|
+
}
|
|
6
|
+
ctx;
|
|
7
|
+
static channel = "iam";
|
|
8
|
+
base() {
|
|
9
|
+
return `/iam/${this.ctx.tenant}`;
|
|
10
|
+
}
|
|
11
|
+
users = {
|
|
12
|
+
list: async (auth, query) => this.ctx.http.request({
|
|
13
|
+
method: "GET",
|
|
14
|
+
path: `${this.base()}/users`,
|
|
15
|
+
auth,
|
|
16
|
+
...query ? { query } : {}
|
|
17
|
+
}),
|
|
18
|
+
create: async (input, auth) => this.ctx.http.request({
|
|
19
|
+
method: "POST",
|
|
20
|
+
path: `${this.base()}/users`,
|
|
21
|
+
auth,
|
|
22
|
+
body: input
|
|
23
|
+
}),
|
|
24
|
+
get: async (userId, auth) => this.ctx.http.request({
|
|
25
|
+
method: "GET",
|
|
26
|
+
path: `${this.base()}/users/${userId}`,
|
|
27
|
+
auth
|
|
28
|
+
}),
|
|
29
|
+
getMe: async (auth) => this.ctx.http.request({
|
|
30
|
+
method: "GET",
|
|
31
|
+
path: `${this.base()}/users/me`,
|
|
32
|
+
auth
|
|
33
|
+
}),
|
|
34
|
+
update: async (userId, input, auth) => {
|
|
35
|
+
await this.ctx.http.request({
|
|
36
|
+
method: "PUT",
|
|
37
|
+
path: `${this.base()}/users/${userId}`,
|
|
38
|
+
auth,
|
|
39
|
+
body: input
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
delete: async (userId, auth) => {
|
|
43
|
+
await this.ctx.http.request({
|
|
44
|
+
method: "DELETE",
|
|
45
|
+
path: `${this.base()}/users/${userId}`,
|
|
46
|
+
auth
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
getGroups: async (userId, auth) => this.ctx.http.request({
|
|
50
|
+
method: "GET",
|
|
51
|
+
path: `${this.base()}/users/${userId}/groups`,
|
|
52
|
+
auth
|
|
53
|
+
}),
|
|
54
|
+
getScopes: async (userId, auth) => this.ctx.http.request({
|
|
55
|
+
method: "GET",
|
|
56
|
+
path: `${this.base()}/users/${userId}/scopes`,
|
|
57
|
+
auth
|
|
58
|
+
}),
|
|
59
|
+
getMyScopes: async (auth) => this.ctx.http.request({
|
|
60
|
+
method: "GET",
|
|
61
|
+
path: `${this.base()}/users/me/scopes`,
|
|
62
|
+
auth
|
|
63
|
+
}),
|
|
64
|
+
getAccessControls: async (userId, auth) => this.ctx.http.request({
|
|
65
|
+
method: "GET",
|
|
66
|
+
path: `${this.base()}/users/${userId}/access-controls`,
|
|
67
|
+
auth
|
|
68
|
+
}),
|
|
69
|
+
getMyAccessControls: async (auth) => this.ctx.http.request({
|
|
70
|
+
method: "GET",
|
|
71
|
+
path: `${this.base()}/users/me/access-controls`,
|
|
72
|
+
auth
|
|
73
|
+
})
|
|
74
|
+
};
|
|
75
|
+
groups = {
|
|
76
|
+
list: async (auth, query) => this.ctx.http.request({
|
|
77
|
+
method: "GET",
|
|
78
|
+
path: `${this.base()}/groups`,
|
|
79
|
+
auth,
|
|
80
|
+
...query ? { query } : {}
|
|
81
|
+
}),
|
|
82
|
+
create: async (input, auth) => this.ctx.http.request({
|
|
83
|
+
method: "POST",
|
|
84
|
+
path: `${this.base()}/groups`,
|
|
85
|
+
auth,
|
|
86
|
+
body: input
|
|
87
|
+
}),
|
|
88
|
+
get: async (groupId, auth) => this.ctx.http.request({
|
|
89
|
+
method: "GET",
|
|
90
|
+
path: `${this.base()}/groups/${groupId}`,
|
|
91
|
+
auth
|
|
92
|
+
}),
|
|
93
|
+
update: async (groupId, input, auth) => {
|
|
94
|
+
await this.ctx.http.request({
|
|
95
|
+
method: "PUT",
|
|
96
|
+
path: `${this.base()}/groups/${groupId}`,
|
|
97
|
+
auth,
|
|
98
|
+
body: input
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
delete: async (groupId, auth) => {
|
|
102
|
+
await this.ctx.http.request({
|
|
103
|
+
method: "DELETE",
|
|
104
|
+
path: `${this.base()}/groups/${groupId}`,
|
|
105
|
+
auth
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
listUsers: async (groupId, auth) => this.ctx.http.request({
|
|
109
|
+
method: "GET",
|
|
110
|
+
path: `${this.base()}/groups/${groupId}/users`,
|
|
111
|
+
auth
|
|
112
|
+
}),
|
|
113
|
+
addUser: async (groupId, input, auth) => this.ctx.http.request({
|
|
114
|
+
method: "POST",
|
|
115
|
+
path: `${this.base()}/groups/${groupId}/users`,
|
|
116
|
+
auth,
|
|
117
|
+
body: input
|
|
118
|
+
}),
|
|
119
|
+
updateUser: async (groupId, userType, userId, input, auth) => this.ctx.http.request({
|
|
120
|
+
method: "PUT",
|
|
121
|
+
path: `${this.base()}/groups/${groupId}/users/${userType}/${userId}`,
|
|
122
|
+
auth,
|
|
123
|
+
body: input
|
|
124
|
+
}),
|
|
125
|
+
removeAllUsers: async (groupId, auth) => {
|
|
126
|
+
await this.ctx.http.request({
|
|
127
|
+
method: "DELETE",
|
|
128
|
+
path: `${this.base()}/groups/${groupId}/users`,
|
|
129
|
+
auth
|
|
130
|
+
});
|
|
131
|
+
},
|
|
132
|
+
listAccessControls: async (groupId, auth) => this.ctx.http.request({
|
|
133
|
+
method: "GET",
|
|
134
|
+
path: `${this.base()}/groups/${groupId}/access-controls`,
|
|
135
|
+
auth
|
|
136
|
+
})
|
|
137
|
+
};
|
|
138
|
+
accessControls = {
|
|
139
|
+
list: async (auth) => this.ctx.http.request({
|
|
140
|
+
method: "GET",
|
|
141
|
+
path: `${this.base()}/access-controls`,
|
|
142
|
+
auth
|
|
143
|
+
}),
|
|
144
|
+
get: async (id, auth) => this.ctx.http.request({
|
|
145
|
+
method: "GET",
|
|
146
|
+
path: `${this.base()}/access-controls/${id}`,
|
|
147
|
+
auth
|
|
148
|
+
}),
|
|
149
|
+
upsert: async (id, input, auth) => this.ctx.http.request({
|
|
150
|
+
method: "PUT",
|
|
151
|
+
path: `${this.base()}/access-controls/${id}`,
|
|
152
|
+
auth,
|
|
153
|
+
body: input
|
|
154
|
+
}),
|
|
155
|
+
delete: async (id, auth) => {
|
|
156
|
+
await this.ctx.http.request({
|
|
157
|
+
method: "DELETE",
|
|
158
|
+
path: `${this.base()}/access-controls/${id}`,
|
|
159
|
+
auth
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
scopes = {
|
|
164
|
+
list: async (auth) => this.ctx.http.request({
|
|
165
|
+
method: "GET",
|
|
166
|
+
path: `${this.base()}/scopes`,
|
|
167
|
+
auth
|
|
168
|
+
}),
|
|
169
|
+
get: async (scopeId, auth) => this.ctx.http.request({
|
|
170
|
+
method: "GET",
|
|
171
|
+
path: `${this.base()}/scopes/${scopeId}`,
|
|
172
|
+
auth
|
|
173
|
+
}),
|
|
174
|
+
upsertCustom: async (scopeId, input, auth) => this.ctx.http.request({
|
|
175
|
+
method: "PUT",
|
|
176
|
+
path: `${this.base()}/scopes/${scopeId}`,
|
|
177
|
+
auth,
|
|
178
|
+
body: input
|
|
179
|
+
}),
|
|
180
|
+
deleteCustom: async (scopeId, auth) => {
|
|
181
|
+
await this.ctx.http.request({
|
|
182
|
+
method: "DELETE",
|
|
183
|
+
path: `${this.base()}/scopes/${scopeId}`,
|
|
184
|
+
auth
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// src/services/customer-groups.ts
|
|
191
|
+
var CustomerGroupsService = class {
|
|
192
|
+
constructor(ctx) {
|
|
193
|
+
this.ctx = ctx;
|
|
194
|
+
this.iam = new IamService(ctx);
|
|
195
|
+
}
|
|
196
|
+
ctx;
|
|
197
|
+
static channel = "iam";
|
|
198
|
+
iam;
|
|
199
|
+
/** Lists customer groups belonging to one legal entity. */
|
|
200
|
+
async listForCompany(legalEntityId, auth) {
|
|
201
|
+
return this.iam.groups.list(auth, { "b2b.legalEntityId": legalEntityId });
|
|
202
|
+
}
|
|
203
|
+
/** Adds a user (customer or employee) to a group. */
|
|
204
|
+
async addMember(groupId, member, auth) {
|
|
205
|
+
return await this.iam.groups.addUser(groupId, member, auth);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Removes a user from a group. Uses `DELETE …/groups/{groupId}/users/{userId}`
|
|
209
|
+
* directly — this endpoint is deprecated upstream and intentionally not
|
|
210
|
+
* exposed on {@link IamService}, so it is not delegated. No non-deprecated
|
|
211
|
+
* single-user removal exists.
|
|
212
|
+
*/
|
|
213
|
+
async removeMember(groupId, userId, auth) {
|
|
214
|
+
await this.ctx.http.request({
|
|
215
|
+
method: "DELETE",
|
|
216
|
+
path: `/iam/${this.ctx.tenant}/groups/${groupId}/users/${userId}`,
|
|
217
|
+
auth
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
export { CustomerGroupsService, IamService };
|
|
223
|
+
//# sourceMappingURL=chunk-LQFRJSVT.js.map
|
|
224
|
+
//# sourceMappingURL=chunk-LQFRJSVT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/iam.ts","../src/services/customer-groups.ts"],"names":[],"mappings":"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","file":"chunk-LQFRJSVT.js","sourcesContent":["import type { ClientContext } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport type {\n IamUser,\n IamUserDetail,\n IamUserCreate,\n IamUserUpdate,\n IamUserScopes,\n IamUserCreated,\n IamGroup,\n IamGroupCreate,\n IamGroupUpdate,\n IamGroupCreated,\n IamGroupMemberInput,\n IamGroupMemberCreated,\n IamAccessControl,\n IamAccessControlUpsert,\n IamAccessControlCreated,\n IamScope,\n IamScopeUpsert,\n IamScopeCreated,\n} from \"./iam-types\";\n\nexport type * from \"./iam-types\";\n\n/**\n * IAM admin CRUD: users, user-groups, access-controls, scopes. Every method\n * requires an explicit `auth` (admin/service token; `getMe*` take the caller's\n * customer token). The deprecated legacy-RBAC model (roles/permissions/\n * resources/templates) is intentionally not wrapped.\n */\nexport class IamService {\n static readonly channel = \"iam\" as const;\n constructor(private readonly ctx: ClientContext) {}\n\n private base(): string {\n return `/iam/${this.ctx.tenant}`;\n }\n\n readonly users = {\n list: async (auth: AuthContext, query?: Record<string, string | number>): Promise<IamUser[]> =>\n this.ctx.http.request<IamUser[]>({\n method: \"GET\",\n path: `${this.base()}/users`,\n auth,\n ...(query ? { query } : {}),\n }),\n create: async (input: IamUserCreate, auth: AuthContext): Promise<IamUserCreated> =>\n this.ctx.http.request<IamUserCreated>({\n method: \"POST\",\n path: `${this.base()}/users`,\n auth,\n body: input,\n }),\n get: async (userId: string, auth: AuthContext): Promise<IamUserDetail> =>\n this.ctx.http.request<IamUserDetail>({\n method: \"GET\",\n path: `${this.base()}/users/${userId}`,\n auth,\n }),\n getMe: async (auth: AuthContext): Promise<IamUserDetail> =>\n this.ctx.http.request<IamUserDetail>({\n method: \"GET\",\n path: `${this.base()}/users/me`,\n auth,\n }),\n update: async (userId: string, input: IamUserUpdate, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"PUT\",\n path: `${this.base()}/users/${userId}`,\n auth,\n body: input,\n });\n },\n delete: async (userId: string, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/users/${userId}`,\n auth,\n });\n },\n getGroups: async (userId: string, auth: AuthContext): Promise<IamGroup[]> =>\n this.ctx.http.request<IamGroup[]>({\n method: \"GET\",\n path: `${this.base()}/users/${userId}/groups`,\n auth,\n }),\n getScopes: async (userId: string, auth: AuthContext): Promise<IamUserScopes> =>\n this.ctx.http.request<IamUserScopes>({\n method: \"GET\",\n path: `${this.base()}/users/${userId}/scopes`,\n auth,\n }),\n getMyScopes: async (auth: AuthContext): Promise<IamUserScopes> =>\n this.ctx.http.request<IamUserScopes>({\n method: \"GET\",\n path: `${this.base()}/users/me/scopes`,\n auth,\n }),\n getAccessControls: async (userId: string, auth: AuthContext): Promise<IamAccessControl[]> =>\n this.ctx.http.request<IamAccessControl[]>({\n method: \"GET\",\n path: `${this.base()}/users/${userId}/access-controls`,\n auth,\n }),\n getMyAccessControls: async (auth: AuthContext): Promise<IamAccessControl[]> =>\n this.ctx.http.request<IamAccessControl[]>({\n method: \"GET\",\n path: `${this.base()}/users/me/access-controls`,\n auth,\n }),\n };\n\n readonly groups = {\n list: async (auth: AuthContext, query?: Record<string, string | number>): Promise<IamGroup[]> =>\n this.ctx.http.request<IamGroup[]>({\n method: \"GET\",\n path: `${this.base()}/groups`,\n auth,\n ...(query ? { query } : {}),\n }),\n create: async (input: IamGroupCreate, auth: AuthContext): Promise<IamGroupCreated> =>\n this.ctx.http.request<IamGroupCreated>({\n method: \"POST\",\n path: `${this.base()}/groups`,\n auth,\n body: input,\n }),\n get: async (groupId: string, auth: AuthContext): Promise<IamGroup> =>\n this.ctx.http.request<IamGroup>({\n method: \"GET\",\n path: `${this.base()}/groups/${groupId}`,\n auth,\n }),\n update: async (groupId: string, input: IamGroupUpdate, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"PUT\",\n path: `${this.base()}/groups/${groupId}`,\n auth,\n body: input,\n });\n },\n delete: async (groupId: string, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/groups/${groupId}`,\n auth,\n });\n },\n listUsers: async (groupId: string, auth: AuthContext): Promise<IamUser[]> =>\n this.ctx.http.request<IamUser[]>({\n method: \"GET\",\n path: `${this.base()}/groups/${groupId}/users`,\n auth,\n }),\n addUser: async (\n groupId: string,\n input: IamGroupMemberInput,\n auth: AuthContext,\n ): Promise<IamGroupMemberCreated> =>\n this.ctx.http.request<IamGroupMemberCreated>({\n method: \"POST\",\n path: `${this.base()}/groups/${groupId}/users`,\n auth,\n body: input,\n }),\n updateUser: async (\n groupId: string,\n userType: string,\n userId: string,\n input: IamGroupMemberInput,\n auth: AuthContext,\n ): Promise<IamGroupMemberCreated> =>\n this.ctx.http.request<IamGroupMemberCreated>({\n method: \"PUT\",\n path: `${this.base()}/groups/${groupId}/users/${userType}/${userId}`,\n auth,\n body: input,\n }),\n removeAllUsers: async (groupId: string, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/groups/${groupId}/users`,\n auth,\n });\n },\n listAccessControls: async (groupId: string, auth: AuthContext): Promise<IamAccessControl[]> =>\n this.ctx.http.request<IamAccessControl[]>({\n method: \"GET\",\n path: `${this.base()}/groups/${groupId}/access-controls`,\n auth,\n }),\n };\n\n readonly accessControls = {\n list: async (auth: AuthContext): Promise<IamAccessControl[]> =>\n this.ctx.http.request<IamAccessControl[]>({\n method: \"GET\",\n path: `${this.base()}/access-controls`,\n auth,\n }),\n get: async (id: string, auth: AuthContext): Promise<IamAccessControl> =>\n this.ctx.http.request<IamAccessControl>({\n method: \"GET\",\n path: `${this.base()}/access-controls/${id}`,\n auth,\n }),\n upsert: async (\n id: string,\n input: IamAccessControlUpsert,\n auth: AuthContext,\n ): Promise<IamAccessControlCreated> =>\n this.ctx.http.request<IamAccessControlCreated>({\n method: \"PUT\",\n path: `${this.base()}/access-controls/${id}`,\n auth,\n body: input,\n }),\n delete: async (id: string, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/access-controls/${id}`,\n auth,\n });\n },\n };\n\n readonly scopes = {\n list: async (auth: AuthContext): Promise<IamScope[]> =>\n this.ctx.http.request<IamScope[]>({\n method: \"GET\",\n path: `${this.base()}/scopes`,\n auth,\n }),\n get: async (scopeId: string, auth: AuthContext): Promise<IamScope> =>\n this.ctx.http.request<IamScope>({\n method: \"GET\",\n path: `${this.base()}/scopes/${scopeId}`,\n auth,\n }),\n upsertCustom: async (\n scopeId: string,\n input: IamScopeUpsert,\n auth: AuthContext,\n ): Promise<IamScopeCreated> =>\n this.ctx.http.request<IamScopeCreated>({\n method: \"PUT\",\n path: `${this.base()}/scopes/${scopeId}`,\n auth,\n body: input,\n }),\n deleteCustom: async (scopeId: string, auth: AuthContext): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/scopes/${scopeId}`,\n auth,\n });\n },\n };\n}\n","import type { ClientContext } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport type { GroupsQueryDocument, AssignmentCreateRequest } from \"../generated/iam\";\nimport { IamService } from \"./iam\";\n\n/**\n * Access to IAM customer groups for a legal entity. Thin B2B-friendly wrapper\n * over {@link IamService.groups}; kept for backward compatibility.\n *\n * `listForCompany` requires `iam.group_read`; the member mutations\n * (`addMember`/`removeMember`) require `iam.group_manage` — typically only\n * granted to Admin-group customers; a 403 surfaces as\n * `EmporixInsufficientScopeError`.\n */\nexport class CustomerGroupsService {\n static readonly channel = \"iam\" as const;\n private readonly iam: IamService;\n constructor(private readonly ctx: ClientContext) {\n this.iam = new IamService(ctx);\n }\n\n /** Lists customer groups belonging to one legal entity. */\n async listForCompany(legalEntityId: string, auth: AuthContext): Promise<GroupsQueryDocument[]> {\n return this.iam.groups.list(auth, { \"b2b.legalEntityId\": legalEntityId });\n }\n\n /** Adds a user (customer or employee) to a group. */\n async addMember(\n groupId: string,\n member: AssignmentCreateRequest,\n auth: AuthContext,\n ): Promise<{ id: string }> {\n // `addUser` returns `AssignmentIdResponse` (id optional); the original public\n // contract is `{ id: string }` (the old `request<{id:string}>` asserted the\n // same). Cast to preserve that contract — the wire body is identical.\n return (await this.iam.groups.addUser(groupId, member, auth)) as { id: string };\n }\n\n /**\n * Removes a user from a group. Uses `DELETE …/groups/{groupId}/users/{userId}`\n * directly — this endpoint is deprecated upstream and intentionally not\n * exposed on {@link IamService}, so it is not delegated. No non-deprecated\n * single-user removal exists.\n */\n async removeMember(groupId: string, userId: string, auth: AuthContext): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `/iam/${this.ctx.tenant}/groups/${groupId}/users/${userId}`,\n auth,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { resolveQuery } from './chunk-S5HEIQDK.js';
|
|
2
|
+
|
|
3
|
+
// src/services/orders.ts
|
|
4
|
+
function setIfDefined(q, key, value) {
|
|
5
|
+
if (value !== void 0 && value !== "") {
|
|
6
|
+
q[key] = value;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
var OrdersService = class {
|
|
10
|
+
constructor(ctx) {
|
|
11
|
+
this.ctx = ctx;
|
|
12
|
+
}
|
|
13
|
+
ctx;
|
|
14
|
+
static channel = "orders";
|
|
15
|
+
base() {
|
|
16
|
+
return `/order-v2/${this.ctx.tenant}/orders`;
|
|
17
|
+
}
|
|
18
|
+
saasHeader(saasToken) {
|
|
19
|
+
return saasToken ? { "saas-token": saasToken } : void 0;
|
|
20
|
+
}
|
|
21
|
+
/** Lists the calling customer's orders. */
|
|
22
|
+
async listMine(auth, opts = {}) {
|
|
23
|
+
const pageNumber = opts.pageNumber ?? 1;
|
|
24
|
+
const pageSize = opts.pageSize ?? 50;
|
|
25
|
+
const query = {
|
|
26
|
+
pageNumber,
|
|
27
|
+
pageSize
|
|
28
|
+
};
|
|
29
|
+
setIfDefined(query, "status", opts.status);
|
|
30
|
+
setIfDefined(query, "legalEntityId", opts.legalEntityId);
|
|
31
|
+
setIfDefined(query, "siteCode", opts.siteCode);
|
|
32
|
+
if (opts.q !== void 0) {
|
|
33
|
+
setIfDefined(query, "q", resolveQuery(opts.q, { compoundLogicalQuery: false }));
|
|
34
|
+
}
|
|
35
|
+
const headers = this.saasHeader(opts.saasToken);
|
|
36
|
+
const items = await this.ctx.http.request({
|
|
37
|
+
method: "GET",
|
|
38
|
+
path: this.base(),
|
|
39
|
+
query,
|
|
40
|
+
auth,
|
|
41
|
+
...headers ? { headers } : {}
|
|
42
|
+
});
|
|
43
|
+
return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };
|
|
44
|
+
}
|
|
45
|
+
/** Fetches one of the calling customer's orders by id. */
|
|
46
|
+
async get(orderId, auth, opts = {}) {
|
|
47
|
+
const headers = this.saasHeader(opts.saasToken);
|
|
48
|
+
return this.ctx.http.request({
|
|
49
|
+
method: "GET",
|
|
50
|
+
path: `${this.base()}/${orderId}`,
|
|
51
|
+
auth,
|
|
52
|
+
...headers ? { headers } : {}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/** Transitions an order to a new status. Server enforces legal transitions. */
|
|
56
|
+
async transition(orderId, status, auth, opts = {}) {
|
|
57
|
+
const body = { status };
|
|
58
|
+
if (opts.comment !== void 0) body.comment = opts.comment;
|
|
59
|
+
const headers = this.saasHeader(opts.saasToken);
|
|
60
|
+
await this.ctx.http.request({
|
|
61
|
+
method: "POST",
|
|
62
|
+
path: `${this.base()}/${orderId}/transitions`,
|
|
63
|
+
auth,
|
|
64
|
+
body,
|
|
65
|
+
...headers ? { headers } : {}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Convenience: transitions to `DECLINED` (customer cancel). */
|
|
69
|
+
async cancel(orderId, auth, opts = {}) {
|
|
70
|
+
await this.transition(orderId, "DECLINED", auth, opts);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Lists a legal entity's orders (`GET /legal-entity-orders/{legalEntityId}`),
|
|
74
|
+
* wrapped into `PaginatedItems`. B2B storefront view — requires a customer
|
|
75
|
+
* token with access to the legal entity.
|
|
76
|
+
*/
|
|
77
|
+
async listForLegalEntity(legalEntityId, auth, opts = {}) {
|
|
78
|
+
const pageNumber = opts.pageNumber ?? 1;
|
|
79
|
+
const pageSize = opts.pageSize ?? 50;
|
|
80
|
+
const query = { pageNumber, pageSize };
|
|
81
|
+
setIfDefined(query, "sort", opts.sort);
|
|
82
|
+
if (opts.q !== void 0) {
|
|
83
|
+
setIfDefined(query, "q", resolveQuery(opts.q, { compoundLogicalQuery: false }));
|
|
84
|
+
}
|
|
85
|
+
const headers = this.saasHeader(opts.saasToken);
|
|
86
|
+
const items = await this.ctx.http.request({
|
|
87
|
+
method: "GET",
|
|
88
|
+
path: `/order-v2/${this.ctx.tenant}/legal-entity-orders/${legalEntityId}`,
|
|
89
|
+
query,
|
|
90
|
+
auth,
|
|
91
|
+
...headers ? { headers } : {}
|
|
92
|
+
});
|
|
93
|
+
return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Fetches one order within a legal entity
|
|
97
|
+
* (`GET /legal-entity-orders/{legalEntityId}/{orderId}`).
|
|
98
|
+
*/
|
|
99
|
+
async getForLegalEntity(legalEntityId, orderId, auth, opts = {}) {
|
|
100
|
+
const headers = this.saasHeader(opts.saasToken);
|
|
101
|
+
return this.ctx.http.request({
|
|
102
|
+
method: "GET",
|
|
103
|
+
path: `/order-v2/${this.ctx.tenant}/legal-entity-orders/${legalEntityId}/${orderId}`,
|
|
104
|
+
auth,
|
|
105
|
+
...headers ? { headers } : {}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var SalesOrdersService = class {
|
|
110
|
+
constructor(ctx) {
|
|
111
|
+
this.ctx = ctx;
|
|
112
|
+
}
|
|
113
|
+
ctx;
|
|
114
|
+
static channel = "sales-orders";
|
|
115
|
+
base() {
|
|
116
|
+
return `/order-v2/${this.ctx.tenant}/salesorders`;
|
|
117
|
+
}
|
|
118
|
+
/** Fetches a single sales-order by id. */
|
|
119
|
+
async get(orderId, auth) {
|
|
120
|
+
return this.ctx.http.request({
|
|
121
|
+
method: "GET",
|
|
122
|
+
path: `${this.base()}/${orderId}`,
|
|
123
|
+
auth
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/** Patches an existing order (status, mixins, customAttributes, metadata). */
|
|
127
|
+
async update(orderId, patch, auth, opts = {}) {
|
|
128
|
+
const query = {};
|
|
129
|
+
if (opts.recalculate === false) query.recalculate = "false";
|
|
130
|
+
return this.ctx.http.request({
|
|
131
|
+
method: "PATCH",
|
|
132
|
+
path: `${this.base()}/${orderId}`,
|
|
133
|
+
auth,
|
|
134
|
+
...Object.keys(query).length > 0 ? { query } : {},
|
|
135
|
+
body: patch
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/** Lists tenant sales-orders (`GET /salesorders`), wrapped into `PaginatedItems`. */
|
|
139
|
+
async list(auth, opts = {}) {
|
|
140
|
+
const pageNumber = opts.pageNumber ?? 1;
|
|
141
|
+
const pageSize = opts.pageSize ?? 50;
|
|
142
|
+
const query = { pageNumber, pageSize };
|
|
143
|
+
setIfDefined(query, "sort", opts.sort);
|
|
144
|
+
setIfDefined(query, "fields", opts.fields);
|
|
145
|
+
if (opts.q !== void 0) {
|
|
146
|
+
setIfDefined(query, "q", resolveQuery(opts.q, { compoundLogicalQuery: false }));
|
|
147
|
+
}
|
|
148
|
+
const items = await this.ctx.http.request({
|
|
149
|
+
method: "GET",
|
|
150
|
+
path: this.base(),
|
|
151
|
+
query,
|
|
152
|
+
auth
|
|
153
|
+
});
|
|
154
|
+
return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };
|
|
155
|
+
}
|
|
156
|
+
/** Searches tenant sales-orders (`POST /salesorders/search`, body carries the `q` filter). */
|
|
157
|
+
async search(query, auth, opts = {}) {
|
|
158
|
+
const q = {};
|
|
159
|
+
setIfDefined(q, "pageNumber", opts.pageNumber);
|
|
160
|
+
setIfDefined(q, "pageSize", opts.pageSize);
|
|
161
|
+
setIfDefined(q, "sort", opts.sort);
|
|
162
|
+
setIfDefined(q, "fields", opts.fields);
|
|
163
|
+
return this.ctx.http.request({
|
|
164
|
+
method: "POST",
|
|
165
|
+
path: `${this.base()}/search`,
|
|
166
|
+
...Object.keys(q).length > 0 ? { query: q } : {},
|
|
167
|
+
body: query,
|
|
168
|
+
idempotent: true,
|
|
169
|
+
// pure read over POST — safe to replay on 5xx/429
|
|
170
|
+
auth
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/** Creates a sales-order as an employee (`POST /salesorders`). Returns the created resource location. */
|
|
174
|
+
async create(input, auth) {
|
|
175
|
+
return this.ctx.http.request({
|
|
176
|
+
method: "POST",
|
|
177
|
+
path: this.base(),
|
|
178
|
+
auth,
|
|
179
|
+
body: input
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Full-replaces a sales-order (`PUT /salesorders/{orderId}`, body `OrderUpdateDto`).
|
|
184
|
+
* The endpoint returns 204, so the order is re-fetched (direct GET) and returned.
|
|
185
|
+
* Note: `update` on this class is the PATCH (partial); `replace` is the PUT (full).
|
|
186
|
+
*/
|
|
187
|
+
async replace(orderId, input, auth) {
|
|
188
|
+
await this.ctx.http.request({
|
|
189
|
+
method: "PUT",
|
|
190
|
+
path: `${this.base()}/${orderId}`,
|
|
191
|
+
auth,
|
|
192
|
+
body: input
|
|
193
|
+
});
|
|
194
|
+
return this.ctx.http.request({
|
|
195
|
+
method: "GET",
|
|
196
|
+
path: `${this.base()}/${orderId}`,
|
|
197
|
+
auth
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/** Deletes a sales-order (`DELETE /salesorders/{orderId}`). */
|
|
201
|
+
async delete(orderId, auth) {
|
|
202
|
+
await this.ctx.http.request({
|
|
203
|
+
method: "DELETE",
|
|
204
|
+
path: `${this.base()}/${orderId}`,
|
|
205
|
+
auth
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/** Lists the available transitions for a sales-order (`GET /salesorders/{orderId}/transitions`). */
|
|
209
|
+
async listTransitions(orderId, auth) {
|
|
210
|
+
return this.ctx.http.request({
|
|
211
|
+
method: "GET",
|
|
212
|
+
path: `${this.base()}/${orderId}/transitions`,
|
|
213
|
+
auth
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/** Transitions a sales-order to a new status (`POST /salesorders/{orderId}/transitions`). */
|
|
217
|
+
async transition(orderId, input, auth) {
|
|
218
|
+
await this.ctx.http.request({
|
|
219
|
+
method: "POST",
|
|
220
|
+
path: `${this.base()}/${orderId}/transitions`,
|
|
221
|
+
auth,
|
|
222
|
+
body: input
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/** Lists the historical transitions of a sales-order (`GET /salesorders/{orderId}/historical-transitions`). */
|
|
226
|
+
async listHistoricalTransitions(orderId, auth) {
|
|
227
|
+
return this.ctx.http.request({
|
|
228
|
+
method: "GET",
|
|
229
|
+
path: `${this.base()}/${orderId}/historical-transitions`,
|
|
230
|
+
auth
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/** Calculates order-entry totals for a sales-order (`POST /salesorders/{orderId}/calculations`). */
|
|
234
|
+
async calculate(orderId, input, auth) {
|
|
235
|
+
return this.ctx.http.request({
|
|
236
|
+
method: "POST",
|
|
237
|
+
path: `${this.base()}/${orderId}/calculations`,
|
|
238
|
+
auth,
|
|
239
|
+
body: input
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/** Updates a sales-order's entries (`POST /salesorders/{orderId}/entries`). Returns the updated order. */
|
|
243
|
+
async updateEntries(orderId, input, auth) {
|
|
244
|
+
return this.ctx.http.request({
|
|
245
|
+
method: "POST",
|
|
246
|
+
path: `${this.base()}/${orderId}/entries`,
|
|
247
|
+
auth,
|
|
248
|
+
body: input
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/** Splits a sales-order (`POST /salesorders/{orderId}/split`). */
|
|
252
|
+
async split(orderId, input, auth) {
|
|
253
|
+
return this.ctx.http.request({
|
|
254
|
+
method: "POST",
|
|
255
|
+
path: `${this.base()}/${orderId}/split`,
|
|
256
|
+
auth,
|
|
257
|
+
body: input
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
export { OrdersService, SalesOrdersService };
|
|
263
|
+
//# sourceMappingURL=chunk-P7G4LOOV.js.map
|
|
264
|
+
//# sourceMappingURL=chunk-P7G4LOOV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/orders.ts"],"names":[],"mappings":";;;AAsGA,SAAS,YAAA,CACP,CAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,EAAA,EAAI;AACvC,IAAA,CAAA,CAAE,GAAG,CAAA,GAAI,KAAA;AAAA,EACX;AACF;AASO,IAAM,gBAAN,MAAoB;AAAA,EAEzB,YAA6B,GAAA,EAAoB;AAApB,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAAA,EAAqB;AAAA,EAArB,GAAA;AAAA,EAD7B,OAAgB,OAAA,GAAU,QAAA;AAAA,EAGlB,IAAA,GAAe;AACrB,IAAA,OAAO,CAAA,UAAA,EAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,OAAA,CAAA;AAAA,EACrC;AAAA,EAEQ,WAAW,SAAA,EAAmE;AACpF,IAAA,OAAO,SAAA,GAAY,EAAE,YAAA,EAAc,SAAA,EAAU,GAAI,MAAA;AAAA,EACnD;AAAA;AAAA,EAGA,MAAM,QAAA,CACJ,IAAA,EACA,IAAA,GAA4B,EAAC,EACG;AAChC,IAAA,MAAM,UAAA,GAAa,KAAK,UAAA,IAAc,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,EAAA;AAClC,IAAA,MAAM,KAAA,GAAqD;AAAA,MACzD,UAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,YAAA,CAAa,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AACzC,IAAA,YAAA,CAAa,KAAA,EAAO,eAAA,EAAiB,IAAA,CAAK,aAAa,CAAA;AACvD,IAAA,YAAA,CAAa,KAAA,EAAO,UAAA,EAAY,IAAA,CAAK,QAAQ,CAAA;AAC7C,IAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAW;AACxB,MAAA,YAAA,CAAa,KAAA,EAAO,KAAK,YAAA,CAAa,IAAA,CAAK,GAAG,EAAE,oBAAA,EAAsB,KAAA,EAAO,CAAC,CAAA;AAAA,IAChF;AACA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAK9C,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,GAAA,CAAI,KAAK,OAAA,CAAiB;AAAA,MACjD,MAAA,EAAQ,KAAA;AAAA,MACR,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,MAChB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC9B,CAAA;AACD,IAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,UAAU,WAAA,EAAa,KAAA,CAAM,WAAW,QAAA,EAAS;AAAA,EAC/E;AAAA;AAAA,EAGA,MAAM,GAAA,CACJ,OAAA,EACA,IAAA,EACA,IAAA,GAAwB,EAAC,EACT;AAChB,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAC9C,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAe;AAAA,MAClC,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,UAAA,CACJ,OAAA,EACA,QACA,IAAA,EACA,IAAA,GAA+B,EAAC,EACjB;AACf,IAAA,MAAM,IAAA,GAAkD,EAAE,MAAA,EAAO;AACjE,IAAA,IAAI,IAAA,CAAK,OAAA,KAAY,MAAA,EAAW,IAAA,CAAK,UAAU,IAAA,CAAK,OAAA;AACpD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAC9C,IAAA,MAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAc;AAAA,MAChC,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,YAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,MAAA,CACJ,OAAA,EACA,IAAA,EACA,IAAA,GAA+B,EAAC,EACjB;AACf,IAAA,MAAM,IAAA,CAAK,UAAA,CAAW,OAAA,EAAS,UAAA,EAAY,MAAM,IAAI,CAAA;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAA,CACJ,aAAA,EACA,IAAA,EACA,IAAA,GAAqC,EAAC,EACD;AACrC,IAAA,MAAM,UAAA,GAAa,KAAK,UAAA,IAAc,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,EAAA;AAClC,IAAA,MAAM,KAAA,GAAqD,EAAE,UAAA,EAAY,QAAA,EAAS;AAClF,IAAA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,IAAA,CAAK,IAAI,CAAA;AACrC,IAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAW;AACxB,MAAA,YAAA,CAAa,KAAA,EAAO,KAAK,YAAA,CAAa,IAAA,CAAK,GAAG,EAAE,oBAAA,EAAsB,KAAA,EAAO,CAAC,CAAA;AAAA,IAChF;AACA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAC9C,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,GAAA,CAAI,KAAK,OAAA,CAAsB;AAAA,MACtD,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,UAAA,EAAa,IAAA,CAAK,GAAA,CAAI,MAAM,wBAAwB,aAAa,CAAA,CAAA;AAAA,MACvE,KAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC9B,CAAA;AACD,IAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,UAAU,WAAA,EAAa,KAAA,CAAM,WAAW,QAAA,EAAS;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAA,CACJ,aAAA,EACA,SACA,IAAA,EACA,IAAA,GAA+B,EAAC,EACX;AACrB,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAC9C,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAoB;AAAA,MACvC,MAAA,EAAQ,KAAA;AAAA,MACR,IAAA,EAAM,aAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,qBAAA,EAAwB,aAAa,IAAI,OAAO,CAAA,CAAA;AAAA,MAClF,IAAA;AAAA,MACA,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC9B,CAAA;AAAA,EACH;AACF;AAWO,IAAM,qBAAN,MAAyB;AAAA,EAE9B,YAA6B,GAAA,EAAoB;AAApB,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAAA,EAAqB;AAAA,EAArB,GAAA;AAAA,EAD7B,OAAgB,OAAA,GAAU,cAAA;AAAA,EAGlB,IAAA,GAAe;AACrB,IAAA,OAAO,CAAA,UAAA,EAAa,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,YAAA,CAAA;AAAA,EACrC;AAAA;AAAA,EAGA,MAAM,GAAA,CAAI,OAAA,EAAiB,IAAA,EAAmC;AAC5D,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAe;AAAA,MAClC,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,MAAA,CACJ,OAAA,EACA,OACA,IAAA,EACA,IAAA,GAAgC,EAAC,EACjB;AAChB,IAAA,MAAM,QAAgC,EAAC;AACvC,IAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,KAAA,EAAO,KAAA,CAAM,WAAA,GAAc,OAAA;AACpD,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAe;AAAA,MAClC,MAAA,EAAQ,OAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,GAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,CAAA,GAAI,EAAE,KAAA,EAAM,GAAI,EAAC;AAAA,MACjD,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,IAAA,CAAK,IAAA,EAAmB,IAAA,GAA+B,EAAC,EAAwC;AACpG,IAAA,MAAM,UAAA,GAAa,KAAK,UAAA,IAAc,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,EAAA;AAClC,IAAA,MAAM,KAAA,GAAqD,EAAE,UAAA,EAAY,QAAA,EAAS;AAClF,IAAA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,IAAA,CAAK,IAAI,CAAA;AACrC,IAAA,YAAA,CAAa,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AACzC,IAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAW;AACxB,MAAA,YAAA,CAAa,KAAA,EAAO,KAAK,YAAA,CAAa,IAAA,CAAK,GAAG,EAAE,oBAAA,EAAsB,KAAA,EAAO,CAAC,CAAA;AAAA,IAChF;AACA,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,GAAA,CAAI,KAAK,OAAA,CAAsB;AAAA,MACtD,MAAA,EAAQ,KAAA;AAAA,MACR,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,MAChB,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,UAAU,WAAA,EAAa,KAAA,CAAM,WAAW,QAAA,EAAS;AAAA,EAC/E;AAAA;AAAA,EAGA,MAAM,MAAA,CACJ,KAAA,EACA,IAAA,EACA,IAAA,GAAmF,EAAC,EAC7D;AACvB,IAAA,MAAM,IAAiD,EAAC;AACxD,IAAA,YAAA,CAAa,CAAA,EAAG,YAAA,EAAc,IAAA,CAAK,UAAU,CAAA;AAC7C,IAAA,YAAA,CAAa,CAAA,EAAG,UAAA,EAAY,IAAA,CAAK,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,CAAA,EAAG,MAAA,EAAQ,IAAA,CAAK,IAAI,CAAA;AACjC,IAAA,YAAA,CAAa,CAAA,EAAG,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AACrC,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAsB;AAAA,MACzC,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,CAAA,OAAA,CAAA;AAAA,MACpB,GAAI,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,EAAE,GAAI,EAAC;AAAA,MAChD,IAAA,EAAM,KAAA;AAAA,MACN,UAAA,EAAY,IAAA;AAAA;AAAA,MACZ;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,MAAA,CAAO,KAAA,EAA8B,IAAA,EAA+C;AACxF,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAA2B;AAAA,MAC9C,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,MAChB,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAA,CAAQ,OAAA,EAAiB,KAAA,EAA+B,IAAA,EAAwC;AACpG,IAAA,MAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAc;AAAA,MAChC,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAoB;AAAA,MACvC,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,MAAA,CAAO,OAAA,EAAiB,IAAA,EAAkC;AAC9D,IAAA,MAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAc;AAAA,MAChC,MAAA,EAAQ,QAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,CAAA;AAAA,MAC/B;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,eAAA,CAAgB,OAAA,EAAiB,IAAA,EAA0C;AAC/E,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAsB;AAAA,MACzC,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,YAAA,CAAA;AAAA,MAC/B;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,UAAA,CAAW,OAAA,EAAiB,KAAA,EAAmB,IAAA,EAAkC;AACrF,IAAA,MAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAc;AAAA,MAChC,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,YAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBAAA,CAA0B,OAAA,EAAiB,IAAA,EAA6D;AAC5G,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAyC;AAAA,MAC5D,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,uBAAA,CAAA;AAAA,MAC/B;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,SAAA,CAAU,OAAA,EAAiB,KAAA,EAAmC,IAAA,EAAqC;AACvG,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAiB;AAAA,MACpC,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,aAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,aAAA,CAAc,OAAA,EAAiB,KAAA,EAA+B,IAAA,EAAwC;AAC1G,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAAoB;AAAA,MACvC,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,QAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,KAAA,CAAM,OAAA,EAAiB,KAAA,EAA6B,IAAA,EAAmD;AAC3G,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,OAAA,CAA+B;AAAA,MAClD,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAI,OAAO,CAAA,MAAA,CAAA;AAAA,MAC/B,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AACF","file":"chunk-P7G4LOOV.js","sourcesContent":["import type { ClientContext, PaginatedItems } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport { resolveQuery, type QueryFor } from \"../core/query\";\nimport type {\n Order,\n OrderStatus,\n OrderUpdateDto,\n SalesOrder,\n Transition,\n SalesOrderCreationDto,\n ResourceLocation,\n SearchRequest,\n HistoricalTransitionsResponse,\n OrderCalculationDto,\n OrderEntriesDto,\n OrderSplitRequest,\n OrderSplitResponse,\n} from \"../generated/order-v2\";\n\n/**\n * Salesorder PATCH body. The generated `orderUpdateDto` models a full order\n * (it requires `entries`/`customer`), but `PATCH /salesorders/{id}` accepts a\n * subset — so the SDK exposes a partial of it.\n */\nexport type SalesOrderPatch = Partial<OrderUpdateDto>;\n\n/** Body for creating a sales-order as an employee (`POST /salesorders`). */\nexport type SalesOrderCreateInput = SalesOrderCreationDto;\n\n/** Id/location envelope returned when a sales-order is created. */\nexport type SalesOrderCreated = ResourceLocation;\n\n/** Body for a full sales-order replace (`PUT /salesorders/{id}`). */\nexport type SalesOrderReplaceInput = OrderUpdateDto;\n\n/** Body for `salesOrders.search` (`POST /salesorders/search`). */\nexport type SalesOrderSearchInput = SearchRequest;\n\n/** Response of `salesOrders.listHistoricalTransitions`. */\nexport type SalesOrderHistoricalTransitions = HistoricalTransitionsResponse;\n\n/** Body for `salesOrders.calculate` (`POST /salesorders/{id}/calculations`). */\nexport type SalesOrderCalculationInput = OrderCalculationDto;\n\n/** Body for `salesOrders.updateEntries` (`POST /salesorders/{id}/entries`). */\nexport type SalesOrderEntriesInput = OrderEntriesDto;\n\n/** Body for `salesOrders.split` (`POST /salesorders/{id}/split`). */\nexport type SalesOrderSplitInput = OrderSplitRequest;\n\n/** Response of `salesOrders.split`. */\nexport type SalesOrderSplitResult = OrderSplitResponse;\n\n/** Options for `salesOrders.list`. */\nexport interface ListSalesOrdersOptions {\n pageNumber?: number;\n pageSize?: number;\n sort?: string;\n fields?: string;\n /** A `q` filter — raw DSL string or a built filter for entity \"ORDER\". */\n q?: QueryFor<\"ORDER\">;\n}\n\n/** Options for `orders.listForLegalEntity`. */\nexport interface ListLegalEntityOrdersOptions {\n pageNumber?: number;\n pageSize?: number;\n sort?: string;\n saasToken?: string;\n /** A `q` filter — raw DSL string or a built filter for entity \"ORDER\". */\n q?: QueryFor<\"ORDER\">;\n}\n\n/** Optional fields supported by the order-v2 list endpoint. */\nexport interface ListMyOrdersOptions {\n pageNumber?: number;\n pageSize?: number;\n status?: OrderStatus;\n legalEntityId?: string;\n siteCode?: string;\n saasToken?: string;\n /** A `q` filter — raw DSL string or a built filter (e.g. mixinQuery for entity \"ORDER\"). */\n q?: QueryFor<\"ORDER\">;\n}\n\n/** Options for single-order reads (saas-token only). */\nexport interface GetOrderOptions {\n saasToken?: string;\n}\n\n/** Options for status transitions. */\nexport interface OrderTransitionOptions {\n saasToken?: string;\n comment?: string;\n}\n\n/** Options for `salesOrders.update`. */\nexport interface UpdateSalesOrderOptions {\n /** Forwarded as `?recalculate=`. Omit to use the server default (true). */\n recalculate?: boolean;\n}\n\nfunction setIfDefined<V>(\n q: Record<string, string | number | undefined>,\n key: string,\n value: V | undefined,\n): void {\n if (value !== undefined && value !== \"\") {\n q[key] = value as unknown as string | number;\n }\n}\n\n/**\n * Storefront-customer access to Order-v2's customer endpoints.\n *\n * `listMine`/`get` require `order.order_read_own`; transitions require\n * `order.order_manage_own`. All methods accept an optional `saasToken` that\n * is passed as the `saas-token` header (mirrors `checkout.placeOrder`).\n */\nexport class OrdersService {\n static readonly channel = \"orders\" as const;\n constructor(private readonly ctx: ClientContext) {}\n\n private base(): string {\n return `/order-v2/${this.ctx.tenant}/orders`;\n }\n\n private saasHeader(saasToken: string | undefined): Record<string, string> | undefined {\n return saasToken ? { \"saas-token\": saasToken } : undefined;\n }\n\n /** Lists the calling customer's orders. */\n async listMine(\n auth: AuthContext,\n opts: ListMyOrdersOptions = {},\n ): Promise<PaginatedItems<Order>> {\n const pageNumber = opts.pageNumber ?? 1;\n const pageSize = opts.pageSize ?? 50;\n const query: Record<string, string | number | undefined> = {\n pageNumber,\n pageSize,\n };\n setIfDefined(query, \"status\", opts.status);\n setIfDefined(query, \"legalEntityId\", opts.legalEntityId);\n setIfDefined(query, \"siteCode\", opts.siteCode);\n if (opts.q !== undefined) {\n setIfDefined(query, \"q\", resolveQuery(opts.q, { compoundLogicalQuery: false }));\n }\n const headers = this.saasHeader(opts.saasToken);\n // order-v2 returns a bare JSON array (the total count lives in the\n // X-Total-Count header), not a {items,...} envelope — so wrap it into the\n // shared PaginatedItems shape like every other paginated service.\n // hasNextPage is inferred from the page being full.\n const items = await this.ctx.http.request<Order[]>({\n method: \"GET\",\n path: this.base(),\n query,\n auth,\n ...(headers ? { headers } : {}),\n });\n return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };\n }\n\n /** Fetches one of the calling customer's orders by id. */\n async get(\n orderId: string,\n auth: AuthContext,\n opts: GetOrderOptions = {},\n ): Promise<Order> {\n const headers = this.saasHeader(opts.saasToken);\n return this.ctx.http.request<Order>({\n method: \"GET\",\n path: `${this.base()}/${orderId}`,\n auth,\n ...(headers ? { headers } : {}),\n });\n }\n\n /** Transitions an order to a new status. Server enforces legal transitions. */\n async transition(\n orderId: string,\n status: OrderStatus,\n auth: AuthContext,\n opts: OrderTransitionOptions = {},\n ): Promise<void> {\n const body: { status: OrderStatus; comment?: string } = { status };\n if (opts.comment !== undefined) body.comment = opts.comment;\n const headers = this.saasHeader(opts.saasToken);\n await this.ctx.http.request<void>({\n method: \"POST\",\n path: `${this.base()}/${orderId}/transitions`,\n auth,\n body,\n ...(headers ? { headers } : {}),\n });\n }\n\n /** Convenience: transitions to `DECLINED` (customer cancel). */\n async cancel(\n orderId: string,\n auth: AuthContext,\n opts: { saasToken?: string } = {},\n ): Promise<void> {\n await this.transition(orderId, \"DECLINED\", auth, opts);\n }\n\n /**\n * Lists a legal entity's orders (`GET /legal-entity-orders/{legalEntityId}`),\n * wrapped into `PaginatedItems`. B2B storefront view — requires a customer\n * token with access to the legal entity.\n */\n async listForLegalEntity(\n legalEntityId: string,\n auth: AuthContext,\n opts: ListLegalEntityOrdersOptions = {},\n ): Promise<PaginatedItems<SalesOrder>> {\n const pageNumber = opts.pageNumber ?? 1;\n const pageSize = opts.pageSize ?? 50;\n const query: Record<string, string | number | undefined> = { pageNumber, pageSize };\n setIfDefined(query, \"sort\", opts.sort);\n if (opts.q !== undefined) {\n setIfDefined(query, \"q\", resolveQuery(opts.q, { compoundLogicalQuery: false }));\n }\n const headers = this.saasHeader(opts.saasToken);\n const items = await this.ctx.http.request<SalesOrder[]>({\n method: \"GET\",\n path: `/order-v2/${this.ctx.tenant}/legal-entity-orders/${legalEntityId}`,\n query,\n auth,\n ...(headers ? { headers } : {}),\n });\n return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };\n }\n\n /**\n * Fetches one order within a legal entity\n * (`GET /legal-entity-orders/{legalEntityId}/{orderId}`).\n */\n async getForLegalEntity(\n legalEntityId: string,\n orderId: string,\n auth: AuthContext,\n opts: { saasToken?: string } = {},\n ): Promise<SalesOrder> {\n const headers = this.saasHeader(opts.saasToken);\n return this.ctx.http.request<SalesOrder>({\n method: \"GET\",\n path: `/order-v2/${this.ctx.tenant}/legal-entity-orders/${legalEntityId}/${orderId}`,\n auth,\n ...(headers ? { headers } : {}),\n });\n }\n}\n\n/**\n * Backend / service-account access to the merchant-facing\n * `/salesorders/{id}` resource. Requires `order.order_read` (read) /\n * `order.order_manage` (update) scopes on a service token.\n *\n * The full admin list + filter surface is deferred to a follow-up\n * sub-spec. This service ships only single-resource read + patch — the\n * common backend use case (e.g. mixin updates after fulfilment).\n */\nexport class SalesOrdersService {\n static readonly channel = \"sales-orders\" as const;\n constructor(private readonly ctx: ClientContext) {}\n\n private base(): string {\n return `/order-v2/${this.ctx.tenant}/salesorders`;\n }\n\n /** Fetches a single sales-order by id. */\n async get(orderId: string, auth: AuthContext): Promise<Order> {\n return this.ctx.http.request<Order>({\n method: \"GET\",\n path: `${this.base()}/${orderId}`,\n auth,\n });\n }\n\n /** Patches an existing order (status, mixins, customAttributes, metadata). */\n async update(\n orderId: string,\n patch: SalesOrderPatch,\n auth: AuthContext,\n opts: UpdateSalesOrderOptions = {},\n ): Promise<Order> {\n const query: Record<string, string> = {};\n if (opts.recalculate === false) query.recalculate = \"false\";\n return this.ctx.http.request<Order>({\n method: \"PATCH\",\n path: `${this.base()}/${orderId}`,\n auth,\n ...(Object.keys(query).length > 0 ? { query } : {}),\n body: patch,\n });\n }\n\n /** Lists tenant sales-orders (`GET /salesorders`), wrapped into `PaginatedItems`. */\n async list(auth: AuthContext, opts: ListSalesOrdersOptions = {}): Promise<PaginatedItems<SalesOrder>> {\n const pageNumber = opts.pageNumber ?? 1;\n const pageSize = opts.pageSize ?? 50;\n const query: Record<string, string | number | undefined> = { pageNumber, pageSize };\n setIfDefined(query, \"sort\", opts.sort);\n setIfDefined(query, \"fields\", opts.fields);\n if (opts.q !== undefined) {\n setIfDefined(query, \"q\", resolveQuery(opts.q, { compoundLogicalQuery: false }));\n }\n const items = await this.ctx.http.request<SalesOrder[]>({\n method: \"GET\",\n path: this.base(),\n query,\n auth,\n });\n return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };\n }\n\n /** Searches tenant sales-orders (`POST /salesorders/search`, body carries the `q` filter). */\n async search(\n query: SalesOrderSearchInput,\n auth: AuthContext,\n opts: { pageNumber?: number; pageSize?: number; sort?: string; fields?: string } = {},\n ): Promise<SalesOrder[]> {\n const q: Record<string, string | number | undefined> = {};\n setIfDefined(q, \"pageNumber\", opts.pageNumber);\n setIfDefined(q, \"pageSize\", opts.pageSize);\n setIfDefined(q, \"sort\", opts.sort);\n setIfDefined(q, \"fields\", opts.fields);\n return this.ctx.http.request<SalesOrder[]>({\n method: \"POST\",\n path: `${this.base()}/search`,\n ...(Object.keys(q).length > 0 ? { query: q } : {}),\n body: query,\n idempotent: true, // pure read over POST — safe to replay on 5xx/429\n auth,\n });\n }\n\n /** Creates a sales-order as an employee (`POST /salesorders`). Returns the created resource location. */\n async create(input: SalesOrderCreateInput, auth: AuthContext): Promise<SalesOrderCreated> {\n return this.ctx.http.request<SalesOrderCreated>({\n method: \"POST\",\n path: this.base(),\n auth,\n body: input,\n });\n }\n\n /**\n * Full-replaces a sales-order (`PUT /salesorders/{orderId}`, body `OrderUpdateDto`).\n * The endpoint returns 204, so the order is re-fetched (direct GET) and returned.\n * Note: `update` on this class is the PATCH (partial); `replace` is the PUT (full).\n */\n async replace(orderId: string, input: SalesOrderReplaceInput, auth: AuthContext): Promise<SalesOrder> {\n await this.ctx.http.request<void>({\n method: \"PUT\",\n path: `${this.base()}/${orderId}`,\n auth,\n body: input,\n });\n return this.ctx.http.request<SalesOrder>({\n method: \"GET\",\n path: `${this.base()}/${orderId}`,\n auth,\n });\n }\n\n /** Deletes a sales-order (`DELETE /salesorders/{orderId}`). */\n async delete(orderId: string, auth: AuthContext): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${orderId}`,\n auth,\n });\n }\n\n /** Lists the available transitions for a sales-order (`GET /salesorders/{orderId}/transitions`). */\n async listTransitions(orderId: string, auth: AuthContext): Promise<Transition[]> {\n return this.ctx.http.request<Transition[]>({\n method: \"GET\",\n path: `${this.base()}/${orderId}/transitions`,\n auth,\n });\n }\n\n /** Transitions a sales-order to a new status (`POST /salesorders/{orderId}/transitions`). */\n async transition(orderId: string, input: Transition, auth: AuthContext): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"POST\",\n path: `${this.base()}/${orderId}/transitions`,\n auth,\n body: input,\n });\n }\n\n /** Lists the historical transitions of a sales-order (`GET /salesorders/{orderId}/historical-transitions`). */\n async listHistoricalTransitions(orderId: string, auth: AuthContext): Promise<SalesOrderHistoricalTransitions> {\n return this.ctx.http.request<SalesOrderHistoricalTransitions>({\n method: \"GET\",\n path: `${this.base()}/${orderId}/historical-transitions`,\n auth,\n });\n }\n\n /** Calculates order-entry totals for a sales-order (`POST /salesorders/{orderId}/calculations`). */\n async calculate(orderId: string, input: SalesOrderCalculationInput, auth: AuthContext): Promise<unknown> {\n return this.ctx.http.request<unknown>({\n method: \"POST\",\n path: `${this.base()}/${orderId}/calculations`,\n auth,\n body: input,\n });\n }\n\n /** Updates a sales-order's entries (`POST /salesorders/{orderId}/entries`). Returns the updated order. */\n async updateEntries(orderId: string, input: SalesOrderEntriesInput, auth: AuthContext): Promise<SalesOrder> {\n return this.ctx.http.request<SalesOrder>({\n method: \"POST\",\n path: `${this.base()}/${orderId}/entries`,\n auth,\n body: input,\n });\n }\n\n /** Splits a sales-order (`POST /salesorders/{orderId}/split`). */\n async split(orderId: string, input: SalesOrderSplitInput, auth: AuthContext): Promise<SalesOrderSplitResult> {\n return this.ctx.http.request<SalesOrderSplitResult>({\n method: \"POST\",\n path: `${this.base()}/${orderId}/split`,\n auth,\n body: input,\n });\n }\n}\n"]}
|
|
@@ -55,8 +55,33 @@ var CompaniesService = class {
|
|
|
55
55
|
auth
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Searches legal entities via `POST /legal-entities/search` with an Emporix
|
|
60
|
+
* `q`-syntax filter body. Requires the same read scope as {@link listMine}.
|
|
61
|
+
*/
|
|
62
|
+
async search(query, auth) {
|
|
63
|
+
return this.ctx.http.request({
|
|
64
|
+
method: "POST",
|
|
65
|
+
path: `${this.base()}/search`,
|
|
66
|
+
auth,
|
|
67
|
+
body: query,
|
|
68
|
+
idempotent: true
|
|
69
|
+
// pure read over POST — safe to replay on 5xx/429
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Retrieves a legal entity's chain of parent entities
|
|
74
|
+
* (`GET /legal-entities/{id}/parent-hierarchy`).
|
|
75
|
+
*/
|
|
76
|
+
async parentHierarchy(legalEntityId, auth) {
|
|
77
|
+
return this.ctx.http.request({
|
|
78
|
+
method: "GET",
|
|
79
|
+
path: `${this.base()}/${legalEntityId}/parent-hierarchy`,
|
|
80
|
+
auth
|
|
81
|
+
});
|
|
82
|
+
}
|
|
58
83
|
};
|
|
59
84
|
|
|
60
85
|
export { CompaniesService };
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-QQMLN76U.js.map
|
|
87
|
+
//# sourceMappingURL=chunk-QQMLN76U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/companies.ts"],"names":[],"mappings":"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","file":"chunk-QQMLN76U.js","sourcesContent":["import type { ClientContext } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport type {\n LegalEntity,\n LegalEntityCreate,\n LegalEntityUpdate,\n} from \"../generated/customer-management\";\n\n/** Body for `companies.search` — an Emporix `q`-syntax filter. */\nexport type LegalEntitySearchInput = { q?: string };\n\n/**\n * Storefront-customer access to Legal Entities.\n *\n * `listMine`/`get` require `customermanagement.legalentity_read_own` on the\n * customer token. `create`/`update`/`delete` require the corresponding\n * `_manage` scopes — typically only granted to Admin-group customers; a 403\n * surfaces as `EmporixInsufficientScopeError`.\n */\nexport class CompaniesService {\n static readonly channel = \"customer-management\" as const;\n constructor(private readonly ctx: ClientContext) {}\n\n private base(): string {\n return `/customer-management/${this.ctx.tenant}/legal-entities`;\n }\n\n /** Lists the legal entities the calling customer is assigned to. */\n async listMine(auth: AuthContext): Promise<LegalEntity[]> {\n return this.ctx.http.request<LegalEntity[]>({\n method: \"GET\",\n path: this.base(),\n auth,\n });\n }\n\n /** Fetches a single legal entity by id. */\n async get(legalEntityId: string, auth: AuthContext): Promise<LegalEntity> {\n return this.ctx.http.request<LegalEntity>({\n method: \"GET\",\n path: `${this.base()}/${legalEntityId}`,\n auth,\n });\n }\n\n /** Creates a legal entity. Requires `customermanagement.legalentity_manage`. */\n async create(input: LegalEntityCreate, auth: AuthContext): Promise<{ id: string }> {\n return this.ctx.http.request<{ id: string }>({\n method: \"POST\",\n path: this.base(),\n auth,\n body: input,\n });\n }\n\n /**\n * Updates a legal entity via `PUT …/legal-entities/{id}` (upsert / full\n * replace). The live API rejects `PATCH` on this path with 405; send the\n * complete entity, as the server replaces the resource. The body stays typed\n * as a partial of `LegalEntityUpdate` for backward compatibility.\n */\n async update(\n legalEntityId: string,\n patch: Partial<LegalEntityUpdate>,\n auth: AuthContext,\n ): Promise<LegalEntity> {\n return this.ctx.http.request<LegalEntity>({\n method: \"PUT\",\n path: `${this.base()}/${legalEntityId}`,\n auth,\n body: patch,\n });\n }\n\n /** Deletes a legal entity (async cascade on the server). */\n async delete(legalEntityId: string, auth: AuthContext): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${legalEntityId}`,\n auth,\n });\n }\n\n /**\n * Searches legal entities via `POST /legal-entities/search` with an Emporix\n * `q`-syntax filter body. Requires the same read scope as {@link listMine}.\n */\n async search(query: LegalEntitySearchInput, auth: AuthContext): Promise<LegalEntity[]> {\n return this.ctx.http.request<LegalEntity[]>({\n method: \"POST\",\n path: `${this.base()}/search`,\n auth,\n body: query,\n idempotent: true, // pure read over POST — safe to replay on 5xx/429\n });\n }\n\n /**\n * Retrieves a legal entity's chain of parent entities\n * (`GET /legal-entities/{id}/parent-hierarchy`).\n */\n async parentHierarchy(legalEntityId: string, auth: AuthContext): Promise<LegalEntity[]> {\n return this.ctx.http.request<LegalEntity[]>({\n method: \"GET\",\n path: `${this.base()}/${legalEntityId}/parent-hierarchy`,\n auth,\n });\n }\n}\n"]}
|