@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.
- package/README.md +105 -0
- package/dist/auth/apiKey.d.ts +13 -0
- package/dist/auth/apiKey.d.ts.map +1 -0
- package/dist/auth/apiKey.js +31 -0
- package/dist/auth/apiKey.js.map +1 -0
- package/dist/auth/oauth.d.ts +52 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +259 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/client/admin.d.ts +33 -0
- package/dist/client/admin.d.ts.map +1 -0
- package/dist/client/admin.js +85 -0
- package/dist/client/admin.js.map +1 -0
- package/dist/client/base.d.ts +29 -0
- package/dist/client/base.d.ts.map +1 -0
- package/dist/client/base.js +106 -0
- package/dist/client/base.js.map +1 -0
- package/dist/client/user.d.ts +21 -0
- package/dist/client/user.d.ts.map +1 -0
- package/dist/client/user.js +62 -0
- package/dist/client/user.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/dist/models/actionItems.d.ts +39 -0
- package/dist/models/actionItems.d.ts.map +1 -0
- package/dist/models/actionItems.js +3 -0
- package/dist/models/actionItems.js.map +1 -0
- package/dist/models/auth.d.ts +37 -0
- package/dist/models/auth.d.ts.map +1 -0
- package/dist/models/auth.js +3 -0
- package/dist/models/auth.js.map +1 -0
- package/dist/models/credentials.d.ts +62 -0
- package/dist/models/credentials.d.ts.map +1 -0
- package/dist/models/credentials.js +3 -0
- package/dist/models/credentials.js.map +1 -0
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +22 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/meetings.d.ts +42 -0
- package/dist/models/meetings.d.ts.map +1 -0
- package/dist/models/meetings.js +3 -0
- package/dist/models/meetings.js.map +1 -0
- package/dist/models/workflows.d.ts +117 -0
- package/dist/models/workflows.d.ts.map +1 -0
- package/dist/models/workflows.js +3 -0
- package/dist/models/workflows.js.map +1 -0
- package/dist/webhooks/index.d.ts +4 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +25 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/types.d.ts +51 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/types.js +8 -0
- package/dist/webhooks/types.js.map +1 -0
- package/dist/webhooks/verifier.d.ts +12 -0
- package/dist/webhooks/verifier.d.ts.map +1 -0
- package/dist/webhooks/verifier.js +101 -0
- package/dist/webhooks/verifier.js.map +1 -0
- 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"}
|