@stackfactor/client-api 1.2.6 → 1.2.8
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/cjs/lib/channelProgrammes.d.ts +134 -0
- package/dist/cjs/lib/channelProgrammes.d.ts.map +1 -0
- package/dist/cjs/lib/channelProgrammes.js +205 -0
- package/dist/cjs/lib/channelProgrammes.js.map +1 -0
- package/dist/cjs/lib/constants.d.ts +19 -0
- package/dist/cjs/lib/constants.d.ts.map +1 -1
- package/dist/cjs/lib/constants.js +40 -0
- package/dist/cjs/lib/constants.js.map +1 -1
- package/dist/cjs/lib/index.d.ts +2 -0
- package/dist/cjs/lib/index.d.ts.map +1 -1
- package/dist/cjs/lib/index.js +4 -2
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/partnerships.d.ts +141 -0
- package/dist/cjs/lib/partnerships.d.ts.map +1 -0
- package/dist/cjs/lib/partnerships.js +247 -0
- package/dist/cjs/lib/partnerships.js.map +1 -0
- package/dist/esm/lib/channelProgrammes.d.ts +134 -0
- package/dist/esm/lib/channelProgrammes.d.ts.map +1 -0
- package/dist/esm/lib/channelProgrammes.js +193 -0
- package/dist/esm/lib/channelProgrammes.js.map +1 -0
- package/dist/esm/lib/constants.d.ts +19 -0
- package/dist/esm/lib/constants.d.ts.map +1 -1
- package/dist/esm/lib/constants.js +40 -0
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/index.d.ts +2 -0
- package/dist/esm/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +2 -0
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/partnerships.d.ts +141 -0
- package/dist/esm/lib/partnerships.d.ts.map +1 -0
- package/dist/esm/lib/partnerships.js +234 -0
- package/dist/esm/lib/partnerships.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { client } from "./axiosClient.js";
|
|
2
|
+
// ── Vendor side ───────────────────────────────────────────────────────────────
|
|
3
|
+
/**
|
|
4
|
+
* Invite an organization to one of the calling vendor's programmes, by email.
|
|
5
|
+
*
|
|
6
|
+
* Returns success whether or not the address belongs to a StackFactor account —
|
|
7
|
+
* an address that matches nobody still produces a record that simply expires, so
|
|
8
|
+
* "they ignored me" and "no such account" are indistinguishable. This is
|
|
9
|
+
* deliberate: it stops the endpoint being used to discover who has an account.
|
|
10
|
+
* The invitation code is emailed to the invitee and is not part of the response.
|
|
11
|
+
* POST /api/v1/partnerships/invite
|
|
12
|
+
* @param {PartnerInvitationInput} data Programme, email and optional tier / seats
|
|
13
|
+
* @param {String} authToken Authentication token
|
|
14
|
+
* @returns {Promise<object>}
|
|
15
|
+
*/
|
|
16
|
+
export const invitePartner = (data, authToken) => {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const request = client.post(`/api/v1/partnerships/invite`, data, {
|
|
19
|
+
headers: { authorization: authToken },
|
|
20
|
+
});
|
|
21
|
+
request
|
|
22
|
+
.then((response) => {
|
|
23
|
+
resolve(response.data);
|
|
24
|
+
})
|
|
25
|
+
.catch((error) => {
|
|
26
|
+
reject(error);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Re-issue an open invitation's code and extend its window. The previously
|
|
32
|
+
* emailed code stops working.
|
|
33
|
+
* POST /api/v1/partnerships/resend/:id
|
|
34
|
+
* @param {String} id Partnership id
|
|
35
|
+
* @param {String} authToken Authentication token
|
|
36
|
+
* @returns {Promise<object>}
|
|
37
|
+
*/
|
|
38
|
+
export const resendInvitation = (id, authToken) => {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const request = client.post(`/api/v1/partnerships/resend/${id}`, {}, { headers: { authorization: authToken } });
|
|
41
|
+
request
|
|
42
|
+
.then((response) => {
|
|
43
|
+
resolve(response.data);
|
|
44
|
+
})
|
|
45
|
+
.catch((error) => {
|
|
46
|
+
reject(error);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Withdraw an invitation that has not been answered.
|
|
52
|
+
* POST /api/v1/partnerships/revoke/:id
|
|
53
|
+
* @param {String} id Partnership id
|
|
54
|
+
* @param {String} authToken Authentication token
|
|
55
|
+
* @returns {Promise<object>}
|
|
56
|
+
*/
|
|
57
|
+
export const revokeInvitation = (id, authToken) => {
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const request = client.post(`/api/v1/partnerships/revoke/${id}`, {}, { headers: { authorization: authToken } });
|
|
60
|
+
request
|
|
61
|
+
.then((response) => {
|
|
62
|
+
resolve(response.data);
|
|
63
|
+
})
|
|
64
|
+
.catch((error) => {
|
|
65
|
+
reject(error);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* The partnerships of the calling vendor's own programmes.
|
|
71
|
+
*
|
|
72
|
+
* Scoped to the vendor server-side: one vendor can never see a partnership
|
|
73
|
+
* belonging to another vendor's programme, so a competitor's partner list is not
|
|
74
|
+
* discoverable.
|
|
75
|
+
* POST /api/v1/partnerships/vendor
|
|
76
|
+
* @param {VendorPartnershipListParams} params Optional programme / status filters
|
|
77
|
+
* @param {String} authToken Authentication token
|
|
78
|
+
* @returns {Promise<object>}
|
|
79
|
+
*/
|
|
80
|
+
export const listVendorPartnerships = (params, authToken) => {
|
|
81
|
+
return new Promise((resolve, reject) => {
|
|
82
|
+
const request = client.post(`/api/v1/partnerships/vendor`, params, {
|
|
83
|
+
headers: { authorization: authToken },
|
|
84
|
+
});
|
|
85
|
+
request
|
|
86
|
+
.then((response) => {
|
|
87
|
+
resolve(response.data);
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
reject(error);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
// ── Partner side ──────────────────────────────────────────────────────────────
|
|
95
|
+
/**
|
|
96
|
+
* The calling tenant's own standing, across every vendor it partners with.
|
|
97
|
+
*
|
|
98
|
+
* Each row carries `termsVersionCurrent` and `termsReacceptanceRequired`. Drift
|
|
99
|
+
* is surfaced, not enforced — a partner whose vendor revised its terms keeps its
|
|
100
|
+
* catalog, and clears the flag with `reacceptTerms`.
|
|
101
|
+
* POST /api/v1/partnerships
|
|
102
|
+
* @param {PartnershipListParams} params Optional status filter
|
|
103
|
+
* @param {String} authToken Authentication token
|
|
104
|
+
* @returns {Promise<object>}
|
|
105
|
+
*/
|
|
106
|
+
export const listTenantPartnerships = (params, authToken) => {
|
|
107
|
+
return new Promise((resolve, reject) => {
|
|
108
|
+
const request = client.post(`/api/v1/partnerships`, params, {
|
|
109
|
+
headers: { authorization: authToken },
|
|
110
|
+
});
|
|
111
|
+
request
|
|
112
|
+
.then((response) => {
|
|
113
|
+
resolve(response.data);
|
|
114
|
+
})
|
|
115
|
+
.catch((error) => {
|
|
116
|
+
reject(error);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Preview the invitation a code names, so the invitee can read the programme and
|
|
122
|
+
* its terms before deciding. Reads only; nothing changes.
|
|
123
|
+
*
|
|
124
|
+
* An unknown code, a code addressed to another organization, and an expired one
|
|
125
|
+
* all fail identically, so this cannot be used to probe which codes are real.
|
|
126
|
+
* POST /api/v1/partnerships/invitation
|
|
127
|
+
* @param {String} code The invitation code the user typed
|
|
128
|
+
* @param {String} authToken Authentication token
|
|
129
|
+
* @returns {Promise<object>}
|
|
130
|
+
*/
|
|
131
|
+
export const readInvitation = (code, authToken) => {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const request = client.post(`/api/v1/partnerships/invitation`, { code }, { headers: { authorization: authToken } });
|
|
134
|
+
request
|
|
135
|
+
.then((response) => {
|
|
136
|
+
resolve(response.data);
|
|
137
|
+
})
|
|
138
|
+
.catch((error) => {
|
|
139
|
+
reject(error);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Accept an invitation on the organization's behalf.
|
|
145
|
+
*
|
|
146
|
+
* `termsVersion` must match the programme's current published terms — accepting
|
|
147
|
+
* a version that has since been revised returns 409 rather than succeeding
|
|
148
|
+
* against terms nobody agreed to.
|
|
149
|
+
* POST /api/v1/partnerships/accept
|
|
150
|
+
* @param {String} code The invitation code the user typed
|
|
151
|
+
* @param {Number} termsVersion The terms version being accepted
|
|
152
|
+
* @param {String} authToken Authentication token
|
|
153
|
+
* @returns {Promise<object>}
|
|
154
|
+
*/
|
|
155
|
+
export const acceptInvitation = (code, termsVersion, authToken) => {
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
const request = client.post(`/api/v1/partnerships/accept`, { code, termsVersion }, { headers: { authorization: authToken } });
|
|
158
|
+
request
|
|
159
|
+
.then((response) => {
|
|
160
|
+
resolve(response.data);
|
|
161
|
+
})
|
|
162
|
+
.catch((error) => {
|
|
163
|
+
reject(error);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Decline an invitation. Terminal — a change of mind is a new invitation.
|
|
169
|
+
* POST /api/v1/partnerships/decline
|
|
170
|
+
* @param {String} code The invitation code the user typed
|
|
171
|
+
* @param {String} authToken Authentication token
|
|
172
|
+
* @returns {Promise<object>}
|
|
173
|
+
*/
|
|
174
|
+
export const declineInvitation = (code, authToken) => {
|
|
175
|
+
return new Promise((resolve, reject) => {
|
|
176
|
+
const request = client.post(`/api/v1/partnerships/decline`, { code }, { headers: { authorization: authToken } });
|
|
177
|
+
request
|
|
178
|
+
.then((response) => {
|
|
179
|
+
resolve(response.data);
|
|
180
|
+
})
|
|
181
|
+
.catch((error) => {
|
|
182
|
+
reject(error);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Accept a revised set of terms on an already-active partnership, clearing the
|
|
188
|
+
* `termsReacceptanceRequired` flag the listing raises.
|
|
189
|
+
* POST /api/v1/partnerships/reaccept/:id
|
|
190
|
+
* @param {String} id Partnership id
|
|
191
|
+
* @param {Number} termsVersion The terms version being accepted
|
|
192
|
+
* @param {String} authToken Authentication token
|
|
193
|
+
* @returns {Promise<object>}
|
|
194
|
+
*/
|
|
195
|
+
export const reacceptTerms = (id, termsVersion, authToken) => {
|
|
196
|
+
return new Promise((resolve, reject) => {
|
|
197
|
+
const request = client.post(`/api/v1/partnerships/reaccept/${id}`, { termsVersion }, { headers: { authorization: authToken } });
|
|
198
|
+
request
|
|
199
|
+
.then((response) => {
|
|
200
|
+
resolve(response.data);
|
|
201
|
+
})
|
|
202
|
+
.catch((error) => {
|
|
203
|
+
reject(error);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
};
|
|
207
|
+
// ── Either side ───────────────────────────────────────────────────────────────
|
|
208
|
+
/**
|
|
209
|
+
* End an active partnership — the vendor removing a partner, or the partner
|
|
210
|
+
* leaving. The caller must be on one end of the edge.
|
|
211
|
+
*
|
|
212
|
+
* Granted content stops resolving on the next read. The record is kept rather
|
|
213
|
+
* than deleted: roll-up reporting freezes at the final state, and credentials
|
|
214
|
+
* already earned stay valid to their normal expiry. The partner's own billing
|
|
215
|
+
* plan, content and people are untouched.
|
|
216
|
+
* POST /api/v1/partnerships/terminate/:id
|
|
217
|
+
* @param {String} id Partnership id
|
|
218
|
+
* @param {String} reason Free-text reason, retained on the record
|
|
219
|
+
* @param {String} authToken Authentication token
|
|
220
|
+
* @returns {Promise<object>}
|
|
221
|
+
*/
|
|
222
|
+
export const terminatePartnership = (id, reason, authToken) => {
|
|
223
|
+
return new Promise((resolve, reject) => {
|
|
224
|
+
const request = client.post(`/api/v1/partnerships/terminate/${id}`, { reason }, { headers: { authorization: authToken } });
|
|
225
|
+
request
|
|
226
|
+
.then((response) => {
|
|
227
|
+
resolve(response.data);
|
|
228
|
+
})
|
|
229
|
+
.catch((error) => {
|
|
230
|
+
reject(error);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=partnerships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partnerships.js","sourceRoot":"","sources":["../../../src/lib/partnerships.ts"],"names":[],"mappings":"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"}
|