@sliceapi/sdk 0.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.
@@ -0,0 +1,213 @@
1
+ export interface User {
2
+ id: string;
3
+ name: string;
4
+ email: string;
5
+ plan: 'free' | 'pro' | 'enterprise';
6
+ }
7
+ export interface ApiResponse<T> {
8
+ success: boolean;
9
+ data?: T;
10
+ error?: string;
11
+ }
12
+ export interface Tenant {
13
+ id: string;
14
+ name: string;
15
+ email: string;
16
+ website?: string;
17
+ status: 'active' | 'suspended' | 'inactive';
18
+ emailVerified: boolean;
19
+ emailVerifiedAt?: Date;
20
+ metadata?: Record<string, any>;
21
+ stripeCustomerId?: string;
22
+ stripeSubscriptionId?: string;
23
+ subscriptionStatus?: SubscriptionStatus;
24
+ currentPlanId?: string;
25
+ createdAt: Date;
26
+ updatedAt: Date;
27
+ }
28
+ export interface TenantApiKey {
29
+ id: string;
30
+ tenantId: string;
31
+ name: string;
32
+ keyPrefix: string;
33
+ lastUsedAt?: Date;
34
+ expiresAt?: Date;
35
+ status: 'active' | 'revoked' | 'expired';
36
+ createdAt: Date;
37
+ updatedAt: Date;
38
+ }
39
+ export interface LaaSUser {
40
+ id: string;
41
+ tenantId: string;
42
+ externalId: string;
43
+ email?: string;
44
+ name?: string;
45
+ metadata?: Record<string, any>;
46
+ createdAt: Date;
47
+ updatedAt: Date;
48
+ }
49
+ export interface Product {
50
+ id: string;
51
+ tenantId: string;
52
+ name: string;
53
+ description?: string;
54
+ createdAt: Date;
55
+ updatedAt: Date;
56
+ }
57
+ export interface Plan {
58
+ id: string;
59
+ productId: string;
60
+ name: string;
61
+ description?: string;
62
+ maxSeats?: number;
63
+ expiresInDays?: number;
64
+ features?: string[];
65
+ createdAt: Date;
66
+ updatedAt: Date;
67
+ }
68
+ export type LicenseStatus = 'active' | 'suspended' | 'revoked' | 'expired';
69
+ export interface License {
70
+ id: string;
71
+ productId: string;
72
+ planId: string;
73
+ status: LicenseStatus;
74
+ maxSeats?: number;
75
+ expiresAt?: Date;
76
+ features?: string[];
77
+ createdBy?: string;
78
+ createdAt: Date;
79
+ updatedAt: Date;
80
+ }
81
+ export interface UserLicense {
82
+ id: string;
83
+ userId: string;
84
+ licenseId: string;
85
+ assignedAt: Date;
86
+ assignedBy?: string;
87
+ metadata?: Record<string, any>;
88
+ }
89
+ export interface Activation {
90
+ id: string;
91
+ userId: string;
92
+ licenseId: string;
93
+ activatedAt: Date;
94
+ lastCheckedAt?: Date;
95
+ metadata?: Record<string, any>;
96
+ }
97
+ export type AuditLogAction = 'tenant.created' | 'tenant.updated' | 'tenant.suspended' | 'api_key.created' | 'api_key.revoked' | 'user.created' | 'user.updated' | 'license.created' | 'license.assigned' | 'license.activated' | 'license.validated' | 'license.suspended' | 'license.revoked' | 'license.reactivated' | 'product.created' | 'plan.created';
98
+ export interface AuditLog {
99
+ id: string;
100
+ tenantId?: string;
101
+ action: AuditLogAction;
102
+ entityType: 'tenant' | 'api_key' | 'user' | 'license' | 'product' | 'plan' | 'activation';
103
+ entityId: string;
104
+ metadata?: Record<string, any>;
105
+ performedBy?: string;
106
+ timestamp: Date;
107
+ }
108
+ export interface ValidateLicenseRequest {
109
+ userId: string;
110
+ }
111
+ export type ValidateLicenseResponse = {
112
+ valid: true;
113
+ license: License;
114
+ activation?: Activation;
115
+ features?: string[];
116
+ } | {
117
+ valid: false;
118
+ reason: 'expired' | 'revoked' | 'suspended' | 'exceeded_seats' | 'no_license' | 'user_not_found';
119
+ };
120
+ export interface CreateTenantRequest {
121
+ name: string;
122
+ email?: string;
123
+ website?: string;
124
+ metadata?: Record<string, any>;
125
+ }
126
+ export interface RegisterTenantRequest {
127
+ name: string;
128
+ email: string;
129
+ password: string;
130
+ website?: string;
131
+ metadata?: Record<string, any>;
132
+ }
133
+ export interface LoginRequest {
134
+ email: string;
135
+ password: string;
136
+ }
137
+ export interface LoginResponse {
138
+ success: boolean;
139
+ data?: {
140
+ tenant: Tenant;
141
+ token?: string;
142
+ requiresVerification?: boolean;
143
+ };
144
+ error?: string;
145
+ }
146
+ export interface VerifyEmailRequest {
147
+ code: string;
148
+ }
149
+ export interface VerifyEmailResponse {
150
+ success: boolean;
151
+ }
152
+ export interface SendVerificationCodeResponse {
153
+ success: boolean;
154
+ }
155
+ export interface CreateApiKeyRequest {
156
+ name: string;
157
+ expiresInDays?: number;
158
+ }
159
+ export interface CreateUserRequest {
160
+ externalId: string;
161
+ email?: string;
162
+ name?: string;
163
+ metadata?: Record<string, any>;
164
+ }
165
+ export interface AssignLicenseRequest {
166
+ userId: string;
167
+ licenseId: string;
168
+ metadata?: Record<string, any>;
169
+ }
170
+ export interface CreateProductRequest {
171
+ name: string;
172
+ description?: string;
173
+ }
174
+ export interface CreatePlanRequest {
175
+ productId: string;
176
+ name: string;
177
+ description?: string;
178
+ maxSeats?: number;
179
+ expiresInDays?: number;
180
+ features?: string[];
181
+ }
182
+ export interface CreateLicenseRequest {
183
+ planId: string;
184
+ expiresInDays?: number;
185
+ }
186
+ export interface LicenseUsage {
187
+ license: License;
188
+ activations: Activation[];
189
+ totalActivations: number;
190
+ activeSeats: number;
191
+ }
192
+ export type SubscriptionStatus = 'active' | 'past_due' | 'canceled' | 'unpaid' | 'trialing' | 'incomplete' | 'incomplete_expired';
193
+ export interface Subscription {
194
+ id: string;
195
+ status: SubscriptionStatus;
196
+ currentPeriodStart: Date;
197
+ currentPeriodEnd: Date;
198
+ cancelAtPeriodEnd: boolean;
199
+ canceledAt?: Date;
200
+ planId: string;
201
+ planName?: string;
202
+ }
203
+ export interface CreateCheckoutSessionRequest {
204
+ priceId: string;
205
+ }
206
+ export interface CreateCheckoutSessionResponse {
207
+ clientSecret: string;
208
+ sessionId: string;
209
+ }
210
+ export interface CancelSubscriptionRequest {
211
+ subscriptionId: string;
212
+ }
213
+ //# sourceMappingURL=api-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../../shared/api-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../../shared/api-types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@sliceapi/sdk",
3
+ "version": "0.0.1",
4
+ "description": "TypeScript SDK for SliceAPI",
5
+ "private": false,
6
+ "type": "module",
7
+ "main": "./dist/sdk/src/index.js",
8
+ "types": "./dist/sdk/src/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/sdk/src/index.d.ts",
12
+ "import": "./dist/sdk/src/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "package.json"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "ts-node --esm src/index.ts",
23
+ "test": "tsx test.ts",
24
+ "test:watch": "tsx watch test.ts",
25
+ "prepublishOnly": "pnpm build"
26
+ },
27
+ "keywords": [
28
+ "licensing",
29
+ "laas",
30
+ "sdk",
31
+ "typescript"
32
+ ],
33
+ "author": "Rohan Puri <xpydrrr@gmail.com>",
34
+ "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/xpydr/slice.git",
38
+ "directory": "sdk"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^20.0.0",
45
+ "dotenv": "^17.2.3",
46
+ "ts-node": "^10.9.1",
47
+ "tsx": "^4.21.0",
48
+ "typescript": "^5.1.0"
49
+ }
50
+ }