@visus-io/notion-sdk-ts 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +7 -6
  2. package/dist/api/asyncTasks.api.d.ts +70 -0
  3. package/dist/api/asyncTasks.api.js +68 -0
  4. package/dist/api/base.api.js +1 -0
  5. package/dist/api/blocks.api.d.ts +433 -73
  6. package/dist/api/blocks.api.js +39 -0
  7. package/dist/api/comments.api.d.ts +40 -5
  8. package/dist/api/comments.api.js +43 -1
  9. package/dist/api/customEmojis.api.d.ts +36 -0
  10. package/dist/api/customEmojis.api.js +36 -0
  11. package/dist/api/dataSources.api.d.ts +62 -11
  12. package/dist/api/dataSources.api.js +22 -0
  13. package/dist/api/databases.api.d.ts +40 -6
  14. package/dist/api/fileUploads.api.d.ts +1 -1
  15. package/dist/api/index.d.ts +3 -0
  16. package/dist/api/index.js +7 -1
  17. package/dist/api/pages.api.d.ts +142 -10
  18. package/dist/api/pages.api.js +64 -0
  19. package/dist/api/search.api.d.ts +10 -2
  20. package/dist/api/users.api.d.ts +1 -0
  21. package/dist/api/views.api.d.ts +284 -0
  22. package/dist/api/views.api.js +169 -0
  23. package/dist/client.js +3 -3
  24. package/dist/errors.d.ts +5 -1
  25. package/dist/errors.js +6 -0
  26. package/dist/helpers/block.helpers.d.ts +38 -1
  27. package/dist/helpers/block.helpers.js +45 -3
  28. package/dist/helpers/file.helpers.d.ts +36 -1
  29. package/dist/helpers/file.helpers.js +26 -4
  30. package/dist/helpers/filter.helpers.d.ts +6 -6
  31. package/dist/helpers/index.d.ts +3 -2
  32. package/dist/helpers/index.js +5 -1
  33. package/dist/helpers/pagination.helpers.d.ts +56 -0
  34. package/dist/helpers/pagination.helpers.js +86 -0
  35. package/dist/helpers/property.helpers.d.ts +29 -0
  36. package/dist/helpers/property.helpers.js +27 -0
  37. package/dist/helpers/webhook.helpers.d.ts +52 -0
  38. package/dist/helpers/webhook.helpers.js +81 -0
  39. package/dist/models/asyncTask.model.d.ts +59 -0
  40. package/dist/models/asyncTask.model.js +89 -0
  41. package/dist/models/block.model.js +4 -1
  42. package/dist/models/customEmoji.model.d.ts +28 -0
  43. package/dist/models/customEmoji.model.js +42 -0
  44. package/dist/models/dataSource.model.d.ts +3 -3
  45. package/dist/models/dataSource.model.js +1 -1
  46. package/dist/models/database.model.d.ts +7 -3
  47. package/dist/models/database.model.js +7 -1
  48. package/dist/models/index.d.ts +3 -0
  49. package/dist/models/index.js +7 -1
  50. package/dist/models/page.model.d.ts +2 -0
  51. package/dist/models/page.model.js +6 -0
  52. package/dist/models/view.model.d.ts +79 -0
  53. package/dist/models/view.model.js +119 -0
  54. package/dist/notion.d.ts +26 -7
  55. package/dist/notion.js +19 -3
  56. package/dist/schemas/asyncTask.schema.d.ts +42 -0
  57. package/dist/schemas/asyncTask.schema.js +83 -0
  58. package/dist/schemas/block.schema.d.ts +378 -72
  59. package/dist/schemas/block.schema.js +33 -7
  60. package/dist/schemas/comment.schema.d.ts +8 -3
  61. package/dist/schemas/customEmoji.schema.d.ts +13 -0
  62. package/dist/schemas/customEmoji.schema.js +48 -0
  63. package/dist/schemas/dataSource.schema.d.ts +68 -10
  64. package/dist/schemas/dataSource.schema.js +22 -4
  65. package/dist/schemas/database.schema.d.ts +38 -6
  66. package/dist/schemas/database.schema.js +3 -2
  67. package/dist/schemas/fileUpload.schema.d.ts +1 -1
  68. package/dist/schemas/icon.schema.d.ts +92 -0
  69. package/dist/schemas/icon.schema.js +88 -0
  70. package/dist/schemas/index.d.ts +6 -0
  71. package/dist/schemas/index.js +6 -0
  72. package/dist/schemas/meetingNotesQuery.schema.d.ts +4187 -0
  73. package/dist/schemas/meetingNotesQuery.schema.js +62 -0
  74. package/dist/schemas/page.schema.d.ts +46 -9
  75. package/dist/schemas/page.schema.js +4 -2
  76. package/dist/schemas/pageMarkdown.schema.d.ts +59 -0
  77. package/dist/schemas/pageMarkdown.schema.js +65 -0
  78. package/dist/schemas/pageProperties.schema.d.ts +30 -18
  79. package/dist/schemas/pageProperties.schema.js +2 -3
  80. package/dist/schemas/pagination.schema.d.ts +30 -3
  81. package/dist/schemas/pagination.schema.js +18 -1
  82. package/dist/schemas/parent.schema.d.ts +10 -1
  83. package/dist/schemas/parent.schema.js +9 -3
  84. package/dist/schemas/propertyObjects.schema.d.ts +12 -12
  85. package/dist/schemas/richText.schema.d.ts +8 -6
  86. package/dist/schemas/richText.schema.js +1 -1
  87. package/dist/schemas/user.schema.d.ts +2 -0
  88. package/dist/schemas/user.schema.js +2 -1
  89. package/dist/schemas/view.schema.d.ts +1077 -0
  90. package/dist/schemas/view.schema.js +115 -0
  91. package/package.json +2 -2
@@ -93,6 +93,8 @@ export interface UpdateDatabaseOptions {
93
93
  cover?: unknown;
94
94
  /** Move to trash or restore from trash */
95
95
  in_trash?: boolean;
96
+ /** Lock or unlock the database from editing */
97
+ is_locked?: boolean;
96
98
  /** Whether the database is inline */
97
99
  is_inline?: boolean;
98
100
  /** Move the database to a different parent */
@@ -120,6 +122,7 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
120
122
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
121
123
  person: import("zod").ZodObject<{
122
124
  email: import("zod").ZodEmail;
125
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
123
126
  }, import("zod/v4/core").$strip>;
124
127
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
125
128
  object: import("zod").ZodLiteral<"user">;
@@ -153,6 +156,7 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
153
156
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
154
157
  person: import("zod").ZodObject<{
155
158
  email: import("zod").ZodEmail;
159
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
156
160
  }, import("zod/v4/core").$strip>;
157
161
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
158
162
  object: import("zod").ZodLiteral<"user">;
@@ -192,11 +196,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
192
196
  underline: import("zod").ZodBoolean;
193
197
  code: import("zod").ZodBoolean;
194
198
  color: import("zod").ZodEnum<{
199
+ default: "default";
195
200
  blue: "blue";
196
201
  blue_background: "blue_background";
197
202
  brown: "brown";
198
203
  brown_background: "brown_background";
199
- default: "default";
200
204
  gray: "gray";
201
205
  gray_background: "gray_background";
202
206
  green: "green";
@@ -261,6 +265,7 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
261
265
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
262
266
  person: import("zod").ZodObject<{
263
267
  email: import("zod").ZodEmail;
268
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
264
269
  }, import("zod/v4/core").$strip>;
265
270
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
266
271
  object: import("zod").ZodLiteral<"user">;
@@ -293,11 +298,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
293
298
  underline: import("zod").ZodBoolean;
294
299
  code: import("zod").ZodBoolean;
295
300
  color: import("zod").ZodEnum<{
301
+ default: "default";
296
302
  blue: "blue";
297
303
  blue_background: "blue_background";
298
304
  brown: "brown";
299
305
  brown_background: "brown_background";
300
- default: "default";
301
306
  gray: "gray";
302
307
  gray_background: "gray_background";
303
308
  green: "green";
@@ -328,11 +333,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
328
333
  underline: import("zod").ZodBoolean;
329
334
  code: import("zod").ZodBoolean;
330
335
  color: import("zod").ZodEnum<{
336
+ default: "default";
331
337
  blue: "blue";
332
338
  blue_background: "blue_background";
333
339
  brown: "brown";
334
340
  brown_background: "brown_background";
335
- default: "default";
336
341
  gray: "gray";
337
342
  gray_background: "gray_background";
338
343
  green: "green";
@@ -367,11 +372,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
367
372
  underline: import("zod").ZodBoolean;
368
373
  code: import("zod").ZodBoolean;
369
374
  color: import("zod").ZodEnum<{
375
+ default: "default";
370
376
  blue: "blue";
371
377
  blue_background: "blue_background";
372
378
  brown: "brown";
373
379
  brown_background: "brown_background";
374
- default: "default";
375
380
  gray: "gray";
376
381
  gray_background: "gray_background";
377
382
  green: "green";
@@ -436,6 +441,7 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
436
441
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
437
442
  person: import("zod").ZodObject<{
438
443
  email: import("zod").ZodEmail;
444
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
439
445
  }, import("zod/v4/core").$strip>;
440
446
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
441
447
  object: import("zod").ZodLiteral<"user">;
@@ -468,11 +474,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
468
474
  underline: import("zod").ZodBoolean;
469
475
  code: import("zod").ZodBoolean;
470
476
  color: import("zod").ZodEnum<{
477
+ default: "default";
471
478
  blue: "blue";
472
479
  blue_background: "blue_background";
473
480
  brown: "brown";
474
481
  brown_background: "brown_background";
475
- default: "default";
476
482
  gray: "gray";
477
483
  gray_background: "gray_background";
478
484
  green: "green";
@@ -503,11 +509,11 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
503
509
  underline: import("zod").ZodBoolean;
504
510
  code: import("zod").ZodBoolean;
505
511
  color: import("zod").ZodEnum<{
512
+ default: "default";
506
513
  blue: "blue";
507
514
  blue_background: "blue_background";
508
515
  brown: "brown";
509
516
  brown_background: "brown_background";
510
- default: "default";
511
517
  gray: "gray";
512
518
  gray_background: "gray_background";
513
519
  green: "green";
@@ -546,6 +552,30 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
546
552
  }, import("zod/v4/core").$strip>], "type">, import("zod").ZodObject<{
547
553
  type: import("zod").ZodLiteral<"emoji">;
548
554
  emoji: import("zod").ZodString;
555
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
556
+ type: import("zod").ZodLiteral<"icon">;
557
+ icon: import("zod").ZodObject<{
558
+ name: import("zod").ZodString;
559
+ color: import("zod").ZodOptional<import("zod").ZodEnum<{
560
+ blue: "blue";
561
+ brown: "brown";
562
+ gray: "gray";
563
+ green: "green";
564
+ orange: "orange";
565
+ pink: "pink";
566
+ purple: "purple";
567
+ red: "red";
568
+ yellow: "yellow";
569
+ lightgray: "lightgray";
570
+ }>>;
571
+ }, import("zod/v4/core").$strip>;
572
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
573
+ type: import("zod").ZodLiteral<"custom_emoji">;
574
+ custom_emoji: import("zod").ZodObject<{
575
+ id: import("zod").ZodUUID;
576
+ name: import("zod").ZodOptional<import("zod").ZodString>;
577
+ url: import("zod").ZodOptional<import("zod").ZodURL>;
578
+ }, import("zod/v4/core").$strip>;
549
579
  }, import("zod/v4/core").$strip>]>>;
550
580
  cover: import("zod").ZodNullable<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
551
581
  type: import("zod").ZodLiteral<"file">;
@@ -580,10 +610,14 @@ export declare class DatabasesAPI extends BaseAPI<NotionDatabase, Database> {
580
610
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
581
611
  type: import("zod").ZodLiteral<"block_id">;
582
612
  block_id: import("zod").ZodUUID;
613
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
614
+ type: import("zod").ZodLiteral<"agent_id">;
615
+ agent_id: import("zod").ZodUUID;
583
616
  }, import("zod/v4/core").$strip>], "type">;
584
617
  url: import("zod").ZodURL;
585
618
  in_trash: import("zod").ZodBoolean;
586
619
  is_inline: import("zod").ZodBoolean;
620
+ is_locked: import("zod").ZodOptional<import("zod").ZodBoolean>;
587
621
  public_url: import("zod").ZodNullable<import("zod").ZodURL>;
588
622
  }, import("zod/v4/core").$strip>;
589
623
  ModelClass: typeof Database;
@@ -29,10 +29,10 @@ export declare class FileUploadsAPI extends BaseAPI<NotionFileUpload, FileUpload
29
29
  created_time: import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>;
30
30
  expiry_time: import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodISODateTime, import("zod").ZodISODate]>>;
31
31
  status: import("zod").ZodEnum<{
32
+ failed: "failed";
32
33
  pending: "pending";
33
34
  uploaded: "uploaded";
34
35
  expired: "expired";
35
- failed: "failed";
36
36
  }>;
37
37
  filename: import("zod").ZodString;
38
38
  content_type: import("zod").ZodNullable<import("zod").ZodString>;
@@ -1,8 +1,11 @@
1
+ export { AsyncTasksAPI } from './asyncTasks.api';
1
2
  export { BlocksAPI } from './blocks.api';
2
3
  export { CommentsAPI } from './comments.api';
4
+ export { CustomEmojisAPI } from './customEmojis.api';
3
5
  export { DatabasesAPI } from './databases.api';
4
6
  export { DataSourcesAPI } from './dataSources.api';
5
7
  export { FileUploadsAPI } from './fileUploads.api';
6
8
  export { PagesAPI } from './pages.api';
7
9
  export { SearchAPI } from './search.api';
8
10
  export { UsersAPI } from './users.api';
11
+ export { ViewsAPI } from './views.api';
package/dist/api/index.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UsersAPI = exports.SearchAPI = exports.PagesAPI = exports.FileUploadsAPI = exports.DataSourcesAPI = exports.DatabasesAPI = exports.CommentsAPI = exports.BlocksAPI = void 0;
3
+ exports.ViewsAPI = exports.UsersAPI = exports.SearchAPI = exports.PagesAPI = exports.FileUploadsAPI = exports.DataSourcesAPI = exports.DatabasesAPI = exports.CustomEmojisAPI = exports.CommentsAPI = exports.BlocksAPI = exports.AsyncTasksAPI = void 0;
4
+ var asyncTasks_api_1 = require("./asyncTasks.api");
5
+ Object.defineProperty(exports, "AsyncTasksAPI", { enumerable: true, get: function () { return asyncTasks_api_1.AsyncTasksAPI; } });
4
6
  var blocks_api_1 = require("./blocks.api");
5
7
  Object.defineProperty(exports, "BlocksAPI", { enumerable: true, get: function () { return blocks_api_1.BlocksAPI; } });
6
8
  var comments_api_1 = require("./comments.api");
7
9
  Object.defineProperty(exports, "CommentsAPI", { enumerable: true, get: function () { return comments_api_1.CommentsAPI; } });
10
+ var customEmojis_api_1 = require("./customEmojis.api");
11
+ Object.defineProperty(exports, "CustomEmojisAPI", { enumerable: true, get: function () { return customEmojis_api_1.CustomEmojisAPI; } });
8
12
  var databases_api_1 = require("./databases.api");
9
13
  Object.defineProperty(exports, "DatabasesAPI", { enumerable: true, get: function () { return databases_api_1.DatabasesAPI; } });
10
14
  var dataSources_api_1 = require("./dataSources.api");
@@ -17,3 +21,5 @@ var search_api_1 = require("./search.api");
17
21
  Object.defineProperty(exports, "SearchAPI", { enumerable: true, get: function () { return search_api_1.SearchAPI; } });
18
22
  var users_api_1 = require("./users.api");
19
23
  Object.defineProperty(exports, "UsersAPI", { enumerable: true, get: function () { return users_api_1.UsersAPI; } });
24
+ var views_api_1 = require("./views.api");
25
+ Object.defineProperty(exports, "ViewsAPI", { enumerable: true, get: function () { return views_api_1.ViewsAPI; } });
@@ -1,5 +1,5 @@
1
1
  import type { NotionClient } from '../client';
2
- import type { NotionPage } from '../schemas';
2
+ import type { MarkdownContentResponse, NotionPage, PageMarkdown } from '../schemas';
3
3
  import { Page } from '../models';
4
4
  import { BaseAPI } from './base.api';
5
5
  /**
@@ -35,6 +35,11 @@ export interface CreatePageOptions {
35
35
  cover?: unknown;
36
36
  /** Page content blocks (max 100) */
37
37
  children?: unknown[];
38
+ /**
39
+ * Page content as a markdown string, as an alternative to `properties`/`children`.
40
+ * Mutually exclusive with `properties` and `children`.
41
+ */
42
+ markdown?: string;
38
43
  /** Template to apply when creating the page */
39
44
  template?: {
40
45
  type: 'none';
@@ -56,6 +61,62 @@ export interface CreatePageOptions {
56
61
  type: 'page_end';
57
62
  };
58
63
  }
64
+ /**
65
+ * Parent for moving a page.
66
+ */
67
+ export type MovePageParent = {
68
+ type: 'page_id';
69
+ page_id: string;
70
+ } | {
71
+ type: 'data_source_id';
72
+ data_source_id: string;
73
+ };
74
+ /**
75
+ * Options for retrieving a page's content as markdown.
76
+ */
77
+ export interface GetPageMarkdownOptions {
78
+ /** Include meeting-note transcript content in the markdown output */
79
+ include_transcript?: boolean;
80
+ }
81
+ /**
82
+ * A single find-and-replace edit against a page's markdown content.
83
+ */
84
+ export interface MarkdownContentUpdate {
85
+ /** The exact existing markdown substring to replace */
86
+ old_str: string;
87
+ /** The replacement markdown content */
88
+ new_str: string;
89
+ /** Replace all occurrences of `old_str` instead of just the first */
90
+ replace_all_matches?: boolean;
91
+ }
92
+ /**
93
+ * Options for updating a page's markdown content.
94
+ */
95
+ export type UpdatePageMarkdownOptions = {
96
+ type: 'update_content';
97
+ content_updates: MarkdownContentUpdate[];
98
+ allow_deleting_content?: boolean;
99
+ allow_async?: boolean;
100
+ } | {
101
+ type: 'replace_content';
102
+ new_str: string;
103
+ allow_deleting_content?: boolean;
104
+ allow_async?: boolean;
105
+ } | {
106
+ type: 'insert_content';
107
+ content: string;
108
+ position?: {
109
+ type: 'start' | 'end';
110
+ };
111
+ after?: string;
112
+ allow_async?: boolean;
113
+ } | {
114
+ type: 'replace_content_range';
115
+ content: string;
116
+ content_range: unknown;
117
+ allow_deleting_content?: boolean;
118
+ allow_async?: boolean;
119
+ };
59
120
  /**
60
121
  * Options for updating a page.
61
122
  */
@@ -98,6 +159,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
98
159
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
99
160
  person: import("zod").ZodObject<{
100
161
  email: import("zod").ZodEmail;
162
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
101
163
  }, import("zod/v4/core").$strip>;
102
164
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
103
165
  object: import("zod").ZodLiteral<"user">;
@@ -131,6 +193,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
131
193
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
132
194
  person: import("zod").ZodObject<{
133
195
  email: import("zod").ZodEmail;
196
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
134
197
  }, import("zod/v4/core").$strip>;
135
198
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
136
199
  object: import("zod").ZodLiteral<"user">;
@@ -156,6 +219,8 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
156
219
  id: import("zod").ZodUUID;
157
220
  }, import("zod/v4/core").$strip>]>;
158
221
  in_trash: import("zod").ZodBoolean;
222
+ is_archived: import("zod").ZodOptional<import("zod").ZodBoolean>;
223
+ is_locked: import("zod").ZodOptional<import("zod").ZodBoolean>;
159
224
  icon: import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
160
225
  type: import("zod").ZodLiteral<"file">;
161
226
  file: import("zod").ZodObject<{
@@ -175,6 +240,30 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
175
240
  }, import("zod/v4/core").$strip>], "type">, import("zod").ZodObject<{
176
241
  type: import("zod").ZodLiteral<"emoji">;
177
242
  emoji: import("zod").ZodString;
243
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
244
+ type: import("zod").ZodLiteral<"icon">;
245
+ icon: import("zod").ZodObject<{
246
+ name: import("zod").ZodString;
247
+ color: import("zod").ZodOptional<import("zod").ZodEnum<{
248
+ blue: "blue";
249
+ brown: "brown";
250
+ gray: "gray";
251
+ green: "green";
252
+ orange: "orange";
253
+ pink: "pink";
254
+ purple: "purple";
255
+ red: "red";
256
+ yellow: "yellow";
257
+ lightgray: "lightgray";
258
+ }>>;
259
+ }, import("zod/v4/core").$strip>;
260
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
261
+ type: import("zod").ZodLiteral<"custom_emoji">;
262
+ custom_emoji: import("zod").ZodObject<{
263
+ id: import("zod").ZodUUID;
264
+ name: import("zod").ZodOptional<import("zod").ZodString>;
265
+ url: import("zod").ZodOptional<import("zod").ZodURL>;
266
+ }, import("zod/v4/core").$strip>;
178
267
  }, import("zod/v4/core").$strip>]>>;
179
268
  cover: import("zod").ZodNullable<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
180
269
  type: import("zod").ZodLiteral<"file">;
@@ -208,6 +297,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
208
297
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
209
298
  person: import("zod").ZodObject<{
210
299
  email: import("zod").ZodEmail;
300
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
211
301
  }, import("zod/v4/core").$strip>;
212
302
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
213
303
  object: import("zod").ZodLiteral<"user">;
@@ -300,6 +390,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
300
390
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
301
391
  person: import("zod").ZodObject<{
302
392
  email: import("zod").ZodEmail;
393
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
303
394
  }, import("zod/v4/core").$strip>;
304
395
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
305
396
  object: import("zod").ZodLiteral<"user">;
@@ -335,11 +426,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
335
426
  id: import("zod").ZodString;
336
427
  name: import("zod").ZodString;
337
428
  color: import("zod").ZodEnum<{
429
+ default: "default";
338
430
  blue: "blue";
339
431
  blue_background: "blue_background";
340
432
  brown: "brown";
341
433
  brown_background: "brown_background";
342
- default: "default";
343
434
  gray: "gray";
344
435
  gray_background: "gray_background";
345
436
  green: "green";
@@ -371,6 +462,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
371
462
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
372
463
  person: import("zod").ZodObject<{
373
464
  email: import("zod").ZodEmail;
465
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
374
466
  }, import("zod/v4/core").$strip>;
375
467
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
376
468
  object: import("zod").ZodLiteral<"user">;
@@ -424,11 +516,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
424
516
  underline: import("zod").ZodBoolean;
425
517
  code: import("zod").ZodBoolean;
426
518
  color: import("zod").ZodEnum<{
519
+ default: "default";
427
520
  blue: "blue";
428
521
  blue_background: "blue_background";
429
522
  brown: "brown";
430
523
  brown_background: "brown_background";
431
- default: "default";
432
524
  gray: "gray";
433
525
  gray_background: "gray_background";
434
526
  green: "green";
@@ -493,6 +585,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
493
585
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
494
586
  person: import("zod").ZodObject<{
495
587
  email: import("zod").ZodEmail;
588
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
496
589
  }, import("zod/v4/core").$strip>;
497
590
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
498
591
  object: import("zod").ZodLiteral<"user">;
@@ -525,11 +618,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
525
618
  underline: import("zod").ZodBoolean;
526
619
  code: import("zod").ZodBoolean;
527
620
  color: import("zod").ZodEnum<{
621
+ default: "default";
528
622
  blue: "blue";
529
623
  blue_background: "blue_background";
530
624
  brown: "brown";
531
625
  brown_background: "brown_background";
532
- default: "default";
533
626
  gray: "gray";
534
627
  gray_background: "gray_background";
535
628
  green: "green";
@@ -560,11 +653,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
560
653
  underline: import("zod").ZodBoolean;
561
654
  code: import("zod").ZodBoolean;
562
655
  color: import("zod").ZodEnum<{
656
+ default: "default";
563
657
  blue: "blue";
564
658
  blue_background: "blue_background";
565
659
  brown: "brown";
566
660
  brown_background: "brown_background";
567
- default: "default";
568
661
  gray: "gray";
569
662
  gray_background: "gray_background";
570
663
  green: "green";
@@ -636,11 +729,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
636
729
  id: import("zod").ZodString;
637
730
  name: import("zod").ZodString;
638
731
  color: import("zod").ZodEnum<{
732
+ default: "default";
639
733
  blue: "blue";
640
734
  blue_background: "blue_background";
641
735
  brown: "brown";
642
736
  brown_background: "brown_background";
643
- default: "default";
644
737
  gray: "gray";
645
738
  gray_background: "gray_background";
646
739
  green: "green";
@@ -664,11 +757,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
664
757
  id: import("zod").ZodString;
665
758
  name: import("zod").ZodString;
666
759
  color: import("zod").ZodEnum<{
760
+ default: "default";
667
761
  blue: "blue";
668
762
  blue_background: "blue_background";
669
763
  brown: "brown";
670
764
  brown_background: "brown_background";
671
- default: "default";
672
765
  gray: "gray";
673
766
  gray_background: "gray_background";
674
767
  green: "green";
@@ -703,11 +796,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
703
796
  underline: import("zod").ZodBoolean;
704
797
  code: import("zod").ZodBoolean;
705
798
  color: import("zod").ZodEnum<{
799
+ default: "default";
706
800
  blue: "blue";
707
801
  blue_background: "blue_background";
708
802
  brown: "brown";
709
803
  brown_background: "brown_background";
710
- default: "default";
711
804
  gray: "gray";
712
805
  gray_background: "gray_background";
713
806
  green: "green";
@@ -772,6 +865,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
772
865
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
773
866
  person: import("zod").ZodObject<{
774
867
  email: import("zod").ZodEmail;
868
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
775
869
  }, import("zod/v4/core").$strip>;
776
870
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
777
871
  object: import("zod").ZodLiteral<"user">;
@@ -804,11 +898,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
804
898
  underline: import("zod").ZodBoolean;
805
899
  code: import("zod").ZodBoolean;
806
900
  color: import("zod").ZodEnum<{
901
+ default: "default";
807
902
  blue: "blue";
808
903
  blue_background: "blue_background";
809
904
  brown: "brown";
810
905
  brown_background: "brown_background";
811
- default: "default";
812
906
  gray: "gray";
813
907
  gray_background: "gray_background";
814
908
  green: "green";
@@ -839,11 +933,11 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
839
933
  underline: import("zod").ZodBoolean;
840
934
  code: import("zod").ZodBoolean;
841
935
  color: import("zod").ZodEnum<{
936
+ default: "default";
842
937
  blue: "blue";
843
938
  blue_background: "blue_background";
844
939
  brown: "brown";
845
940
  brown_background: "brown_background";
846
- default: "default";
847
941
  gray: "gray";
848
942
  gray_background: "gray_background";
849
943
  green: "green";
@@ -890,6 +984,7 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
890
984
  avatar_url: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodURL, import("zod").ZodNull]>>;
891
985
  person: import("zod").ZodObject<{
892
986
  email: import("zod").ZodEmail;
987
+ email_verified: import("zod").ZodOptional<import("zod").ZodBoolean>;
893
988
  }, import("zod/v4/core").$strip>;
894
989
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
895
990
  object: import("zod").ZodLiteral<"user">;
@@ -937,6 +1032,9 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
937
1032
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
938
1033
  type: import("zod").ZodLiteral<"block_id">;
939
1034
  block_id: import("zod").ZodUUID;
1035
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1036
+ type: import("zod").ZodLiteral<"agent_id">;
1037
+ agent_id: import("zod").ZodUUID;
940
1038
  }, import("zod/v4/core").$strip>], "type">;
941
1039
  url: import("zod").ZodURL;
942
1040
  public_url: import("zod").ZodNullable<import("zod").ZodURL>;
@@ -964,6 +1062,30 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
964
1062
  * @see https://developers.notion.com/reference/post-page
965
1063
  */
966
1064
  create(options: CreatePageOptions): Promise<Page>;
1065
+ /**
1066
+ * Retrieve a page's content as markdown.
1067
+ *
1068
+ * @param pageId - The ID of the page to retrieve
1069
+ * @param options - Options for retrieving the markdown content
1070
+ * @returns The page's markdown content
1071
+ *
1072
+ * @see https://developers.notion.com/guides/data-apis/working-with-markdown-content
1073
+ */
1074
+ getMarkdown(pageId: string, options?: GetPageMarkdownOptions): Promise<PageMarkdown>;
1075
+ /**
1076
+ * Update a page's content as markdown.
1077
+ *
1078
+ * When `allow_async: true` is set and the write is large, the API may return an
1079
+ * `async_task` handle instead of completing synchronously -- poll it via
1080
+ * `notion.asyncTasks.poll(task.id)`.
1081
+ *
1082
+ * @param pageId - The ID of the page to update
1083
+ * @param options - The markdown update to apply
1084
+ * @returns The updated markdown content, or an async task handle if processed asynchronously
1085
+ *
1086
+ * @see https://developers.notion.com/guides/data-apis/working-with-markdown-content
1087
+ */
1088
+ updateMarkdown(pageId: string, options: UpdatePageMarkdownOptions): Promise<MarkdownContentResponse>;
967
1089
  /**
968
1090
  * Update a page's properties, icon, cover, or trash status.
969
1091
  *
@@ -974,6 +1096,16 @@ export declare class PagesAPI extends BaseAPI<NotionPage, Page> {
974
1096
  * @see https://developers.notion.com/reference/patch-page
975
1097
  */
976
1098
  update(pageId: string, options: UpdatePageOptions): Promise<Page>;
1099
+ /**
1100
+ * Move a page to a new parent page or data source.
1101
+ *
1102
+ * @param pageId - The ID of the page to move
1103
+ * @param parent - The new parent (a page or a data source)
1104
+ * @returns The moved page wrapped in a Page model
1105
+ *
1106
+ * @see https://developers.notion.com/reference/move-page
1107
+ */
1108
+ move(pageId: string, parent: MovePageParent): Promise<Page>;
977
1109
  /**
978
1110
  * Move a page to trash (convenience method).
979
1111
  *
@@ -5,6 +5,16 @@ const schemas_1 = require("../schemas");
5
5
  const models_1 = require("../models");
6
6
  const validation_1 = require("../validation");
7
7
  const base_api_1 = require("./base.api");
8
+ /**
9
+ * Assert that `markdown` isn't combined with `properties`/`children` when creating a page.
10
+ *
11
+ * @throws {NotionValidationError}
12
+ */
13
+ function validateMarkdownExclusivity(options) {
14
+ if (options.markdown !== undefined && (options.properties || options.children)) {
15
+ throw new validation_1.NotionValidationError('markdown cannot be combined with properties or children');
16
+ }
17
+ }
8
18
  /**
9
19
  * Pages API client for working with Notion pages.
10
20
  */
@@ -42,11 +52,53 @@ class PagesAPI extends base_api_1.BaseAPI {
42
52
  * @see https://developers.notion.com/reference/post-page
43
53
  */
44
54
  async create(options) {
55
+ validateMarkdownExclusivity(options);
45
56
  if (options.children) {
46
57
  (0, validation_1.validateArrayLength)(options.children, validation_1.LIMITS.ARRAY_ELEMENTS, 'children');
47
58
  }
48
59
  return this.createResource('/pages', options);
49
60
  }
61
+ /**
62
+ * Retrieve a page's content as markdown.
63
+ *
64
+ * @param pageId - The ID of the page to retrieve
65
+ * @param options - Options for retrieving the markdown content
66
+ * @returns The page's markdown content
67
+ *
68
+ * @see https://developers.notion.com/guides/data-apis/working-with-markdown-content
69
+ */
70
+ async getMarkdown(pageId, options) {
71
+ const query = options?.include_transcript !== undefined
72
+ ? { include_transcript: String(options.include_transcript) }
73
+ : undefined;
74
+ const response = await this.client.request({
75
+ method: 'GET',
76
+ path: `/pages/${pageId}/markdown`,
77
+ query,
78
+ });
79
+ return schemas_1.pageMarkdownSchema.parse(response);
80
+ }
81
+ /**
82
+ * Update a page's content as markdown.
83
+ *
84
+ * When `allow_async: true` is set and the write is large, the API may return an
85
+ * `async_task` handle instead of completing synchronously -- poll it via
86
+ * `notion.asyncTasks.poll(task.id)`.
87
+ *
88
+ * @param pageId - The ID of the page to update
89
+ * @param options - The markdown update to apply
90
+ * @returns The updated markdown content, or an async task handle if processed asynchronously
91
+ *
92
+ * @see https://developers.notion.com/guides/data-apis/working-with-markdown-content
93
+ */
94
+ async updateMarkdown(pageId, options) {
95
+ const response = await this.client.request({
96
+ method: 'PATCH',
97
+ path: `/pages/${pageId}/markdown`,
98
+ body: options,
99
+ });
100
+ return schemas_1.markdownContentResponseSchema.parse(response);
101
+ }
50
102
  /**
51
103
  * Update a page's properties, icon, cover, or trash status.
52
104
  *
@@ -59,6 +111,18 @@ class PagesAPI extends base_api_1.BaseAPI {
59
111
  async update(pageId, options) {
60
112
  return this.updateResource(`/pages/${pageId}`, options);
61
113
  }
114
+ /**
115
+ * Move a page to a new parent page or data source.
116
+ *
117
+ * @param pageId - The ID of the page to move
118
+ * @param parent - The new parent (a page or a data source)
119
+ * @returns The moved page wrapped in a Page model
120
+ *
121
+ * @see https://developers.notion.com/reference/move-page
122
+ */
123
+ async move(pageId, parent) {
124
+ return this.createResource(`/pages/${pageId}/move`, { parent });
125
+ }
62
126
  /**
63
127
  * Move a page to trash (convenience method).
64
128
  *