@pindownai/client-js 1.2.0 → 1.3.2
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 +86 -152
- package/dist/index.cjs +7 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +256 -547
- package/dist/index.d.ts +256 -547
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
* Aligned with backend-api/src/lib/pin-types.ts + pin-config-schemas.ts.
|
|
4
4
|
* Import per-type *PinConfig interfaces for typed CRUD payloads.
|
|
5
5
|
*/
|
|
6
|
-
declare const PRODUCT_PIN_TYPES: readonly ["markdown", "image", "gallery", "table", "charts", "mermaid", "embed", "pdf-viewer", "excel-viewer", "stat-cards", "timeline", "json-viewer", "json-list", "links", "steps", "csv-viewer", "user-story", "chat", "intro", "mastra", "text-media", "file-upload", "kanban-board", "checklist", "calendar", "roadmap", "realtime-canvas"];
|
|
7
|
-
declare const
|
|
8
|
-
declare const ALL_PIN_TYPES: readonly ["markdown", "image", "gallery", "table", "charts", "mermaid", "embed", "pdf-viewer", "excel-viewer", "stat-cards", "timeline", "json-viewer", "json-list", "links", "steps", "csv-viewer", "user-story", "chat", "intro", "mastra", "text-media", "file-upload", "kanban-board", "checklist", "calendar", "roadmap", "realtime-canvas", "line-chart", "tree"];
|
|
6
|
+
declare const PRODUCT_PIN_TYPES: readonly ["markdown", "image", "gallery", "table", "charts", "mermaid", "code", "embed", "pdf-viewer", "excel-viewer", "stat-cards", "timeline", "json-viewer", "json-list", "links", "qr-code", "social-handles", "steps", "trace", "plan", "notes", "csv-viewer", "user-story", "chat", "intro", "mastra", "text-media", "business-card", "video", "audio", "file-upload", "kanban-board", "checklist", "comparison", "calendar", "roadmap", "realtime-canvas"];
|
|
7
|
+
declare const ALL_PIN_TYPES: readonly ["markdown", "image", "gallery", "table", "charts", "mermaid", "code", "embed", "pdf-viewer", "excel-viewer", "stat-cards", "timeline", "json-viewer", "json-list", "links", "qr-code", "social-handles", "steps", "trace", "plan", "notes", "csv-viewer", "user-story", "chat", "intro", "mastra", "text-media", "business-card", "video", "audio", "file-upload", "kanban-board", "checklist", "comparison", "calendar", "roadmap", "realtime-canvas"];
|
|
9
8
|
type ProductPinTypeId = (typeof PRODUCT_PIN_TYPES)[number];
|
|
10
|
-
type LegacyPinTypeId = (typeof LEGACY_PIN_TYPES)[number];
|
|
11
9
|
type PinTypeId = (typeof ALL_PIN_TYPES)[number];
|
|
12
10
|
type PinLayout = '1x1' | '1x2' | '2x1' | '2x2' | '3x1' | '3x2' | '3x3' | '4x4';
|
|
13
11
|
type PinDataType = 'markdown' | 'json' | 'text' | 'pin-card';
|
|
@@ -59,12 +57,6 @@ interface StepItem {
|
|
|
59
57
|
description?: string;
|
|
60
58
|
[key: string]: unknown;
|
|
61
59
|
}
|
|
62
|
-
interface TreeNode {
|
|
63
|
-
id: string;
|
|
64
|
-
label: string;
|
|
65
|
-
children?: TreeNode[];
|
|
66
|
-
[key: string]: unknown;
|
|
67
|
-
}
|
|
68
60
|
interface MarkdownPinConfig {
|
|
69
61
|
content?: string;
|
|
70
62
|
collaboration?: {
|
|
@@ -95,8 +87,15 @@ interface ChartsPinConfig {
|
|
|
95
87
|
[key: string]: unknown;
|
|
96
88
|
}
|
|
97
89
|
interface MermaidPinConfig {
|
|
98
|
-
code?: string;
|
|
99
90
|
diagram?: string;
|
|
91
|
+
code?: string;
|
|
92
|
+
title?: string;
|
|
93
|
+
[key: string]: unknown;
|
|
94
|
+
}
|
|
95
|
+
interface CodePinConfig {
|
|
96
|
+
code: string;
|
|
97
|
+
language?: string;
|
|
98
|
+
filename?: string;
|
|
100
99
|
title?: string;
|
|
101
100
|
[key: string]: unknown;
|
|
102
101
|
}
|
|
@@ -147,10 +146,112 @@ interface LinksPinConfig {
|
|
|
147
146
|
links?: LinkItem[];
|
|
148
147
|
[key: string]: unknown;
|
|
149
148
|
}
|
|
149
|
+
interface QrCodePinConfig {
|
|
150
|
+
url?: string;
|
|
151
|
+
label?: string;
|
|
152
|
+
[key: string]: unknown;
|
|
153
|
+
}
|
|
154
|
+
interface SocialHandleItem {
|
|
155
|
+
id?: string;
|
|
156
|
+
platform: string;
|
|
157
|
+
url: string;
|
|
158
|
+
label?: string;
|
|
159
|
+
[key: string]: unknown;
|
|
160
|
+
}
|
|
161
|
+
interface SocialHandlesPinConfig {
|
|
162
|
+
title?: string;
|
|
163
|
+
showLabels?: boolean;
|
|
164
|
+
iconSize?: number;
|
|
165
|
+
handles?: SocialHandleItem[];
|
|
166
|
+
[key: string]: unknown;
|
|
167
|
+
}
|
|
150
168
|
interface StepsPinConfig {
|
|
151
169
|
steps: StepItem[];
|
|
152
170
|
[key: string]: unknown;
|
|
153
171
|
}
|
|
172
|
+
type TraceSpanStatus = 'completed' | 'running' | 'pending' | 'failed';
|
|
173
|
+
type TraceSpanType = 'system' | 'agent' | 'tool';
|
|
174
|
+
interface TraceSpanItem {
|
|
175
|
+
id?: string;
|
|
176
|
+
type?: TraceSpanType;
|
|
177
|
+
name: string;
|
|
178
|
+
status: TraceSpanStatus;
|
|
179
|
+
timestamp?: string;
|
|
180
|
+
duration?: string;
|
|
181
|
+
details?: string;
|
|
182
|
+
}
|
|
183
|
+
interface TracePinConfig {
|
|
184
|
+
title?: string;
|
|
185
|
+
live?: boolean;
|
|
186
|
+
spans: TraceSpanItem[];
|
|
187
|
+
[key: string]: unknown;
|
|
188
|
+
}
|
|
189
|
+
type PlanContentBlock = {
|
|
190
|
+
type: 'details';
|
|
191
|
+
title?: string;
|
|
192
|
+
items: string[];
|
|
193
|
+
} | {
|
|
194
|
+
type: 'command';
|
|
195
|
+
command: string;
|
|
196
|
+
label?: string;
|
|
197
|
+
} | {
|
|
198
|
+
type: 'code';
|
|
199
|
+
code: string;
|
|
200
|
+
language?: string;
|
|
201
|
+
filename?: string;
|
|
202
|
+
} | {
|
|
203
|
+
type: 'text';
|
|
204
|
+
content: string;
|
|
205
|
+
} | {
|
|
206
|
+
type: 'link';
|
|
207
|
+
url: string;
|
|
208
|
+
label?: string;
|
|
209
|
+
} | {
|
|
210
|
+
type: 'mermaid';
|
|
211
|
+
diagram: string;
|
|
212
|
+
title?: string;
|
|
213
|
+
} | {
|
|
214
|
+
type: 'summary';
|
|
215
|
+
content: string;
|
|
216
|
+
title?: string;
|
|
217
|
+
};
|
|
218
|
+
interface PlanTaskItem {
|
|
219
|
+
id?: string;
|
|
220
|
+
number?: string;
|
|
221
|
+
title: string;
|
|
222
|
+
label?: string;
|
|
223
|
+
description?: string;
|
|
224
|
+
blocks?: PlanContentBlock[];
|
|
225
|
+
[key: string]: unknown;
|
|
226
|
+
}
|
|
227
|
+
interface PlanPhaseItem {
|
|
228
|
+
id?: string;
|
|
229
|
+
title: string;
|
|
230
|
+
status?: 'pending' | 'in-progress' | 'completed';
|
|
231
|
+
tasks: PlanTaskItem[];
|
|
232
|
+
[key: string]: unknown;
|
|
233
|
+
}
|
|
234
|
+
interface PlanPinConfig {
|
|
235
|
+
title?: string;
|
|
236
|
+
status?: 'draft' | 'in-progress' | 'completed';
|
|
237
|
+
breadcrumbs?: Array<{
|
|
238
|
+
label: string;
|
|
239
|
+
}>;
|
|
240
|
+
phases: PlanPhaseItem[];
|
|
241
|
+
[key: string]: unknown;
|
|
242
|
+
}
|
|
243
|
+
interface NoteItem {
|
|
244
|
+
id?: string;
|
|
245
|
+
title: string;
|
|
246
|
+
content?: string;
|
|
247
|
+
order?: number;
|
|
248
|
+
createdAt?: number;
|
|
249
|
+
updatedAt?: number;
|
|
250
|
+
}
|
|
251
|
+
interface NotesPinConfig {
|
|
252
|
+
notes?: NoteItem[];
|
|
253
|
+
[key: string]: unknown;
|
|
254
|
+
}
|
|
154
255
|
interface CsvViewerPinConfig {
|
|
155
256
|
csvText?: string;
|
|
156
257
|
csvData?: Array<Record<string, unknown>>;
|
|
@@ -166,6 +267,10 @@ interface UserStoryPinConfig {
|
|
|
166
267
|
interface ChatPinConfig {
|
|
167
268
|
title?: string;
|
|
168
269
|
placeholder?: string;
|
|
270
|
+
/** Pin this discussion thread is about (commentary / feedback). */
|
|
271
|
+
linked_pin_id?: string;
|
|
272
|
+
/** Cached title for display without fetching the linked pin. */
|
|
273
|
+
linked_pin_title?: string;
|
|
169
274
|
[key: string]: unknown;
|
|
170
275
|
}
|
|
171
276
|
interface IntroPinConfig {
|
|
@@ -179,10 +284,69 @@ interface MastraPinConfig {
|
|
|
179
284
|
workflowId?: string;
|
|
180
285
|
[key: string]: unknown;
|
|
181
286
|
}
|
|
287
|
+
interface BusinessCardField {
|
|
288
|
+
id: string;
|
|
289
|
+
key: string;
|
|
290
|
+
value: string;
|
|
291
|
+
}
|
|
292
|
+
interface BusinessCardPinConfig {
|
|
293
|
+
sectionTitle?: string;
|
|
294
|
+
fields?: BusinessCardField[];
|
|
295
|
+
imageConfig?: {
|
|
296
|
+
url?: string;
|
|
297
|
+
alt?: string;
|
|
298
|
+
fileId?: string;
|
|
299
|
+
[key: string]: unknown;
|
|
300
|
+
};
|
|
301
|
+
imagePosition?: 'left' | 'right' | string;
|
|
302
|
+
[key: string]: unknown;
|
|
303
|
+
}
|
|
304
|
+
interface VideoPinConfig {
|
|
305
|
+
url?: string;
|
|
306
|
+
fileId?: string;
|
|
307
|
+
fileName?: string;
|
|
308
|
+
mimeType?: 'video/mp4' | string;
|
|
309
|
+
caption?: string;
|
|
310
|
+
size?: number;
|
|
311
|
+
[key: string]: unknown;
|
|
312
|
+
}
|
|
313
|
+
interface AudioPinTrack {
|
|
314
|
+
url: string;
|
|
315
|
+
fileId?: string;
|
|
316
|
+
fileName?: string;
|
|
317
|
+
mimeType?: 'audio/mpeg' | 'audio/wav' | 'audio/x-wav' | string;
|
|
318
|
+
size?: number;
|
|
319
|
+
[key: string]: unknown;
|
|
320
|
+
}
|
|
321
|
+
interface AudioPinConfig {
|
|
322
|
+
url?: string;
|
|
323
|
+
fileId?: string;
|
|
324
|
+
fileName?: string;
|
|
325
|
+
mimeType?: 'audio/mpeg' | 'audio/wav' | 'audio/x-wav' | string;
|
|
326
|
+
caption?: string;
|
|
327
|
+
size?: number;
|
|
328
|
+
tracks?: AudioPinTrack[];
|
|
329
|
+
[key: string]: unknown;
|
|
330
|
+
}
|
|
182
331
|
interface TextMediaPinConfig {
|
|
183
332
|
title?: string;
|
|
184
333
|
text?: string;
|
|
334
|
+
subtext?: string;
|
|
185
335
|
textPosition?: 'left' | 'right' | string;
|
|
336
|
+
mediaType?: 'embed' | 'image' | string;
|
|
337
|
+
embedConfig?: {
|
|
338
|
+
type?: string;
|
|
339
|
+
url?: string;
|
|
340
|
+
aspectRatio?: string;
|
|
341
|
+
autoplay?: boolean;
|
|
342
|
+
[key: string]: unknown;
|
|
343
|
+
};
|
|
344
|
+
imageConfig?: {
|
|
345
|
+
url?: string;
|
|
346
|
+
alt?: string;
|
|
347
|
+
fileId?: string;
|
|
348
|
+
[key: string]: unknown;
|
|
349
|
+
};
|
|
186
350
|
[key: string]: unknown;
|
|
187
351
|
}
|
|
188
352
|
interface FileUploadPinConfig {
|
|
@@ -199,6 +363,26 @@ interface ChecklistPinConfig {
|
|
|
199
363
|
items: ChecklistItem[];
|
|
200
364
|
[key: string]: unknown;
|
|
201
365
|
}
|
|
366
|
+
interface ComparisonSideConfig {
|
|
367
|
+
label: string;
|
|
368
|
+
body: string;
|
|
369
|
+
}
|
|
370
|
+
interface ComparisonMatchPair {
|
|
371
|
+
left: number;
|
|
372
|
+
right: number;
|
|
373
|
+
}
|
|
374
|
+
interface ComparisonPinConfig {
|
|
375
|
+
title?: string;
|
|
376
|
+
left: ComparisonSideConfig;
|
|
377
|
+
right: ComparisonSideConfig;
|
|
378
|
+
highlightedLines?: {
|
|
379
|
+
left?: number[];
|
|
380
|
+
right?: number[];
|
|
381
|
+
};
|
|
382
|
+
matches?: ComparisonMatchPair[];
|
|
383
|
+
showVsBadge?: boolean;
|
|
384
|
+
[key: string]: unknown;
|
|
385
|
+
}
|
|
202
386
|
interface CalendarPinConfig {
|
|
203
387
|
weekStartsOn?: number;
|
|
204
388
|
events?: Array<Record<string, unknown>>;
|
|
@@ -215,12 +399,6 @@ interface RealtimeCanvasPinConfig {
|
|
|
215
399
|
roomId?: string;
|
|
216
400
|
[key: string]: unknown;
|
|
217
401
|
}
|
|
218
|
-
interface LineChartPinConfig extends ChartsPinConfig {
|
|
219
|
-
}
|
|
220
|
-
interface TreePinConfig {
|
|
221
|
-
nodes?: TreeNode[];
|
|
222
|
-
[key: string]: unknown;
|
|
223
|
-
}
|
|
224
402
|
interface PinConfigByType {
|
|
225
403
|
markdown: MarkdownPinConfig;
|
|
226
404
|
image: ImagePinConfig;
|
|
@@ -228,6 +406,7 @@ interface PinConfigByType {
|
|
|
228
406
|
table: TablePinConfig;
|
|
229
407
|
charts: ChartsPinConfig;
|
|
230
408
|
mermaid: MermaidPinConfig;
|
|
409
|
+
code: CodePinConfig;
|
|
231
410
|
embed: EmbedPinConfig;
|
|
232
411
|
'pdf-viewer': PdfViewerPinConfig;
|
|
233
412
|
'excel-viewer': ExcelViewerPinConfig;
|
|
@@ -236,21 +415,28 @@ interface PinConfigByType {
|
|
|
236
415
|
'json-viewer': JsonViewerPinConfig;
|
|
237
416
|
'json-list': JsonListPinConfig;
|
|
238
417
|
links: LinksPinConfig;
|
|
418
|
+
'qr-code': QrCodePinConfig;
|
|
419
|
+
'social-handles': SocialHandlesPinConfig;
|
|
239
420
|
steps: StepsPinConfig;
|
|
421
|
+
trace: TracePinConfig;
|
|
422
|
+
plan: PlanPinConfig;
|
|
423
|
+
notes: NotesPinConfig;
|
|
240
424
|
'csv-viewer': CsvViewerPinConfig;
|
|
241
425
|
'user-story': UserStoryPinConfig;
|
|
242
426
|
chat: ChatPinConfig;
|
|
243
427
|
intro: IntroPinConfig;
|
|
244
428
|
mastra: MastraPinConfig;
|
|
245
429
|
'text-media': TextMediaPinConfig;
|
|
430
|
+
'business-card': BusinessCardPinConfig;
|
|
431
|
+
video: VideoPinConfig;
|
|
432
|
+
audio: AudioPinConfig;
|
|
246
433
|
'file-upload': FileUploadPinConfig;
|
|
247
434
|
'kanban-board': KanbanBoardPinConfig;
|
|
248
435
|
checklist: ChecklistPinConfig;
|
|
436
|
+
comparison: ComparisonPinConfig;
|
|
249
437
|
calendar: CalendarPinConfig;
|
|
250
438
|
roadmap: RoadmapPinConfig;
|
|
251
439
|
'realtime-canvas': RealtimeCanvasPinConfig;
|
|
252
|
-
'line-chart': LineChartPinConfig;
|
|
253
|
-
tree: TreePinConfig;
|
|
254
440
|
}
|
|
255
441
|
interface PinMetadataBase {
|
|
256
442
|
title: string;
|
|
@@ -341,6 +527,13 @@ interface CreateTablePinInput extends PinMetadataBase {
|
|
|
341
527
|
pin_layout?: PinLayout;
|
|
342
528
|
is_public?: boolean;
|
|
343
529
|
}
|
|
530
|
+
interface UpdateTablePinInput {
|
|
531
|
+
columns?: TableColumn[];
|
|
532
|
+
rows?: TableRow[];
|
|
533
|
+
title?: string;
|
|
534
|
+
tags?: string[];
|
|
535
|
+
description?: string;
|
|
536
|
+
}
|
|
344
537
|
interface CreateEmbedPinInput extends PinMetadataBase {
|
|
345
538
|
url: string;
|
|
346
539
|
type?: string;
|
|
@@ -349,16 +542,15 @@ interface CreateEmbedPinInput extends PinMetadataBase {
|
|
|
349
542
|
}
|
|
350
543
|
|
|
351
544
|
/**
|
|
352
|
-
* API
|
|
545
|
+
* API types shared by the v1 Pins client
|
|
353
546
|
*/
|
|
354
|
-
|
|
355
|
-
interface ApiResponse<T = any> {
|
|
547
|
+
interface ApiResponse<T = unknown> {
|
|
356
548
|
success: boolean;
|
|
357
549
|
data: T;
|
|
358
550
|
error?: {
|
|
359
551
|
code: string;
|
|
360
552
|
message: string;
|
|
361
|
-
details?:
|
|
553
|
+
details?: unknown;
|
|
362
554
|
};
|
|
363
555
|
}
|
|
364
556
|
interface PaginatedResponse<T> {
|
|
@@ -367,173 +559,6 @@ interface PaginatedResponse<T> {
|
|
|
367
559
|
limit: number;
|
|
368
560
|
offset: number;
|
|
369
561
|
}
|
|
370
|
-
interface Pinboard {
|
|
371
|
-
id: string;
|
|
372
|
-
user_id: string;
|
|
373
|
-
title: string;
|
|
374
|
-
tags?: string[];
|
|
375
|
-
layout?: Record<string, any>;
|
|
376
|
-
mobile_layout?: Record<string, any>;
|
|
377
|
-
pins?: Pin[];
|
|
378
|
-
is_public: boolean;
|
|
379
|
-
allow_comments: boolean;
|
|
380
|
-
require_sign_in: boolean;
|
|
381
|
-
created_at: string;
|
|
382
|
-
updated_at: string;
|
|
383
|
-
}
|
|
384
|
-
interface CreatePinboardRequest {
|
|
385
|
-
title: string;
|
|
386
|
-
tags?: string[];
|
|
387
|
-
layout?: Record<string, any>;
|
|
388
|
-
mobile_layout?: Record<string, any>;
|
|
389
|
-
}
|
|
390
|
-
interface UpdatePinboardRequest {
|
|
391
|
-
title?: string;
|
|
392
|
-
tags?: string[];
|
|
393
|
-
is_public?: boolean;
|
|
394
|
-
allow_comments?: boolean;
|
|
395
|
-
require_sign_in?: boolean;
|
|
396
|
-
}
|
|
397
|
-
interface AddPinToPinboardRequest {
|
|
398
|
-
pin_id: string;
|
|
399
|
-
position?: {
|
|
400
|
-
x: number;
|
|
401
|
-
y: number;
|
|
402
|
-
w: number;
|
|
403
|
-
h: number;
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
interface UpdatePinboardLayoutRequest {
|
|
407
|
-
layout?: Record<string, any>;
|
|
408
|
-
mobile_layout?: Record<string, any>;
|
|
409
|
-
}
|
|
410
|
-
interface Page {
|
|
411
|
-
id: string;
|
|
412
|
-
owner_id: string;
|
|
413
|
-
is_public: boolean;
|
|
414
|
-
metadata: {
|
|
415
|
-
title: string;
|
|
416
|
-
description?: string;
|
|
417
|
-
tags: string[];
|
|
418
|
-
created_at: string;
|
|
419
|
-
updated_at?: string;
|
|
420
|
-
};
|
|
421
|
-
pins: string[];
|
|
422
|
-
layout?: Record<string, any>;
|
|
423
|
-
created_at: number;
|
|
424
|
-
updated_at: number;
|
|
425
|
-
}
|
|
426
|
-
interface CreatePageRequest {
|
|
427
|
-
metadata: {
|
|
428
|
-
title: string;
|
|
429
|
-
description?: string;
|
|
430
|
-
tags?: string[];
|
|
431
|
-
};
|
|
432
|
-
pins?: string[];
|
|
433
|
-
layout?: Record<string, any>;
|
|
434
|
-
is_public?: boolean;
|
|
435
|
-
allow_comments?: boolean;
|
|
436
|
-
require_sign_in?: boolean;
|
|
437
|
-
include_datasets?: boolean;
|
|
438
|
-
}
|
|
439
|
-
interface UpdatePageRequest {
|
|
440
|
-
metadata?: {
|
|
441
|
-
title?: string;
|
|
442
|
-
description?: string;
|
|
443
|
-
tags?: string[];
|
|
444
|
-
};
|
|
445
|
-
is_public?: boolean;
|
|
446
|
-
allow_comments?: boolean;
|
|
447
|
-
require_sign_in?: boolean;
|
|
448
|
-
include_datasets?: boolean;
|
|
449
|
-
}
|
|
450
|
-
interface AddPinToPageRequest {
|
|
451
|
-
pin_id: string;
|
|
452
|
-
}
|
|
453
|
-
interface ListPagesOptions {
|
|
454
|
-
limit?: number;
|
|
455
|
-
offset?: number;
|
|
456
|
-
}
|
|
457
|
-
type DatasetType = 'json' | 'markdown';
|
|
458
|
-
interface Dataset {
|
|
459
|
-
id: string;
|
|
460
|
-
user_id: string;
|
|
461
|
-
name: string;
|
|
462
|
-
type: DatasetType;
|
|
463
|
-
data: any;
|
|
464
|
-
created_at: string;
|
|
465
|
-
updated_at: string;
|
|
466
|
-
}
|
|
467
|
-
interface CreateDatasetRequest {
|
|
468
|
-
name: string;
|
|
469
|
-
type: DatasetType;
|
|
470
|
-
data: any;
|
|
471
|
-
}
|
|
472
|
-
interface UpdateDatasetRequest {
|
|
473
|
-
name?: string;
|
|
474
|
-
type?: DatasetType;
|
|
475
|
-
data?: any;
|
|
476
|
-
}
|
|
477
|
-
type BlockType = 'markdown' | 'mermaid' | 'conditional' | 'image' | 'stat-cards' | 'line-chart' | 'flexible-table' | 'embed';
|
|
478
|
-
interface Block {
|
|
479
|
-
id: string;
|
|
480
|
-
pin_id?: string;
|
|
481
|
-
title: string;
|
|
482
|
-
type: BlockType;
|
|
483
|
-
template: string | Record<string, any>;
|
|
484
|
-
order: number;
|
|
485
|
-
created_at?: string;
|
|
486
|
-
updated_at?: string;
|
|
487
|
-
}
|
|
488
|
-
interface CreateBlockRequest {
|
|
489
|
-
title: string;
|
|
490
|
-
type: BlockType;
|
|
491
|
-
template: string | Record<string, any>;
|
|
492
|
-
order?: number;
|
|
493
|
-
}
|
|
494
|
-
interface UpdateBlockRequest {
|
|
495
|
-
title?: string;
|
|
496
|
-
type?: BlockType;
|
|
497
|
-
template?: string | Record<string, any>;
|
|
498
|
-
order?: number;
|
|
499
|
-
}
|
|
500
|
-
type CollaboratorRole = 'viewer' | 'editor' | 'owner';
|
|
501
|
-
interface Collaborator {
|
|
502
|
-
user_id: string;
|
|
503
|
-
email: string;
|
|
504
|
-
role: CollaboratorRole;
|
|
505
|
-
added_at: string;
|
|
506
|
-
}
|
|
507
|
-
interface InviteCollaboratorRequest {
|
|
508
|
-
email: string;
|
|
509
|
-
role: CollaboratorRole;
|
|
510
|
-
}
|
|
511
|
-
interface UpdateCollaboratorRoleRequest {
|
|
512
|
-
role: CollaboratorRole;
|
|
513
|
-
}
|
|
514
|
-
interface Permissions {
|
|
515
|
-
role: CollaboratorRole;
|
|
516
|
-
can_view: boolean;
|
|
517
|
-
can_edit: boolean;
|
|
518
|
-
can_delete: boolean;
|
|
519
|
-
can_share: boolean;
|
|
520
|
-
can_manage_collaborators: boolean;
|
|
521
|
-
}
|
|
522
|
-
interface RateLimitInfo {
|
|
523
|
-
tier: string;
|
|
524
|
-
minute: {
|
|
525
|
-
limit: number;
|
|
526
|
-
used: number;
|
|
527
|
-
remaining: number;
|
|
528
|
-
resetAt: Date;
|
|
529
|
-
};
|
|
530
|
-
hour: {
|
|
531
|
-
limit: number;
|
|
532
|
-
used: number;
|
|
533
|
-
remaining: number;
|
|
534
|
-
resetAt: Date;
|
|
535
|
-
};
|
|
536
|
-
}
|
|
537
562
|
|
|
538
563
|
/**
|
|
539
564
|
* Pins API Methods
|
|
@@ -586,6 +611,8 @@ declare class PinsMethods {
|
|
|
586
611
|
createMarkdown(input: CreateMarkdownPinInput): Promise<Pin<'markdown'>>;
|
|
587
612
|
createStatCards(input: CreateStatCardsPinInput): Promise<Pin<'stat-cards'>>;
|
|
588
613
|
createTable(input: CreateTablePinInput): Promise<Pin<'table'>>;
|
|
614
|
+
/** Partial table pin_config update with typed columns/rows. */
|
|
615
|
+
updateTable(pinId: string, input: UpdateTablePinInput): Promise<Pin<'table'>>;
|
|
589
616
|
createEmbed(input: CreateEmbedPinInput): Promise<Pin<'embed'>>;
|
|
590
617
|
/**
|
|
591
618
|
* @deprecated Use createMarkdown({ title, content, ... }) — old signature ignored content in title
|
|
@@ -594,367 +621,62 @@ declare class PinsMethods {
|
|
|
594
621
|
}
|
|
595
622
|
|
|
596
623
|
/**
|
|
597
|
-
*
|
|
624
|
+
* Configuration for the v1 Pins API client
|
|
598
625
|
*/
|
|
599
|
-
|
|
600
|
-
declare class PinboardsMethods {
|
|
601
|
-
private client;
|
|
602
|
-
constructor(client: PindownClient);
|
|
603
|
-
/**
|
|
604
|
-
* Create a new pinboard
|
|
605
|
-
*/
|
|
606
|
-
create(request: CreatePinboardRequest): Promise<Pinboard>;
|
|
607
|
-
/**
|
|
608
|
-
* Get a pinboard by ID
|
|
609
|
-
*/
|
|
610
|
-
get(boardId: string): Promise<Pinboard>;
|
|
611
|
-
/**
|
|
612
|
-
* List all pinboards
|
|
613
|
-
*/
|
|
614
|
-
list(): Promise<Pinboard[]>;
|
|
615
|
-
/**
|
|
616
|
-
* Update a pinboard
|
|
617
|
-
*/
|
|
618
|
-
update(boardId: string, request: UpdatePinboardRequest): Promise<Pinboard>;
|
|
619
|
-
/**
|
|
620
|
-
* Delete a pinboard
|
|
621
|
-
*/
|
|
622
|
-
delete(boardId: string): Promise<void>;
|
|
623
|
-
/**
|
|
624
|
-
* Add a pin to a pinboard
|
|
625
|
-
*/
|
|
626
|
-
addPin(boardId: string, request: AddPinToPinboardRequest): Promise<Pinboard>;
|
|
627
|
-
/**
|
|
628
|
-
* Remove a pin from a pinboard
|
|
629
|
-
*/
|
|
630
|
-
removePin(boardId: string, pinId: string): Promise<void>;
|
|
631
|
-
/**
|
|
632
|
-
* Update pinboard layout
|
|
633
|
-
*/
|
|
634
|
-
updateLayout(boardId: string, request: UpdatePinboardLayoutRequest): Promise<Pinboard>;
|
|
635
|
-
/**
|
|
636
|
-
* Update pinboard sharing settings
|
|
637
|
-
*/
|
|
638
|
-
share(boardId: string, request: {
|
|
639
|
-
is_public?: boolean;
|
|
640
|
-
require_sign_in?: boolean;
|
|
641
|
-
allow_comments?: boolean;
|
|
642
|
-
}): Promise<Pinboard>;
|
|
643
|
-
/**
|
|
644
|
-
* Get multiple pinboards by IDs in a single request (max 100 pinboards)
|
|
645
|
-
*/
|
|
646
|
-
batchGet(pinboardIds: string[]): Promise<{
|
|
647
|
-
found: Pinboard[];
|
|
648
|
-
not_found: string[];
|
|
649
|
-
permission_denied: string[];
|
|
650
|
-
}>;
|
|
651
|
-
/**
|
|
652
|
-
* Add multiple pins to a pinboard with layout in a single request (max 50 pins)
|
|
653
|
-
*/
|
|
654
|
-
batchAddPins(boardId: string, pinIds: string[], layout?: Record<string, {
|
|
655
|
-
x: number;
|
|
656
|
-
y: number;
|
|
657
|
-
w: number;
|
|
658
|
-
h: number;
|
|
659
|
-
}>): Promise<{
|
|
660
|
-
added: string[];
|
|
661
|
-
failed: Array<{
|
|
662
|
-
id: string;
|
|
663
|
-
error: string;
|
|
664
|
-
}>;
|
|
665
|
-
layout_updated: boolean;
|
|
666
|
-
}>;
|
|
667
|
-
/**
|
|
668
|
-
* Remove multiple pins from a pinboard in a single request (max 50 pins)
|
|
669
|
-
*/
|
|
670
|
-
batchRemovePins(boardId: string, pinIds: string[]): Promise<{
|
|
671
|
-
removed: string[];
|
|
672
|
-
failed: Array<{
|
|
673
|
-
id: string;
|
|
674
|
-
error: string;
|
|
675
|
-
}>;
|
|
676
|
-
}>;
|
|
677
|
-
/**
|
|
678
|
-
* Create a custom role for a pinboard (max 5 roles per pinboard)
|
|
679
|
-
*/
|
|
680
|
-
createRole(boardId: string, request: {
|
|
681
|
-
name: string;
|
|
682
|
-
color: string;
|
|
683
|
-
permissions?: Record<string, any>;
|
|
684
|
-
}): Promise<{
|
|
685
|
-
roleId: string;
|
|
686
|
-
name: string;
|
|
687
|
-
color: string;
|
|
688
|
-
}>;
|
|
689
|
-
/**
|
|
690
|
-
* List custom roles for a pinboard
|
|
691
|
-
*/
|
|
692
|
-
listRoles(boardId: string): Promise<Record<string, any>>;
|
|
693
|
-
/**
|
|
694
|
-
* Update a custom role
|
|
695
|
-
*/
|
|
696
|
-
updateRole(boardId: string, roleId: string, request: {
|
|
697
|
-
name?: string;
|
|
698
|
-
color?: string;
|
|
699
|
-
permissions?: Record<string, any>;
|
|
700
|
-
}): Promise<void>;
|
|
701
|
-
/**
|
|
702
|
-
* Delete a custom role
|
|
703
|
-
*/
|
|
704
|
-
deleteRole(boardId: string, roleId: string): Promise<void>;
|
|
705
|
-
/**
|
|
706
|
-
* Assign custom roles to a user (user must be a collaborator first)
|
|
707
|
-
*/
|
|
708
|
-
assignUserRoles(boardId: string, userId: string, roleIds: string[]): Promise<void>;
|
|
709
|
-
/**
|
|
710
|
-
* Set role requirements for a pin (only users with these roles can see the pin)
|
|
711
|
-
*/
|
|
712
|
-
setPinRoleRequirements(boardId: string, pinId: string, roleIds: string[]): Promise<void>;
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/**
|
|
716
|
-
* Pages API Methods
|
|
717
|
-
*/
|
|
718
|
-
|
|
719
|
-
declare class PagesMethods {
|
|
720
|
-
private client;
|
|
721
|
-
constructor(client: PindownClient);
|
|
722
|
-
/**
|
|
723
|
-
* Create a new page
|
|
724
|
-
*/
|
|
725
|
-
create(request: CreatePageRequest): Promise<Page>;
|
|
726
|
-
/**
|
|
727
|
-
* Get a page by ID
|
|
728
|
-
*/
|
|
729
|
-
get(pageId: string): Promise<Page>;
|
|
730
|
-
/**
|
|
731
|
-
* List all pages
|
|
732
|
-
*/
|
|
733
|
-
list(options?: ListPagesOptions): Promise<{
|
|
734
|
-
pages: Page[];
|
|
735
|
-
total: number;
|
|
736
|
-
}>;
|
|
737
|
-
/**
|
|
738
|
-
* List pages shared with user
|
|
739
|
-
*/
|
|
740
|
-
listShared(options?: ListPagesOptions): Promise<{
|
|
741
|
-
pages: Page[];
|
|
742
|
-
total: number;
|
|
743
|
-
}>;
|
|
744
|
-
/**
|
|
745
|
-
* Update a page
|
|
746
|
-
*/
|
|
747
|
-
update(pageId: string, request: UpdatePageRequest): Promise<Page>;
|
|
748
|
-
/**
|
|
749
|
-
* Delete a page
|
|
750
|
-
*/
|
|
751
|
-
delete(pageId: string): Promise<void>;
|
|
752
|
-
/**
|
|
753
|
-
* Add a pin to a page
|
|
754
|
-
*/
|
|
755
|
-
addPin(pageId: string, request: AddPinToPageRequest): Promise<void>;
|
|
756
|
-
/**
|
|
757
|
-
* Remove a pin from a page
|
|
758
|
-
*/
|
|
759
|
-
removePin(pageId: string, pinId: string): Promise<void>;
|
|
760
|
-
/**
|
|
761
|
-
* List pins in a page
|
|
762
|
-
*/
|
|
763
|
-
listPins(pageId: string): Promise<{
|
|
764
|
-
pins: string[];
|
|
765
|
-
total: number;
|
|
766
|
-
}>;
|
|
767
|
-
/**
|
|
768
|
-
* Get multiple pages by IDs in a single request (max 100 pages)
|
|
769
|
-
*/
|
|
770
|
-
batchGet(pageIds: string[]): Promise<{
|
|
771
|
-
found: Page[];
|
|
772
|
-
not_found: string[];
|
|
773
|
-
permission_denied: string[];
|
|
774
|
-
}>;
|
|
775
|
-
/**
|
|
776
|
-
* Create multiple pages in a single request (max 50 pages)
|
|
777
|
-
*/
|
|
778
|
-
batchCreate(pages: CreatePageRequest[]): Promise<{
|
|
779
|
-
created: Array<{
|
|
780
|
-
id: string;
|
|
781
|
-
index: number;
|
|
782
|
-
created_at: number;
|
|
783
|
-
}>;
|
|
784
|
-
failed: Array<{
|
|
785
|
-
index: number;
|
|
786
|
-
error: string;
|
|
787
|
-
}>;
|
|
788
|
-
}>;
|
|
789
|
-
/**
|
|
790
|
-
* Update multiple pages in a single request (max 50 pages)
|
|
791
|
-
*/
|
|
792
|
-
batchUpdate(updates: Array<{
|
|
793
|
-
id: string;
|
|
794
|
-
} & UpdatePageRequest>): Promise<{
|
|
795
|
-
updated: string[];
|
|
796
|
-
failed: Array<{
|
|
797
|
-
id: string;
|
|
798
|
-
error: string;
|
|
799
|
-
}>;
|
|
800
|
-
updated_at: number;
|
|
801
|
-
}>;
|
|
802
|
-
/**
|
|
803
|
-
* Delete multiple pages in a single request (max 50 pages)
|
|
804
|
-
*/
|
|
805
|
-
batchDelete(pageIds: string[]): Promise<{
|
|
806
|
-
deleted: string[];
|
|
807
|
-
failed: Array<{
|
|
808
|
-
id: string;
|
|
809
|
-
error: string;
|
|
810
|
-
}>;
|
|
811
|
-
}>;
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
/**
|
|
815
|
-
* Collaborators API Methods
|
|
816
|
-
*/
|
|
817
|
-
|
|
818
|
-
declare class CollaboratorsMethods {
|
|
819
|
-
private client;
|
|
820
|
-
constructor(client: PindownClient);
|
|
821
|
-
/**
|
|
822
|
-
* List collaborators for a pin
|
|
823
|
-
*/
|
|
824
|
-
listForPin(pinId: string): Promise<{
|
|
825
|
-
owner: Collaborator;
|
|
826
|
-
collaborators: Collaborator[];
|
|
827
|
-
pending_invites: Array<{
|
|
828
|
-
email: string;
|
|
829
|
-
role: string;
|
|
830
|
-
invited_at: string;
|
|
831
|
-
}>;
|
|
832
|
-
}>;
|
|
833
|
-
/**
|
|
834
|
-
* Invite a collaborator to a pin
|
|
835
|
-
*/
|
|
836
|
-
inviteToPin(pinId: string, request: InviteCollaboratorRequest): Promise<void>;
|
|
837
|
-
/**
|
|
838
|
-
* Update a pin collaborator's role
|
|
839
|
-
*/
|
|
840
|
-
updatePinRole(pinId: string, userId: string, request: UpdateCollaboratorRoleRequest): Promise<void>;
|
|
841
|
-
/**
|
|
842
|
-
* Remove a collaborator from a pin
|
|
843
|
-
*/
|
|
844
|
-
removeFromPin(pinId: string, userId: string): Promise<void>;
|
|
845
|
-
/**
|
|
846
|
-
* Get current user's permissions for a pin
|
|
847
|
-
*/
|
|
848
|
-
getPinPermissions(pinId: string): Promise<Permissions>;
|
|
849
|
-
/**
|
|
850
|
-
* List collaborators for a pinboard
|
|
851
|
-
*/
|
|
852
|
-
listForPinboard(boardId: string): Promise<{
|
|
853
|
-
owner: Collaborator;
|
|
854
|
-
collaborators: Collaborator[];
|
|
855
|
-
pending_invites: Array<{
|
|
856
|
-
email: string;
|
|
857
|
-
role: string;
|
|
858
|
-
invited_at: string;
|
|
859
|
-
}>;
|
|
860
|
-
}>;
|
|
861
|
-
/**
|
|
862
|
-
* Invite a collaborator to a pinboard
|
|
863
|
-
*/
|
|
864
|
-
inviteToPinboard(boardId: string, request: InviteCollaboratorRequest): Promise<void>;
|
|
865
|
-
/**
|
|
866
|
-
* Update a pinboard collaborator's role
|
|
867
|
-
*/
|
|
868
|
-
updatePinboardRole(boardId: string, userId: string, request: UpdateCollaboratorRoleRequest): Promise<void>;
|
|
869
|
-
/**
|
|
870
|
-
* Remove a collaborator from a pinboard
|
|
871
|
-
*/
|
|
872
|
-
removeFromPinboard(boardId: string, userId: string): Promise<void>;
|
|
873
|
-
/**
|
|
874
|
-
* Get current user's permissions for a pinboard
|
|
875
|
-
*/
|
|
876
|
-
getPinboardPermissions(boardId: string): Promise<Permissions>;
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
/**
|
|
880
|
-
* Configuration types for Pindown API Client
|
|
881
|
-
*/
|
|
882
|
-
type Tier = 'starter' | 'hobby' | 'pro' | 'teams' | 'agency';
|
|
883
626
|
interface PindownConfig {
|
|
884
|
-
/**
|
|
885
|
-
* Your Pindown API key (from https://pindown.ai/api-keys)
|
|
886
|
-
*/
|
|
627
|
+
/** Workspace-plan API key from https://pindown.ai/api-keys */
|
|
887
628
|
apiKey: string;
|
|
888
|
-
/**
|
|
889
|
-
* Your subscription tier (auto-detected from server if not provided)
|
|
890
|
-
* @internal Only use for testing - production should auto-detect
|
|
891
|
-
*/
|
|
892
|
-
tier?: Tier;
|
|
893
|
-
/**
|
|
894
|
-
* Base URL for the API
|
|
895
|
-
* @default 'https://api.pindown.ai/v1'
|
|
896
|
-
*/
|
|
629
|
+
/** @default 'https://api.pindown.ai/v1' */
|
|
897
630
|
baseURL?: string;
|
|
898
|
-
/**
|
|
899
|
-
* Enable rate limit tracking
|
|
900
|
-
* @default true
|
|
901
|
-
*/
|
|
902
|
-
enableRateLimitTracking?: boolean;
|
|
903
|
-
/**
|
|
904
|
-
* Maximum number of retry attempts for failed requests
|
|
905
|
-
* @default 3
|
|
906
|
-
*/
|
|
631
|
+
/** @default 3 */
|
|
907
632
|
maxRetries?: number;
|
|
908
|
-
/**
|
|
909
|
-
* Timeout for requests in milliseconds
|
|
910
|
-
* @default 30000 (30 seconds)
|
|
911
|
-
*/
|
|
633
|
+
/** @default 30000 */
|
|
912
634
|
timeout?: number;
|
|
913
635
|
}
|
|
914
636
|
|
|
915
637
|
/**
|
|
916
|
-
* Pindown API Client
|
|
638
|
+
* Pindown API Client — v1 Pins API only
|
|
917
639
|
*/
|
|
918
640
|
|
|
919
641
|
declare class PindownClient {
|
|
920
642
|
private config;
|
|
921
|
-
private rateLimiter?;
|
|
922
|
-
private tierDetected;
|
|
923
643
|
readonly pins: PinsMethods;
|
|
924
|
-
readonly pinboards: PinboardsMethods;
|
|
925
|
-
readonly pages: PagesMethods;
|
|
926
|
-
readonly collaborators: CollaboratorsMethods;
|
|
927
644
|
constructor(config: PindownConfig);
|
|
928
|
-
|
|
929
|
-
* Core request method
|
|
930
|
-
*/
|
|
931
|
-
request<T = any>(method: string, endpoint: string, data?: any): Promise<T>;
|
|
932
|
-
/**
|
|
933
|
-
* Handle error responses from API
|
|
934
|
-
*/
|
|
645
|
+
request<T = unknown>(method: string, endpoint: string, data?: unknown): Promise<T>;
|
|
935
646
|
private handleErrorResponse;
|
|
936
|
-
/**
|
|
937
|
-
* Detect tier from response headers
|
|
938
|
-
*/
|
|
939
|
-
private detectTierFromHeaders;
|
|
940
|
-
/**
|
|
941
|
-
* Get current rate limit info
|
|
942
|
-
*/
|
|
943
|
-
getRateLimitInfo(): RateLimitInfo | null;
|
|
944
|
-
/**
|
|
945
|
-
* Get current tier
|
|
946
|
-
*/
|
|
947
|
-
getTier(): Tier | null;
|
|
948
|
-
/**
|
|
949
|
-
* Destroy the client (cleanup resources)
|
|
950
|
-
*/
|
|
951
|
-
destroy(): void;
|
|
952
647
|
}
|
|
953
648
|
|
|
954
649
|
/**
|
|
955
|
-
*
|
|
650
|
+
* Runtime hints + minimal examples per pin type.
|
|
651
|
+
* Use when building API payloads without opening the docs every time.
|
|
956
652
|
*/
|
|
957
653
|
|
|
654
|
+
interface PinConfigFieldHint {
|
|
655
|
+
path: string;
|
|
656
|
+
type: string;
|
|
657
|
+
required: boolean;
|
|
658
|
+
description: string;
|
|
659
|
+
}
|
|
660
|
+
interface PinConfigHint<T extends PinTypeId = PinTypeId> {
|
|
661
|
+
pin_type: T;
|
|
662
|
+
summary: string;
|
|
663
|
+
required_fields: string[];
|
|
664
|
+
optional_fields: string[];
|
|
665
|
+
fields: PinConfigFieldHint[];
|
|
666
|
+
/** Minimal valid pin_config for create/update */
|
|
667
|
+
example_config: PinConfigByType[T];
|
|
668
|
+
/** Typical PUT /v1/pins/:id body (root-level pin_config) */
|
|
669
|
+
example_update: UpdatePinRequest<T>;
|
|
670
|
+
}
|
|
671
|
+
/** Per-type hints (expand over time; table is fully documented). */
|
|
672
|
+
declare const PIN_CONFIG_HINTS: Partial<Record<PinTypeId, PinConfigHint>>;
|
|
673
|
+
declare function getPinConfigHint<T extends PinTypeId>(pinType: T): PinConfigHint<T> | undefined;
|
|
674
|
+
/** Pretty-print field hints for CLI / logging. */
|
|
675
|
+
declare function formatPinConfigHint(pinType: PinTypeId): string;
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* Error classes for the v1 Pins API client
|
|
679
|
+
*/
|
|
958
680
|
declare class PindownError extends Error {
|
|
959
681
|
constructor(message: string);
|
|
960
682
|
}
|
|
@@ -968,24 +690,11 @@ declare class NotFoundError extends PindownError {
|
|
|
968
690
|
constructor(resource: string);
|
|
969
691
|
}
|
|
970
692
|
declare class ValidationError extends PindownError {
|
|
971
|
-
details?:
|
|
972
|
-
constructor(message: string, details?:
|
|
693
|
+
details?: unknown;
|
|
694
|
+
constructor(message: string, details?: unknown);
|
|
973
695
|
}
|
|
974
696
|
declare class RateLimitError extends PindownError {
|
|
975
|
-
|
|
976
|
-
limit: number;
|
|
977
|
-
used: number;
|
|
978
|
-
remaining: number;
|
|
979
|
-
resetAt: Date;
|
|
980
|
-
tier: Tier;
|
|
981
|
-
constructor(params: {
|
|
982
|
-
window: 'minute' | 'hour';
|
|
983
|
-
limit: number;
|
|
984
|
-
used: number;
|
|
985
|
-
remaining: number;
|
|
986
|
-
resetAt: Date;
|
|
987
|
-
tier: Tier;
|
|
988
|
-
});
|
|
697
|
+
constructor(message?: string);
|
|
989
698
|
}
|
|
990
699
|
declare class ServerError extends PindownError {
|
|
991
700
|
statusCode: number;
|
|
@@ -995,4 +704,4 @@ declare class NetworkError extends PindownError {
|
|
|
995
704
|
constructor(message?: string);
|
|
996
705
|
}
|
|
997
706
|
|
|
998
|
-
export { ALL_PIN_TYPES, type
|
|
707
|
+
export { ALL_PIN_TYPES, type ApiResponse, type AudioPinConfig, type AudioPinTrack, AuthenticationError, type BusinessCardField, type BusinessCardPinConfig, type CalendarPinConfig, type ChartsPinConfig, type ChatPinConfig, type ChecklistItem, type ChecklistPinConfig, type CreateEmbedPinInput, type CreateMarkdownPinInput, type CreateNestedPinRequest, type CreatePinRequest, type CreateStatCardsPinInput, type CreateTablePinInput, type CreateTypedPinRequest, type CsvViewerPinConfig, type EmbedPinConfig, type ExcelViewerPinConfig, type FileUploadPinConfig, ForbiddenError, type GalleryImage, type GalleryPinConfig, type ImagePinConfig, type IntroPinConfig, type JsonListPinConfig, type JsonViewerPinConfig, type KanbanBoardPinConfig, type KanbanColumn, type LinkItem, type LinksPinConfig, type ListPinsOptions, type MarkdownPinConfig, type MastraPinConfig, type MermaidPinConfig, NetworkError, NotFoundError, PIN_CONFIG_HINTS, PRODUCT_PIN_TYPES, type PaginatedResponse, type PdfViewerPinConfig, type Pin, type PinCardType, type PinConfigByType, type PinConfigFieldHint, type PinConfigHint, type PinDataType, type PinLayout, type PinMetadata, type PinMetadataBase, type PinTypeId, PindownClient, type PindownConfig, PindownError, type ProductPinTypeId, type QrCodePinConfig, RateLimitError, type RealtimeCanvasPinConfig, type RoadmapPinConfig, ServerError, type SharePinRequest, type StatCardItem, type StatCardsPinConfig, type StepItem, type StepsPinConfig, type TableColumn, type TablePinConfig, type TableRow, type TextMediaPinConfig, type TimelinePinConfig, type UpdatePinRequest, type UpdateTablePinInput, type UserStoryPinConfig, ValidationError, type VideoPinConfig, formatPinConfigHint, getPinConfigHint };
|