@contio/partner-sdk 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +123 -9
  3. package/dist/auth/index.d.ts +3 -0
  4. package/dist/auth/index.d.ts.map +1 -0
  5. package/dist/auth/index.js +8 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/oauth.d.ts +4 -1
  8. package/dist/auth/oauth.d.ts.map +1 -1
  9. package/dist/auth/oauth.js +19 -15
  10. package/dist/auth/oauth.js.map +1 -1
  11. package/dist/client/admin.d.ts +1 -1
  12. package/dist/client/admin.d.ts.map +1 -1
  13. package/dist/client/admin.js +0 -3
  14. package/dist/client/admin.js.map +1 -1
  15. package/dist/client/base.d.ts +14 -6
  16. package/dist/client/base.d.ts.map +1 -1
  17. package/dist/client/base.js +60 -16
  18. package/dist/client/base.js.map +1 -1
  19. package/dist/client/user.d.ts +30 -13
  20. package/dist/client/user.d.ts.map +1 -1
  21. package/dist/client/user.js +101 -22
  22. package/dist/client/user.js.map +1 -1
  23. package/dist/esm/auth/apiKey.js +27 -0
  24. package/dist/esm/auth/apiKey.js.map +1 -0
  25. package/dist/esm/auth/index.js +3 -0
  26. package/dist/esm/auth/index.js.map +1 -0
  27. package/dist/esm/auth/oauth.js +256 -0
  28. package/dist/esm/auth/oauth.js.map +1 -0
  29. package/dist/esm/client/admin.js +90 -0
  30. package/dist/esm/client/admin.js.map +1 -0
  31. package/dist/esm/client/base.js +142 -0
  32. package/dist/esm/client/base.js.map +1 -0
  33. package/dist/esm/client/user.js +137 -0
  34. package/dist/esm/client/user.js.map +1 -0
  35. package/dist/esm/generated/api-types.js +2 -0
  36. package/dist/esm/generated/api-types.js.map +1 -0
  37. package/dist/esm/generated/index.js +2 -0
  38. package/dist/esm/generated/index.js.map +1 -0
  39. package/dist/esm/index.js +65 -0
  40. package/dist/esm/index.js.map +1 -0
  41. package/dist/esm/models/actionItems.js +2 -0
  42. package/dist/esm/models/actionItems.js.map +1 -0
  43. package/dist/esm/models/agendaItems.js +2 -0
  44. package/dist/esm/models/agendaItems.js.map +1 -0
  45. package/dist/esm/models/auth.js +2 -0
  46. package/dist/esm/models/auth.js.map +1 -0
  47. package/dist/esm/models/calendar.js +2 -0
  48. package/dist/esm/models/calendar.js.map +1 -0
  49. package/dist/esm/models/credentials.js +2 -0
  50. package/dist/esm/models/credentials.js.map +1 -0
  51. package/dist/esm/models/idp.js +4 -0
  52. package/dist/esm/models/idp.js.map +1 -0
  53. package/dist/esm/models/index.js +10 -0
  54. package/dist/esm/models/index.js.map +1 -0
  55. package/dist/esm/models/meetings.js +2 -0
  56. package/dist/esm/models/meetings.js.map +1 -0
  57. package/dist/esm/models/participants.js +2 -0
  58. package/dist/esm/models/participants.js.map +1 -0
  59. package/dist/esm/models/workflows.js +2 -0
  60. package/dist/esm/models/workflows.js.map +1 -0
  61. package/dist/esm/sso.js +17 -0
  62. package/dist/esm/sso.js.map +1 -0
  63. package/dist/esm/webhooks/express.js +64 -0
  64. package/dist/esm/webhooks/express.js.map +1 -0
  65. package/dist/esm/webhooks/handler.js +36 -0
  66. package/dist/esm/webhooks/handler.js.map +1 -0
  67. package/dist/esm/webhooks/index.js +6 -0
  68. package/dist/esm/webhooks/index.js.map +1 -0
  69. package/dist/esm/webhooks/types.js +12 -0
  70. package/dist/esm/webhooks/types.js.map +1 -0
  71. package/dist/esm/webhooks/verifier.js +75 -0
  72. package/dist/esm/webhooks/verifier.js.map +1 -0
  73. package/dist/generated/api-types.d.ts +158 -2
  74. package/dist/generated/api-types.d.ts.map +1 -1
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/models/actionItems.d.ts +12 -5
  80. package/dist/models/actionItems.d.ts.map +1 -1
  81. package/dist/models/agendaItems.d.ts +40 -0
  82. package/dist/models/agendaItems.d.ts.map +1 -0
  83. package/dist/models/agendaItems.js +3 -0
  84. package/dist/models/agendaItems.js.map +1 -0
  85. package/dist/models/auth.d.ts +2 -0
  86. package/dist/models/auth.d.ts.map +1 -1
  87. package/dist/models/calendar.d.ts +45 -0
  88. package/dist/models/calendar.d.ts.map +1 -0
  89. package/dist/models/calendar.js +3 -0
  90. package/dist/models/calendar.js.map +1 -0
  91. package/dist/models/credentials.d.ts +1 -1
  92. package/dist/models/credentials.d.ts.map +1 -1
  93. package/dist/models/index.d.ts +3 -0
  94. package/dist/models/index.d.ts.map +1 -1
  95. package/dist/models/index.js +3 -0
  96. package/dist/models/index.js.map +1 -1
  97. package/dist/models/meetings.d.ts +1 -0
  98. package/dist/models/meetings.d.ts.map +1 -1
  99. package/dist/models/participants.d.ts +18 -0
  100. package/dist/models/participants.d.ts.map +1 -0
  101. package/dist/models/participants.js +3 -0
  102. package/dist/models/participants.js.map +1 -0
  103. package/dist/models/workflows.d.ts +2 -2
  104. package/dist/models/workflows.d.ts.map +1 -1
  105. package/dist/webhooks/express.d.ts +16 -0
  106. package/dist/webhooks/express.d.ts.map +1 -0
  107. package/dist/webhooks/express.js +68 -0
  108. package/dist/webhooks/express.js.map +1 -0
  109. package/dist/webhooks/handler.d.ts +24 -0
  110. package/dist/webhooks/handler.d.ts.map +1 -0
  111. package/dist/webhooks/handler.js +40 -0
  112. package/dist/webhooks/handler.js.map +1 -0
  113. package/dist/webhooks/index.d.ts +2 -0
  114. package/dist/webhooks/index.d.ts.map +1 -1
  115. package/dist/webhooks/index.js +6 -1
  116. package/dist/webhooks/index.js.map +1 -1
  117. package/dist/webhooks/types.d.ts +103 -12
  118. package/dist/webhooks/types.d.ts.map +1 -1
  119. package/dist/webhooks/types.js +7 -0
  120. package/dist/webhooks/types.js.map +1 -1
  121. package/dist/webhooks/verifier.d.ts.map +1 -1
  122. package/dist/webhooks/verifier.js +4 -1
  123. package/dist/webhooks/verifier.js.map +1 -1
  124. package/package.json +37 -4
@@ -0,0 +1,256 @@
1
+ import axios from 'axios';
2
+ import https from 'https';
3
+ import qs from 'qs';
4
+ export class OAuthClient {
5
+ constructor(config) {
6
+ this.config = {
7
+ authorizationUrl: 'https://auth.contio.ai/oauth2/authorize',
8
+ tokenUrl: 'https://auth.contio.ai/oauth2/token',
9
+ ...config,
10
+ };
11
+ const axiosConfig = {
12
+ headers: {
13
+ 'Content-Type': 'application/x-www-form-urlencoded',
14
+ },
15
+ };
16
+ const isLocalDev = this.config.tokenUrl?.includes('.lan.contio.ai') ||
17
+ this.config.tokenUrl?.includes('localhost') ||
18
+ this.config.tokenUrl?.includes('local.');
19
+ if (isLocalDev) {
20
+ axiosConfig.httpsAgent = new https.Agent({
21
+ rejectUnauthorized: false
22
+ });
23
+ }
24
+ this.axiosInstance = axios.create(axiosConfig);
25
+ }
26
+ getAuthorizationUrl(state, options) {
27
+ const params = new URLSearchParams({
28
+ client_id: this.config.clientId,
29
+ redirect_uri: this.config.redirectUri,
30
+ response_type: 'code',
31
+ scope: this.config.scope?.join(' ') || 'openid profile meetings:read meetings:write',
32
+ ...(state && { state }),
33
+ ...(options?.loginHint && { login_hint: options.loginHint }),
34
+ });
35
+ return `${this.config.authorizationUrl}?${params.toString()}`;
36
+ }
37
+ async exchangeCodeForToken(code) {
38
+ try {
39
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
40
+ const response = await this.axiosInstance.post(this.config.tokenUrl || 'https://auth.contio.ai/oauth2/token', qs.stringify({
41
+ grant_type: 'authorization_code',
42
+ code,
43
+ redirect_uri: this.config.redirectUri,
44
+ }), {
45
+ headers: {
46
+ 'Authorization': `Basic ${auth}`,
47
+ 'Content-Type': 'application/x-www-form-urlencoded',
48
+ }
49
+ });
50
+ this.tokens = this.parseTokenResponse(response.data);
51
+ return this.tokens;
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : 'Unknown error';
55
+ throw new Error(`Failed to exchange code for token: ${message}`);
56
+ }
57
+ }
58
+ async refreshAccessToken(refreshToken) {
59
+ const tokenToUse = refreshToken || this.tokens?.refreshToken;
60
+ if (!tokenToUse) {
61
+ throw new Error('No refresh token available');
62
+ }
63
+ try {
64
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
65
+ const response = await this.axiosInstance.post(this.config.tokenUrl || 'https://auth.contio.ai/oauth2/token', qs.stringify({
66
+ grant_type: 'refresh_token',
67
+ refresh_token: tokenToUse,
68
+ }), {
69
+ headers: {
70
+ 'Authorization': `Basic ${auth}`,
71
+ 'Content-Type': 'application/x-www-form-urlencoded',
72
+ }
73
+ });
74
+ this.tokens = this.parseTokenResponse(response.data);
75
+ return this.tokens;
76
+ }
77
+ catch (error) {
78
+ const message = error instanceof Error ? error.message : 'Unknown error';
79
+ throw new Error(`Failed to refresh token: ${message}`);
80
+ }
81
+ }
82
+ async getClientCredentialsToken(scope) {
83
+ try {
84
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
85
+ const response = await this.axiosInstance.post(this.config.tokenUrl || 'https://auth.contio.ai/oauth2/token', qs.stringify({
86
+ grant_type: 'client_credentials',
87
+ scope: scope?.join(' ') || this.config.scope?.join(' '),
88
+ }), {
89
+ headers: {
90
+ 'Authorization': `Basic ${auth}`,
91
+ 'Content-Type': 'application/x-www-form-urlencoded',
92
+ }
93
+ });
94
+ this.tokens = this.parseTokenResponse(response.data);
95
+ return this.tokens;
96
+ }
97
+ catch (error) {
98
+ throw new Error(`Failed to get client credentials token: ${error instanceof Error ? error.message : 'Unknown error'}`);
99
+ }
100
+ }
101
+ async revokeToken(token, tokenType = 'access_token') {
102
+ try {
103
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
104
+ await this.axiosInstance.post(`${this.config.tokenUrl?.replace('/token', '/revoke')}`, qs.stringify({
105
+ token,
106
+ token_type_hint: tokenType,
107
+ }), {
108
+ headers: {
109
+ 'Authorization': `Basic ${auth}`,
110
+ 'Content-Type': 'application/x-www-form-urlencoded',
111
+ }
112
+ });
113
+ }
114
+ catch (error) {
115
+ throw new Error(`Failed to revoke token: ${error instanceof Error ? error.message : 'Unknown error'}`);
116
+ }
117
+ }
118
+ getAccessToken() {
119
+ return this.tokens?.accessToken;
120
+ }
121
+ setTokens(tokens) {
122
+ this.tokens = tokens;
123
+ }
124
+ isTokenExpired() {
125
+ if (!this.tokens?.expiresAt) {
126
+ return false;
127
+ }
128
+ return new Date() >= this.tokens.expiresAt;
129
+ }
130
+ async initiatePartnerAuth(email, name) {
131
+ try {
132
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
133
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/auth/initiate')}`, {
134
+ client_id: this.config.clientId,
135
+ email,
136
+ ...(name && { name }),
137
+ }, {
138
+ headers: {
139
+ 'Authorization': `Basic ${auth}`,
140
+ 'Content-Type': 'application/json',
141
+ }
142
+ });
143
+ return response.data;
144
+ }
145
+ catch (error) {
146
+ throw new Error(`Failed to initiate partner authentication: ${error instanceof Error ? error.message : 'Unknown error'}`);
147
+ }
148
+ }
149
+ async verifyPartnerAuth(email, code, session) {
150
+ try {
151
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
152
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/auth/verify')}`, {
153
+ client_id: this.config.clientId,
154
+ email,
155
+ code,
156
+ session,
157
+ }, {
158
+ headers: {
159
+ 'Authorization': `Basic ${auth}`,
160
+ 'Content-Type': 'application/json',
161
+ }
162
+ });
163
+ return response.data;
164
+ }
165
+ catch (error) {
166
+ throw new Error(`Failed to verify partner authentication: ${error instanceof Error ? error.message : 'Unknown error'}`);
167
+ }
168
+ }
169
+ async checkConsent(email) {
170
+ try {
171
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
172
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/check-consent')}`, {
173
+ client_id: this.config.clientId,
174
+ email,
175
+ scope: this.config.scope?.join(' ') || 'openid profile meetings:read meetings:write',
176
+ }, {
177
+ headers: {
178
+ 'Authorization': `Basic ${auth}`,
179
+ 'Content-Type': 'application/json',
180
+ }
181
+ });
182
+ return response.data;
183
+ }
184
+ catch (error) {
185
+ throw new Error(`Failed to check consent: ${error instanceof Error ? error.message : 'Unknown error'}`);
186
+ }
187
+ }
188
+ async getPartnerInfo() {
189
+ try {
190
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', `/v1/partner/info/${this.config.clientId}/public`)}`);
191
+ return response.data;
192
+ }
193
+ catch (error) {
194
+ throw new Error(`Failed to get partner info: ${error instanceof Error ? error.message : 'Unknown error'}`);
195
+ }
196
+ }
197
+ async getAvailableScopes() {
198
+ try {
199
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
200
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/scopes')}`, {
201
+ headers: {
202
+ 'Authorization': `Basic ${auth}`,
203
+ }
204
+ });
205
+ return response.data.scopes || [];
206
+ }
207
+ catch (error) {
208
+ throw new Error(`Failed to get available scopes: ${error instanceof Error ? error.message : 'Unknown error'}`);
209
+ }
210
+ }
211
+ async introspectToken(token) {
212
+ try {
213
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
214
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/introspect')}`, qs.stringify({ token }), {
215
+ headers: {
216
+ 'Authorization': `Basic ${auth}`,
217
+ 'Content-Type': 'application/x-www-form-urlencoded',
218
+ }
219
+ });
220
+ return response.data;
221
+ }
222
+ catch (error) {
223
+ throw new Error(`Failed to introspect token: ${error instanceof Error ? error.message : 'Unknown error'}`);
224
+ }
225
+ }
226
+ async getUserInfo(accessToken) {
227
+ const tokenToUse = accessToken || this.tokens?.accessToken;
228
+ if (!tokenToUse) {
229
+ throw new Error('No access token available');
230
+ }
231
+ try {
232
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/userInfo')}`, {
233
+ headers: {
234
+ 'Authorization': `Bearer ${tokenToUse}`,
235
+ }
236
+ });
237
+ return response.data;
238
+ }
239
+ catch (error) {
240
+ throw new Error(`Failed to get user info: ${error instanceof Error ? error.message : 'Unknown error'}`);
241
+ }
242
+ }
243
+ parseTokenResponse(response) {
244
+ const expiresAt = response.expires_in
245
+ ? new Date(Date.now() + response.expires_in * 1000)
246
+ : undefined;
247
+ return {
248
+ accessToken: response.access_token,
249
+ refreshToken: response.refresh_token,
250
+ idToken: response.id_token,
251
+ expiresAt,
252
+ scope: response.scope?.split(' '),
253
+ };
254
+ }
255
+ }
256
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { BaseClient } from './base';
2
+ export class PartnerAdminClient extends BaseClient {
3
+ constructor(apiKeyClient, config) {
4
+ const baseURL = config?.baseURL || 'https://api.contio.ai';
5
+ const finalURL = `${baseURL}/v1/partner/admin`;
6
+ super({
7
+ ...config,
8
+ baseURL: finalURL,
9
+ });
10
+ this.apiKeyClient = apiKeyClient;
11
+ }
12
+ addAuthHeaders(config) {
13
+ config.headers = config.headers || {};
14
+ Object.assign(config.headers, this.apiKeyClient.getHeaders());
15
+ return config;
16
+ }
17
+ async createWorkflow(data) {
18
+ return this.post('/workflows', data);
19
+ }
20
+ async getWorkflows(params) {
21
+ return this.get('/workflows', params);
22
+ }
23
+ async getWorkflow(workflowId) {
24
+ return this.get(`/workflows/${workflowId}`);
25
+ }
26
+ async updateWorkflow(workflowId, data) {
27
+ return this.put(`/workflows/${workflowId}`, data);
28
+ }
29
+ async deleteWorkflow(workflowId) {
30
+ await this.delete(`/workflows/${workflowId}`);
31
+ }
32
+ async getApp() {
33
+ return this.get('/app');
34
+ }
35
+ async updateApp(data) {
36
+ return this.put('/app', data);
37
+ }
38
+ async updateAppStatus(data) {
39
+ return this.put('/app/status', data);
40
+ }
41
+ async getWebhookDeliveries(params) {
42
+ return this.get('/webhook-deliveries', params);
43
+ }
44
+ async getWebhookDelivery(deliveryId) {
45
+ return this.get(`/webhook-deliveries/${deliveryId}`);
46
+ }
47
+ async retryWebhookDelivery(deliveryId) {
48
+ return this.post(`/webhook-deliveries/${deliveryId}/retry`);
49
+ }
50
+ async getUserConnections(params) {
51
+ return this.get('/connections', params);
52
+ }
53
+ async getUserConnection(connectionId) {
54
+ return this.get(`/connections/${connectionId}`);
55
+ }
56
+ async revokeUserConnection(connectionId) {
57
+ await this.delete(`/connections/${connectionId}`);
58
+ }
59
+ async getCredentialStatus() {
60
+ return this.get('/credentials');
61
+ }
62
+ async rotateAPIKey(request) {
63
+ return this.post('/credentials/api-key/rotate', request);
64
+ }
65
+ async rotateWebhookSecret(request) {
66
+ return this.post('/credentials/webhook-secret/rotate', request);
67
+ }
68
+ async rotateClientSecret(request) {
69
+ return this.post('/credentials/client-secret/rotate', request);
70
+ }
71
+ async rollbackCredential(credentialType, request) {
72
+ await this.post(`/credentials/${credentialType}/rollback`, request);
73
+ }
74
+ async getCredentialHistory(params) {
75
+ return this.get('/credentials/history', params);
76
+ }
77
+ async createIdPConfig(data) {
78
+ return this.post('/idp', data);
79
+ }
80
+ async getIdPConfig() {
81
+ return this.get('/idp');
82
+ }
83
+ async updateIdPConfig(data) {
84
+ return this.put('/idp', data);
85
+ }
86
+ async deleteIdPConfig() {
87
+ await this.delete('/idp');
88
+ }
89
+ }
90
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/client/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import axios from 'axios';
2
+ import https from 'https';
3
+ export const SDK_VERSION = '1.3.0';
4
+ export const TIMEZONE_HEADER = 'X-Client-Timezone';
5
+ export class ContioAPIError extends Error {
6
+ constructor(message, code, statusCode, response) {
7
+ super(message);
8
+ this.name = 'ContioAPIError';
9
+ this.code = code;
10
+ this.statusCode = statusCode;
11
+ this.response = response;
12
+ }
13
+ }
14
+ export class BaseClient {
15
+ constructor(config = {}) {
16
+ this.config = {
17
+ baseURL: 'https://api.contio.ai',
18
+ timeout: 30000,
19
+ retries: 3,
20
+ retryDelay: 1000,
21
+ ...config,
22
+ };
23
+ const axiosConfig = {
24
+ baseURL: this.config.baseURL,
25
+ timeout: this.config.timeout,
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ 'User-Agent': `@contio/partner-sdk/${SDK_VERSION}`,
29
+ },
30
+ };
31
+ const isLocalDev = this.config.baseURL?.includes('.lan.contio.ai') ||
32
+ this.config.baseURL?.includes('localhost') ||
33
+ this.config.baseURL?.includes('local.');
34
+ if (isLocalDev) {
35
+ axiosConfig.httpsAgent = new https.Agent({
36
+ rejectUnauthorized: false
37
+ });
38
+ }
39
+ if (this.config.defaultTimezone) {
40
+ axiosConfig.headers[TIMEZONE_HEADER] = this.config.defaultTimezone;
41
+ }
42
+ this.axiosInstance = axios.create(axiosConfig);
43
+ this.axiosInstance.interceptors.request.use(async (config) => this.addAuthHeaders(config), (error) => Promise.reject(error));
44
+ this.axiosInstance.interceptors.response.use((response) => response, (error) => this.handleError(error));
45
+ }
46
+ buildRequestConfig(options, baseConfig) {
47
+ const config = { ...baseConfig };
48
+ if (options?.timezone) {
49
+ config.headers = {
50
+ ...config.headers,
51
+ [TIMEZONE_HEADER]: options.timezone,
52
+ };
53
+ }
54
+ return config;
55
+ }
56
+ async get(path, params, options) {
57
+ const config = this.buildRequestConfig(options, { params });
58
+ const response = await this.retryRequest(() => this.axiosInstance.get(path, config));
59
+ return response.data;
60
+ }
61
+ async post(path, data, options) {
62
+ const config = this.buildRequestConfig(options);
63
+ const response = await this.retryRequest(() => this.axiosInstance.post(path, data, config));
64
+ return response.data;
65
+ }
66
+ async put(path, data, options) {
67
+ const config = this.buildRequestConfig(options);
68
+ const response = await this.retryRequest(() => this.axiosInstance.put(path, data, config));
69
+ return response.data;
70
+ }
71
+ async patch(path, data, options) {
72
+ const config = this.buildRequestConfig(options);
73
+ const response = await this.retryRequest(() => this.axiosInstance.patch(path, data, config));
74
+ return response.data;
75
+ }
76
+ async delete(path, options) {
77
+ const config = this.buildRequestConfig(options);
78
+ const response = await this.retryRequest(() => this.axiosInstance.delete(path, config));
79
+ return response.data;
80
+ }
81
+ async retryRequest(request) {
82
+ let lastError;
83
+ for (let i = 0; i <= (this.config.retries ?? 3); i++) {
84
+ try {
85
+ return await request();
86
+ }
87
+ catch (error) {
88
+ lastError = error;
89
+ if (axios.isAxiosError(error) && error.response?.status) {
90
+ const status = error.response.status;
91
+ if (status === 429) {
92
+ if (i === this.config.retries) {
93
+ throw error;
94
+ }
95
+ const retryAfter = this.parseRetryAfter(error.response.headers['retry-after']);
96
+ await this.delay(retryAfter ?? ((this.config.retryDelay ?? 1000) * Math.pow(2, i)));
97
+ continue;
98
+ }
99
+ if (status >= 400 && status < 500) {
100
+ throw error;
101
+ }
102
+ }
103
+ if (i === this.config.retries) {
104
+ throw error;
105
+ }
106
+ await this.delay(((this.config.retryDelay ?? 1000)) * Math.pow(2, i));
107
+ }
108
+ }
109
+ throw lastError;
110
+ }
111
+ parseRetryAfter(header) {
112
+ if (!header)
113
+ return undefined;
114
+ const seconds = parseInt(header, 10);
115
+ if (!isNaN(seconds)) {
116
+ return seconds * 1000;
117
+ }
118
+ const date = Date.parse(header);
119
+ if (!isNaN(date)) {
120
+ return Math.max(0, date - Date.now());
121
+ }
122
+ return undefined;
123
+ }
124
+ delay(ms) {
125
+ return new Promise((resolve) => setTimeout(resolve, ms));
126
+ }
127
+ handleError(error) {
128
+ if (error.response) {
129
+ const errorData = error.response.data;
130
+ const message = errorData.error || errorData.message || 'An error occurred';
131
+ const code = errorData.code || 'unknown_error';
132
+ throw new ContioAPIError(message, code, error.response.status, errorData);
133
+ }
134
+ else if (error.request) {
135
+ throw new ContioAPIError('No response received from server', 'network_error');
136
+ }
137
+ else {
138
+ throw new ContioAPIError(error.message || 'An unknown error occurred', 'request_error');
139
+ }
140
+ }
141
+ }
142
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/client/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { BaseClient } from './base';
2
+ export class PartnerUserClient extends BaseClient {
3
+ constructor(oauthClient, config) {
4
+ const baseURL = config?.baseURL || 'https://api.contio.ai';
5
+ const finalURL = `${baseURL}/v1/partner/user`;
6
+ super({
7
+ ...config,
8
+ baseURL: finalURL,
9
+ });
10
+ this.oauthClient = oauthClient;
11
+ }
12
+ async addAuthHeaders(config) {
13
+ if (this.oauthClient.isTokenExpired()) {
14
+ try {
15
+ await this.oauthClient.refreshAccessToken();
16
+ }
17
+ catch (_error) {
18
+ }
19
+ }
20
+ const token = this.oauthClient.getAccessToken();
21
+ if (!token) {
22
+ throw new Error('No access token available. Please authenticate first.');
23
+ }
24
+ config.headers = config.headers || {};
25
+ config.headers.Authorization = `Bearer ${token}`;
26
+ return config;
27
+ }
28
+ async getMeetings(params, options) {
29
+ return this.get('/meetings', params, options);
30
+ }
31
+ async getAllMeetings(params, options) {
32
+ const allItems = [];
33
+ const pageSize = 100;
34
+ let offset = 0;
35
+ let total = 0;
36
+ do {
37
+ const response = await this.getMeetings({ ...params, limit: pageSize, offset }, options);
38
+ allItems.push(...response.items);
39
+ total = response.total;
40
+ offset += pageSize;
41
+ } while (offset < total);
42
+ return allItems;
43
+ }
44
+ async getMeeting(meetingId, options) {
45
+ const response = await this.get(`/meetings/${meetingId}`, undefined, options);
46
+ if (response.redirect_to_meeting_id) {
47
+ return this.get(`/meetings/${response.redirect_to_meeting_id}`, undefined, options);
48
+ }
49
+ return response;
50
+ }
51
+ async createMeeting(data, options) {
52
+ return this.post('/meetings', data, options);
53
+ }
54
+ async updateMeeting(meetingId, data, options) {
55
+ return this.patch(`/meetings/${meetingId}`, data, options);
56
+ }
57
+ async getActionItems(params, options) {
58
+ return this.get('/action-items', params, options);
59
+ }
60
+ async getAllActionItems(params, options) {
61
+ const allItems = [];
62
+ const pageSize = 100;
63
+ let offset = 0;
64
+ let total = 0;
65
+ do {
66
+ const response = await this.getActionItems({ ...params, limit: pageSize, offset }, options);
67
+ allItems.push(...response.items);
68
+ total = response.total;
69
+ offset += pageSize;
70
+ } while (offset < total);
71
+ return allItems;
72
+ }
73
+ async getActionItem(actionItemId, options) {
74
+ return this.get(`/action-items/${actionItemId}`, undefined, options);
75
+ }
76
+ async createActionItem(data, options) {
77
+ return this.post('/action-items', data, options);
78
+ }
79
+ async updateActionItem(actionItemId, data, options) {
80
+ return this.put(`/action-items/${actionItemId}`, data, options);
81
+ }
82
+ async deleteActionItem(actionItemId, options) {
83
+ await this.delete(`/action-items/${actionItemId}`, options);
84
+ }
85
+ async getUserProfile(options) {
86
+ return this.get('/profile', undefined, options);
87
+ }
88
+ async getCalendarEvents(params, options) {
89
+ return this.get('/calendar/events', params, options);
90
+ }
91
+ async getAllCalendarEvents(params, options) {
92
+ const allItems = [];
93
+ const pageSize = 100;
94
+ let offset = 0;
95
+ let total = 0;
96
+ do {
97
+ const response = await this.getCalendarEvents({ ...params, limit: pageSize, offset }, options);
98
+ allItems.push(...(response.items || []));
99
+ total = response.total || 0;
100
+ offset += pageSize;
101
+ } while (offset < total);
102
+ return allItems;
103
+ }
104
+ async linkCalendarEvent(meetingId, data, options) {
105
+ return this.post(`/meetings/${meetingId}/calendar/link`, data, options);
106
+ }
107
+ async createMeetingFromCalendarEvent(data, options) {
108
+ return this.post('/calendar/events/meeting', data, options);
109
+ }
110
+ async getMeetingParticipants(meetingId, options) {
111
+ return this.get(`/meetings/${meetingId}/participants`, undefined, options);
112
+ }
113
+ async addMeetingParticipant(meetingId, data, options) {
114
+ return this.post(`/meetings/${meetingId}/participants`, data, options);
115
+ }
116
+ async removeMeetingParticipant(meetingId, participantId, options) {
117
+ await this.delete(`/meetings/${meetingId}/participants/${participantId}`, options);
118
+ }
119
+ async getMeetingAgendaItems(meetingId, options) {
120
+ return this.get(`/meetings/${meetingId}/agenda-items`, undefined, options);
121
+ }
122
+ async createAgendaItem(meetingId, data, options) {
123
+ return this.post(`/meetings/${meetingId}/agenda-items`, data, options);
124
+ }
125
+ async updateAgendaItem(meetingId, itemId, data, options) {
126
+ return this.put(`/meetings/${meetingId}/agenda-items/${itemId}`, data, options);
127
+ }
128
+ async deleteAgendaItem(meetingId, itemId, options) {
129
+ await this.delete(`/meetings/${meetingId}/agenda-items/${itemId}`, options);
130
+ }
131
+ async ensureValidToken() {
132
+ if (this.oauthClient.isTokenExpired()) {
133
+ await this.oauthClient.refreshAccessToken();
134
+ }
135
+ }
136
+ }
137
+ //# sourceMappingURL=user.js.map