@contio/partner-sdk 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +105 -0
  2. package/dist/auth/apiKey.d.ts +13 -0
  3. package/dist/auth/apiKey.d.ts.map +1 -0
  4. package/dist/auth/apiKey.js +31 -0
  5. package/dist/auth/apiKey.js.map +1 -0
  6. package/dist/auth/oauth.d.ts +52 -0
  7. package/dist/auth/oauth.d.ts.map +1 -0
  8. package/dist/auth/oauth.js +259 -0
  9. package/dist/auth/oauth.js.map +1 -0
  10. package/dist/client/admin.d.ts +33 -0
  11. package/dist/client/admin.d.ts.map +1 -0
  12. package/dist/client/admin.js +85 -0
  13. package/dist/client/admin.js.map +1 -0
  14. package/dist/client/base.d.ts +29 -0
  15. package/dist/client/base.d.ts.map +1 -0
  16. package/dist/client/base.js +106 -0
  17. package/dist/client/base.js.map +1 -0
  18. package/dist/client/user.d.ts +21 -0
  19. package/dist/client/user.d.ts.map +1 -0
  20. package/dist/client/user.js +62 -0
  21. package/dist/client/user.js.map +1 -0
  22. package/dist/index.d.ts +49 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +89 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/models/actionItems.d.ts +39 -0
  27. package/dist/models/actionItems.d.ts.map +1 -0
  28. package/dist/models/actionItems.js +3 -0
  29. package/dist/models/actionItems.js.map +1 -0
  30. package/dist/models/auth.d.ts +37 -0
  31. package/dist/models/auth.d.ts.map +1 -0
  32. package/dist/models/auth.js +3 -0
  33. package/dist/models/auth.js.map +1 -0
  34. package/dist/models/credentials.d.ts +62 -0
  35. package/dist/models/credentials.d.ts.map +1 -0
  36. package/dist/models/credentials.js +3 -0
  37. package/dist/models/credentials.js.map +1 -0
  38. package/dist/models/index.d.ts +6 -0
  39. package/dist/models/index.d.ts.map +1 -0
  40. package/dist/models/index.js +22 -0
  41. package/dist/models/index.js.map +1 -0
  42. package/dist/models/meetings.d.ts +42 -0
  43. package/dist/models/meetings.d.ts.map +1 -0
  44. package/dist/models/meetings.js +3 -0
  45. package/dist/models/meetings.js.map +1 -0
  46. package/dist/models/workflows.d.ts +117 -0
  47. package/dist/models/workflows.d.ts.map +1 -0
  48. package/dist/models/workflows.js +3 -0
  49. package/dist/models/workflows.js.map +1 -0
  50. package/dist/webhooks/index.d.ts +4 -0
  51. package/dist/webhooks/index.d.ts.map +1 -0
  52. package/dist/webhooks/index.js +25 -0
  53. package/dist/webhooks/index.js.map +1 -0
  54. package/dist/webhooks/types.d.ts +51 -0
  55. package/dist/webhooks/types.d.ts.map +1 -0
  56. package/dist/webhooks/types.js +8 -0
  57. package/dist/webhooks/types.js.map +1 -0
  58. package/dist/webhooks/verifier.d.ts +12 -0
  59. package/dist/webhooks/verifier.d.ts.map +1 -0
  60. package/dist/webhooks/verifier.js +101 -0
  61. package/dist/webhooks/verifier.js.map +1 -0
  62. package/package.json +45 -0
package/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # Contio Partner SDK
2
+
3
+ Official TypeScript/JavaScript SDK for integrating with the Contio Partner API.
4
+
5
+ 📚 **Full Documentation**: [docs.contio.ai/partner-api](https://docs.contio.ai/partner-api)
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @contio/partner-sdk
11
+ ```
12
+
13
+ ## Quick Start
14
+
15
+ ### OAuth User Operations
16
+
17
+ ```typescript
18
+ import { ContioPartnerSDK } from '@contio/partner-sdk';
19
+
20
+ const { oauth, user } = ContioPartnerSDK.forUser({
21
+ clientId: 'your-client-id',
22
+ clientSecret: 'your-client-secret',
23
+ redirectUri: 'https://your-app.com/callback'
24
+ });
25
+
26
+ // Generate authorization URL
27
+ const authUrl = oauth.getAuthorizationUrl('csrf-state');
28
+
29
+ // After user authorizes, exchange code for tokens
30
+ const tokens = await oauth.exchangeCodeForToken(authorizationCode);
31
+
32
+ // Access user data
33
+ const meetings = await user.getMeetings();
34
+ const actionItems = await user.getActionItems();
35
+ ```
36
+
37
+ ### API Key Admin Operations
38
+
39
+ ```typescript
40
+ import { ContioPartnerSDK } from '@contio/partner-sdk';
41
+
42
+ const { admin } = ContioPartnerSDK.forAdmin({
43
+ apiKey: 'your-api-key'
44
+ });
45
+
46
+ const workflows = await admin.getWorkflows();
47
+ const stats = await admin.getStats();
48
+ ```
49
+
50
+ ## Webhook Verification
51
+
52
+ ```typescript
53
+ import { verifyWebhookSignature, parseWebhook } from '@contio/partner-sdk';
54
+
55
+ app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
56
+ const signature = req.headers['x-contio-signature'] as string;
57
+
58
+ try {
59
+ const event = parseWebhook(req.body, signature, process.env.WEBHOOK_SECRET!);
60
+ // Handle event...
61
+ res.status(200).json({ received: true });
62
+ } catch (error) {
63
+ res.status(401).json({ error: 'Invalid signature' });
64
+ }
65
+ });
66
+ ```
67
+
68
+ ## Error Handling
69
+
70
+ ```typescript
71
+ import { ContioAPIError } from '@contio/partner-sdk';
72
+
73
+ try {
74
+ const meeting = await user.getMeeting('invalid-id');
75
+ } catch (error) {
76
+ if (error instanceof ContioAPIError) {
77
+ console.error('API Error:', error.code, error.message);
78
+ console.error('Status:', error.statusCode);
79
+ }
80
+ }
81
+ ```
82
+
83
+ ## Documentation
84
+
85
+ For complete documentation, visit:
86
+
87
+ - **[Quick Start](https://docs.contio.ai/partner-api/getting-started/quickstart/)** - Get up and running
88
+ - **[Authentication](https://docs.contio.ai/partner-api/getting-started/authentication/)** - OAuth 2.0 and API keys
89
+ - **[API Reference](https://docs.contio.ai/partner-api/api-reference/)** - Complete method reference
90
+ - **[OAuth Flow](https://docs.contio.ai/partner-api/guides/oauth-flow/)** - Detailed OAuth implementation
91
+ - **[Webhook Events](https://docs.contio.ai/partner-api/guides/webhook-events/)** - Real-time notifications
92
+ - **[Credential Management](https://docs.contio.ai/partner-api/guides/credential-management/)** - Secure credential rotation
93
+ - **[Troubleshooting](https://docs.contio.ai/partner-api/guides/troubleshooting/)** - Common issues and solutions
94
+
95
+ ## Token Lifetimes
96
+
97
+ | Token | Validity |
98
+ |-------|----------|
99
+ | Authorization code | 5 minutes |
100
+ | Access token | 24 hours |
101
+ | Refresh token | 30 days |
102
+
103
+ ## Support
104
+
105
+ For support, contact [partner-support@contio.ai](mailto:partner-support@contio.ai)
@@ -0,0 +1,13 @@
1
+ import { ApiKeyConfig } from '../models/auth';
2
+ export interface ApiKeyClientConfig extends ApiKeyConfig {
3
+ clientId?: string;
4
+ }
5
+ export declare class ApiKeyClient {
6
+ private config;
7
+ constructor(config: ApiKeyClientConfig);
8
+ getApiKey(): string;
9
+ getHeaderName(): string;
10
+ getHeaders(): Record<string, string>;
11
+ updateApiKey(apiKey: string): void;
12
+ }
13
+ //# sourceMappingURL=apiKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../../src/auth/apiKey.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAUtC,SAAS,IAAI,MAAM;IAOnB,aAAa,IAAI,MAAM;IAOvB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAgBpC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGnC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiKeyClient = void 0;
4
+ class ApiKeyClient {
5
+ constructor(config) {
6
+ this.config = {
7
+ apiKeyHeader: 'X-API-Key',
8
+ ...config,
9
+ };
10
+ }
11
+ getApiKey() {
12
+ return this.config.apiKey;
13
+ }
14
+ getHeaderName() {
15
+ return this.config.apiKeyHeader || 'X-API-Key';
16
+ }
17
+ getHeaders() {
18
+ const headers = {
19
+ [this.getHeaderName()]: this.getApiKey(),
20
+ };
21
+ if (this.config.clientId) {
22
+ headers['X-Client-ID'] = this.config.clientId;
23
+ }
24
+ return headers;
25
+ }
26
+ updateApiKey(apiKey) {
27
+ this.config.apiKey = apiKey;
28
+ }
29
+ }
30
+ exports.ApiKeyClient = ApiKeyClient;
31
+ //# sourceMappingURL=apiKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../../src/auth/apiKey.ts"],"names":[],"mappings":";;;AAUA,MAAa,YAAY;IAGvB,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG;YACZ,YAAY,EAAE,WAAW;YACzB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,CAAC;IACjD,CAAC;IAKD,UAAU;QACR,MAAM,OAAO,GAA2B;YACtC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE;SACzC,CAAC;QAGF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAKD,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9B,CAAC;CACF;AA9CD,oCA8CC"}
@@ -0,0 +1,52 @@
1
+ import { OAuthConfig, AuthTokens } from '../models/auth';
2
+ export declare class OAuthClient {
3
+ private config;
4
+ private tokens?;
5
+ private axiosInstance;
6
+ constructor(config: OAuthConfig);
7
+ getAuthorizationUrl(state?: string): string;
8
+ exchangeCodeForToken(code: string): Promise<AuthTokens>;
9
+ refreshAccessToken(refreshToken?: string): Promise<AuthTokens>;
10
+ getClientCredentialsToken(scope?: string[]): Promise<AuthTokens>;
11
+ revokeToken(token: string, tokenType?: 'access_token' | 'refresh_token'): Promise<void>;
12
+ getAccessToken(): string | undefined;
13
+ setTokens(tokens: AuthTokens): void;
14
+ isTokenExpired(): boolean;
15
+ initiatePartnerAuth(email: string, name?: string): Promise<{
16
+ session: string;
17
+ challengeName: string;
18
+ challengeParams?: Record<string, string>;
19
+ userProvisioned?: boolean;
20
+ }>;
21
+ verifyPartnerAuth(email: string, code: string, session: string): Promise<{
22
+ redirectUrl?: string;
23
+ }>;
24
+ checkConsent(email: string): Promise<{
25
+ hasConsent: boolean;
26
+ requiresConsent: boolean;
27
+ redirectUrl?: string;
28
+ }>;
29
+ getPartnerInfo(): Promise<{
30
+ name: string;
31
+ description?: string;
32
+ logoUrl?: string;
33
+ websiteUrl?: string;
34
+ }>;
35
+ getAvailableScopes(): Promise<string[]>;
36
+ introspectToken(token: string): Promise<{
37
+ active: boolean;
38
+ scope?: string;
39
+ clientId?: string;
40
+ username?: string;
41
+ exp?: number;
42
+ iat?: number;
43
+ }>;
44
+ getUserInfo(accessToken?: string): Promise<{
45
+ sub: string;
46
+ email?: string;
47
+ name?: string;
48
+ picture?: string;
49
+ }>;
50
+ private parseTokenResponse;
51
+ }
52
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAsB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7E,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,WAAW;IAgC/B,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAerC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BvD,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmC9D,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA6BhE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,cAAc,GAAG,eAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7G,cAAc,IAAI,MAAM,GAAG,SAAS;IAOpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAOnC,cAAc,IAAI,OAAO;IAUnB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/D,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IA6BI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IA8BI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,UAAU,EAAE,OAAO,CAAC;QACpB,eAAe,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IA6BI,cAAc,IAAI,OAAO,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAeI,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBvC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IAyBI,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IA2BF,OAAO,CAAC,kBAAkB;CAY3B"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OAuthClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const https_1 = __importDefault(require("https"));
9
+ const qs_1 = __importDefault(require("qs"));
10
+ class OAuthClient {
11
+ constructor(config) {
12
+ this.config = {
13
+ authorizationUrl: 'https://auth.contio.ai/oauth2/authorize',
14
+ tokenUrl: 'https://auth.contio.ai/oauth2/token',
15
+ ...config,
16
+ };
17
+ const axiosConfig = {
18
+ headers: {
19
+ 'Content-Type': 'application/x-www-form-urlencoded',
20
+ },
21
+ };
22
+ const isLocalDev = this.config.tokenUrl?.includes('.lan.contio.ai') ||
23
+ this.config.tokenUrl?.includes('localhost') ||
24
+ this.config.tokenUrl?.includes('local.');
25
+ if (isLocalDev) {
26
+ axiosConfig.httpsAgent = new https_1.default.Agent({
27
+ rejectUnauthorized: false
28
+ });
29
+ }
30
+ this.axiosInstance = axios_1.default.create(axiosConfig);
31
+ }
32
+ getAuthorizationUrl(state) {
33
+ const params = new URLSearchParams({
34
+ client_id: this.config.clientId,
35
+ redirect_uri: this.config.redirectUri,
36
+ response_type: 'code',
37
+ scope: this.config.scope?.join(' ') || 'openid profile meetings:read meetings:write',
38
+ ...(state && { state }),
39
+ });
40
+ return `${this.config.authorizationUrl}?${params.toString()}`;
41
+ }
42
+ async exchangeCodeForToken(code) {
43
+ try {
44
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
45
+ const response = await this.axiosInstance.post(this.config.tokenUrl, qs_1.default.stringify({
46
+ grant_type: 'authorization_code',
47
+ code,
48
+ redirect_uri: this.config.redirectUri,
49
+ }), {
50
+ headers: {
51
+ 'Authorization': `Basic ${auth}`,
52
+ 'Content-Type': 'application/x-www-form-urlencoded',
53
+ }
54
+ });
55
+ this.tokens = this.parseTokenResponse(response.data);
56
+ return this.tokens;
57
+ }
58
+ catch (error) {
59
+ throw new Error(`Failed to exchange code for token: ${error.message}`);
60
+ }
61
+ }
62
+ async refreshAccessToken(refreshToken) {
63
+ const tokenToUse = refreshToken || this.tokens?.refreshToken;
64
+ if (!tokenToUse) {
65
+ throw new Error('No refresh token available');
66
+ }
67
+ try {
68
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
69
+ const response = await this.axiosInstance.post(this.config.tokenUrl, qs_1.default.stringify({
70
+ grant_type: 'refresh_token',
71
+ refresh_token: tokenToUse,
72
+ }), {
73
+ headers: {
74
+ 'Authorization': `Basic ${auth}`,
75
+ 'Content-Type': 'application/x-www-form-urlencoded',
76
+ }
77
+ });
78
+ this.tokens = this.parseTokenResponse(response.data);
79
+ return this.tokens;
80
+ }
81
+ catch (error) {
82
+ throw new Error(`Failed to refresh token: ${error.message}`);
83
+ }
84
+ }
85
+ async getClientCredentialsToken(scope) {
86
+ try {
87
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
88
+ const response = await this.axiosInstance.post(this.config.tokenUrl, qs_1.default.stringify({
89
+ grant_type: 'client_credentials',
90
+ scope: scope?.join(' ') || this.config.scope?.join(' '),
91
+ }), {
92
+ headers: {
93
+ 'Authorization': `Basic ${auth}`,
94
+ 'Content-Type': 'application/x-www-form-urlencoded',
95
+ }
96
+ });
97
+ this.tokens = this.parseTokenResponse(response.data);
98
+ return this.tokens;
99
+ }
100
+ catch (error) {
101
+ throw new Error(`Failed to get client credentials token: ${error.message}`);
102
+ }
103
+ }
104
+ async revokeToken(token, tokenType = 'access_token') {
105
+ try {
106
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
107
+ await this.axiosInstance.post(`${this.config.tokenUrl?.replace('/token', '/revoke')}`, qs_1.default.stringify({
108
+ token,
109
+ token_type_hint: tokenType,
110
+ }), {
111
+ headers: {
112
+ 'Authorization': `Basic ${auth}`,
113
+ 'Content-Type': 'application/x-www-form-urlencoded',
114
+ }
115
+ });
116
+ }
117
+ catch (error) {
118
+ throw new Error(`Failed to revoke token: ${error.message}`);
119
+ }
120
+ }
121
+ getAccessToken() {
122
+ return this.tokens?.accessToken;
123
+ }
124
+ setTokens(tokens) {
125
+ this.tokens = tokens;
126
+ }
127
+ isTokenExpired() {
128
+ if (!this.tokens?.expiresAt) {
129
+ return false;
130
+ }
131
+ return new Date() >= this.tokens.expiresAt;
132
+ }
133
+ async initiatePartnerAuth(email, name) {
134
+ try {
135
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
136
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/auth/initiate')}`, {
137
+ client_id: this.config.clientId,
138
+ email,
139
+ ...(name && { name }),
140
+ }, {
141
+ headers: {
142
+ 'Authorization': `Basic ${auth}`,
143
+ 'Content-Type': 'application/json',
144
+ }
145
+ });
146
+ return response.data;
147
+ }
148
+ catch (error) {
149
+ throw new Error(`Failed to initiate partner authentication: ${error.message}`);
150
+ }
151
+ }
152
+ async verifyPartnerAuth(email, code, session) {
153
+ try {
154
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
155
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/auth/verify')}`, {
156
+ client_id: this.config.clientId,
157
+ email,
158
+ code,
159
+ session,
160
+ }, {
161
+ headers: {
162
+ 'Authorization': `Basic ${auth}`,
163
+ 'Content-Type': 'application/json',
164
+ }
165
+ });
166
+ return response.data;
167
+ }
168
+ catch (error) {
169
+ throw new Error(`Failed to verify partner authentication: ${error.message}`);
170
+ }
171
+ }
172
+ async checkConsent(email) {
173
+ try {
174
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
175
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/check-consent')}`, {
176
+ client_id: this.config.clientId,
177
+ email,
178
+ scope: this.config.scope?.join(' ') || 'openid profile meetings:read meetings:write',
179
+ }, {
180
+ headers: {
181
+ 'Authorization': `Basic ${auth}`,
182
+ 'Content-Type': 'application/json',
183
+ }
184
+ });
185
+ return response.data;
186
+ }
187
+ catch (error) {
188
+ throw new Error(`Failed to check consent: ${error.message}`);
189
+ }
190
+ }
191
+ async getPartnerInfo() {
192
+ try {
193
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', `/v1/partner/info/${this.config.clientId}/public`)}`);
194
+ return response.data;
195
+ }
196
+ catch (error) {
197
+ throw new Error(`Failed to get partner info: ${error.message}`);
198
+ }
199
+ }
200
+ async getAvailableScopes() {
201
+ try {
202
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
203
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/scopes')}`, {
204
+ headers: {
205
+ 'Authorization': `Basic ${auth}`,
206
+ }
207
+ });
208
+ return response.data.scopes || [];
209
+ }
210
+ catch (error) {
211
+ throw new Error(`Failed to get available scopes: ${error.message}`);
212
+ }
213
+ }
214
+ async introspectToken(token) {
215
+ try {
216
+ const auth = Buffer.from(`${this.config.clientId}:${this.config.clientSecret}`).toString('base64');
217
+ const response = await this.axiosInstance.post(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/introspect')}`, qs_1.default.stringify({ token }), {
218
+ headers: {
219
+ 'Authorization': `Basic ${auth}`,
220
+ 'Content-Type': 'application/x-www-form-urlencoded',
221
+ }
222
+ });
223
+ return response.data;
224
+ }
225
+ catch (error) {
226
+ throw new Error(`Failed to introspect token: ${error.message}`);
227
+ }
228
+ }
229
+ async getUserInfo(accessToken) {
230
+ const tokenToUse = accessToken || this.tokens?.accessToken;
231
+ if (!tokenToUse) {
232
+ throw new Error('No access token available');
233
+ }
234
+ try {
235
+ const response = await this.axiosInstance.get(`${this.config.authorizationUrl?.replace('/oauth2/authorize', '/oauth2/userInfo')}`, {
236
+ headers: {
237
+ 'Authorization': `Bearer ${tokenToUse}`,
238
+ }
239
+ });
240
+ return response.data;
241
+ }
242
+ catch (error) {
243
+ throw new Error(`Failed to get user info: ${error.message}`);
244
+ }
245
+ }
246
+ parseTokenResponse(response) {
247
+ const expiresAt = response.expires_in
248
+ ? new Date(Date.now() + response.expires_in * 1000)
249
+ : undefined;
250
+ return {
251
+ accessToken: response.access_token,
252
+ refreshToken: response.refresh_token,
253
+ expiresAt,
254
+ scope: response.scope?.split(' '),
255
+ };
256
+ }
257
+ }
258
+ exports.OAuthClient = OAuthClient;
259
+ //# 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,33 @@
1
+ import { InternalAxiosRequestConfig } from 'axios';
2
+ import { BaseClient, ClientConfig } from './base';
3
+ import { ApiKeyClient } from '../auth/apiKey';
4
+ import { Workflow, WorkflowListParams, WorkflowListResponse, CreateWorkflowRequest, UpdateWorkflowRequest, WebhookDelivery, WebhookDeliveryListParams, WebhookDeliveryListResponse, PartnerApp, UpdatePartnerAppRequest, UpdatePartnerAppStatusRequest, UserConnection, UserConnectionListParams, UserConnectionListResponse, CredentialStatusResponse, CredentialRotationRequest, CredentialRotationResponse, CredentialRollbackRequest, CredentialAuditHistoryParams, CredentialAuditHistoryResponse } from '../models';
5
+ export declare class PartnerAdminClient extends BaseClient {
6
+ private apiKeyClient;
7
+ constructor(apiKeyClient: ApiKeyClient, config?: ClientConfig);
8
+ protected addAuthHeaders(config: InternalAxiosRequestConfig): InternalAxiosRequestConfig;
9
+ createWorkflow(data: CreateWorkflowRequest): Promise<Workflow>;
10
+ getWorkflows(params?: WorkflowListParams): Promise<WorkflowListResponse>;
11
+ getWorkflow(workflowId: string): Promise<Workflow>;
12
+ updateWorkflow(workflowId: string, data: UpdateWorkflowRequest): Promise<Workflow>;
13
+ deleteWorkflow(workflowId: string): Promise<void>;
14
+ getApp(): Promise<PartnerApp>;
15
+ updateApp(data: UpdatePartnerAppRequest): Promise<PartnerApp>;
16
+ updateAppStatus(data: UpdatePartnerAppStatusRequest): Promise<PartnerApp>;
17
+ getWebhookDeliveries(params?: WebhookDeliveryListParams): Promise<WebhookDeliveryListResponse>;
18
+ getWebhookDelivery(deliveryId: string): Promise<WebhookDelivery>;
19
+ retryWebhookDelivery(deliveryId: string): Promise<{
20
+ message: string;
21
+ retry_scheduled: boolean;
22
+ }>;
23
+ getUserConnections(params?: UserConnectionListParams): Promise<UserConnectionListResponse>;
24
+ getUserConnection(connectionId: string): Promise<UserConnection>;
25
+ revokeUserConnection(connectionId: string): Promise<void>;
26
+ getCredentialStatus(): Promise<CredentialStatusResponse>;
27
+ rotateAPIKey(request: CredentialRotationRequest): Promise<CredentialRotationResponse>;
28
+ rotateWebhookSecret(request: CredentialRotationRequest): Promise<CredentialRotationResponse>;
29
+ rotateClientSecret(request: CredentialRotationRequest): Promise<CredentialRotationResponse>;
30
+ rollbackCredential(credentialType: 'api-key' | 'client-secret', request: CredentialRollbackRequest): Promise<void>;
31
+ getCredentialHistory(params?: CredentialAuditHistoryParams): Promise<CredentialAuditHistoryResponse>;
32
+ }
33
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/client/admin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,2BAA2B,EAC3B,UAAU,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC/B,MAAM,WAAW,CAAC;AAEnB,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,OAAO,CAAC,YAAY,CAAe;gBAEvB,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,YAAY;IAW7D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,0BAA0B,GAAG,0BAA0B;IAWlF,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO9D,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQxE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOlD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOlF,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAQ7B,SAAS,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7D,eAAe,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,UAAU,CAAC;IASzE,oBAAoB,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAO9F,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOhE,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,CAAC;IAShG,kBAAkB,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAO1F,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOhE,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzD,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IA8BxD,YAAY,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAiCrF,mBAAmB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA8B5F,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAyB3F,kBAAkB,CACtB,cAAc,EAAE,SAAS,GAAG,eAAe,EAC3C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC;IAoCV,oBAAoB,CAAC,MAAM,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAG3G"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartnerAdminClient = void 0;
4
+ const base_1 = require("./base");
5
+ class PartnerAdminClient extends base_1.BaseClient {
6
+ constructor(apiKeyClient, config) {
7
+ const baseURL = config?.baseURL || 'https://api.contio.ai';
8
+ const finalURL = `${baseURL}/v1/partner/admin`;
9
+ console.log('🚨 DEBUG: Admin client constructor - baseURL:', baseURL, 'finalURL:', finalURL);
10
+ super({
11
+ ...config,
12
+ baseURL: finalURL,
13
+ });
14
+ this.apiKeyClient = apiKeyClient;
15
+ }
16
+ addAuthHeaders(config) {
17
+ config.headers = config.headers || {};
18
+ Object.assign(config.headers, this.apiKeyClient.getHeaders());
19
+ return config;
20
+ }
21
+ async createWorkflow(data) {
22
+ return this.post('/workflows', data);
23
+ }
24
+ async getWorkflows(params) {
25
+ console.log('🚨 DEBUG: getWorkflows called, baseURL:', this.config.baseURL);
26
+ return this.get('/workflows', params);
27
+ }
28
+ async getWorkflow(workflowId) {
29
+ return this.get(`/workflows/${workflowId}`);
30
+ }
31
+ async updateWorkflow(workflowId, data) {
32
+ return this.put(`/workflows/${workflowId}`, data);
33
+ }
34
+ async deleteWorkflow(workflowId) {
35
+ await this.delete(`/workflows/${workflowId}`);
36
+ }
37
+ async getApp() {
38
+ console.log('🚨 DEBUG: getApp called, baseURL:', this.config.baseURL);
39
+ return this.get('/app');
40
+ }
41
+ async updateApp(data) {
42
+ return this.put('/app', data);
43
+ }
44
+ async updateAppStatus(data) {
45
+ return this.put('/app/status', data);
46
+ }
47
+ async getWebhookDeliveries(params) {
48
+ return this.get('/webhook-deliveries', params);
49
+ }
50
+ async getWebhookDelivery(deliveryId) {
51
+ return this.get(`/webhook-deliveries/${deliveryId}`);
52
+ }
53
+ async retryWebhookDelivery(deliveryId) {
54
+ return this.post(`/webhook-deliveries/${deliveryId}/retry`);
55
+ }
56
+ async getUserConnections(params) {
57
+ return this.get('/connections', params);
58
+ }
59
+ async getUserConnection(connectionId) {
60
+ return this.get(`/connections/${connectionId}`);
61
+ }
62
+ async revokeUserConnection(connectionId) {
63
+ await this.delete(`/connections/${connectionId}`);
64
+ }
65
+ async getCredentialStatus() {
66
+ return this.get('/credentials');
67
+ }
68
+ async rotateAPIKey(request) {
69
+ return this.post('/credentials/api-key/rotate', request);
70
+ }
71
+ async rotateWebhookSecret(request) {
72
+ return this.post('/credentials/webhook-secret/rotate', request);
73
+ }
74
+ async rotateClientSecret(request) {
75
+ return this.post('/credentials/client-secret/rotate', request);
76
+ }
77
+ async rollbackCredential(credentialType, request) {
78
+ await this.post(`/credentials/${credentialType}/rollback`, request);
79
+ }
80
+ async getCredentialHistory(params) {
81
+ return this.get('/credentials/history', params);
82
+ }
83
+ }
84
+ exports.PartnerAdminClient = PartnerAdminClient;
85
+ //# 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,29 @@
1
+ import { AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios';
2
+ import { ErrorResponse } from '../models/auth';
3
+ export interface ClientConfig {
4
+ baseURL?: string;
5
+ timeout?: number;
6
+ retries?: number;
7
+ retryDelay?: number;
8
+ }
9
+ export declare class ContioAPIError extends Error {
10
+ readonly code: string;
11
+ readonly statusCode?: number;
12
+ readonly response?: ErrorResponse;
13
+ constructor(message: string, code: string, statusCode?: number, response?: ErrorResponse);
14
+ }
15
+ export declare abstract class BaseClient {
16
+ protected axiosInstance: AxiosInstance;
17
+ protected config: ClientConfig;
18
+ constructor(config?: ClientConfig);
19
+ protected abstract addAuthHeaders(config: InternalAxiosRequestConfig): InternalAxiosRequestConfig;
20
+ protected get<T>(path: string, params?: any): Promise<T>;
21
+ protected post<T>(path: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
22
+ protected put<T>(path: string, data?: any): Promise<T>;
23
+ protected patch<T>(path: string, data?: any): Promise<T>;
24
+ protected delete<T>(path: string): Promise<T>;
25
+ private retryRequest;
26
+ private delay;
27
+ private handleError;
28
+ }
29
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAIA,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAA6B,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAExH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,QAAQ,CAAC,EAAE,aAAa,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa;CAOzF;AAED,8BAAsB,UAAU;IAC9B,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;gBAEnB,MAAM,GAAE,YAAiB;IAiDrC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,0BAA0B,GAAG,0BAA0B;cAKjF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;cAU9C,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;cAU1E,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;cAU5C,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;cAU9C,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAUrC,YAAY;IAgC1B,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,WAAW;CAwBpB"}