@notionhq/client 5.28.0 → 5.30.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 (79) hide show
  1. package/README.md +23 -2
  2. package/build/package.json +22 -14
  3. package/build/src/Client.d.ts +16 -181
  4. package/build/src/Client.d.ts.map +1 -1
  5. package/build/src/Client.js +0 -1
  6. package/build/src/Client.js.map +1 -1
  7. package/build/src/api-endpoint-methods.d.ts +6 -197
  8. package/build/src/api-endpoint-methods.d.ts.map +1 -1
  9. package/build/src/api-endpoint-methods.js +34 -1
  10. package/build/src/api-endpoint-methods.js.map +1 -1
  11. package/build/src/api-endpoints/agent-skills.d.ts +26 -0
  12. package/build/src/api-endpoints/agent-skills.d.ts.map +1 -1
  13. package/build/src/api-endpoints/agent-skills.js +12 -1
  14. package/build/src/api-endpoints/agent-skills.js.map +1 -1
  15. package/build/src/api-endpoints/agents.d.ts +2091 -2266
  16. package/build/src/api-endpoints/agents.d.ts.map +1 -1
  17. package/build/src/api-endpoints/agents.js +118 -118
  18. package/build/src/api-endpoints/agents.js.map +1 -1
  19. package/build/src/api-endpoints/async-tasks.d.ts +7 -4
  20. package/build/src/api-endpoints/async-tasks.d.ts.map +1 -1
  21. package/build/src/api-endpoints/async-tasks.js.map +1 -1
  22. package/build/src/api-endpoints/blocks.d.ts +7 -4
  23. package/build/src/api-endpoints/blocks.d.ts.map +1 -1
  24. package/build/src/api-endpoints/blocks.js +1 -1
  25. package/build/src/api-endpoints/blocks.js.map +1 -1
  26. package/build/src/api-endpoints/comments.d.ts +9 -3
  27. package/build/src/api-endpoints/comments.d.ts.map +1 -1
  28. package/build/src/api-endpoints/comments.js +2 -1
  29. package/build/src/api-endpoints/comments.js.map +1 -1
  30. package/build/src/api-endpoints/common.d.ts +168 -21
  31. package/build/src/api-endpoints/common.d.ts.map +1 -1
  32. package/build/src/api-endpoints/common.js.map +1 -1
  33. package/build/src/api-endpoints/data-sources.d.ts +4 -1
  34. package/build/src/api-endpoints/data-sources.d.ts.map +1 -1
  35. package/build/src/api-endpoints/data-sources.js +2 -1
  36. package/build/src/api-endpoints/data-sources.js.map +1 -1
  37. package/build/src/api-endpoints/databases.d.ts +5 -2
  38. package/build/src/api-endpoints/databases.d.ts.map +1 -1
  39. package/build/src/api-endpoints/databases.js +2 -0
  40. package/build/src/api-endpoints/databases.js.map +1 -1
  41. package/build/src/api-endpoints/file-uploads.d.ts.map +1 -1
  42. package/build/src/api-endpoints/file-uploads.js.map +1 -1
  43. package/build/src/api-endpoints/meeting-notes.d.ts +8 -106
  44. package/build/src/api-endpoints/meeting-notes.d.ts.map +1 -1
  45. package/build/src/api-endpoints/meeting-notes.js.map +1 -1
  46. package/build/src/api-endpoints/oauth.d.ts +1 -0
  47. package/build/src/api-endpoints/oauth.d.ts.map +1 -1
  48. package/build/src/api-endpoints/oauth.js.map +1 -1
  49. package/build/src/api-endpoints/pages.d.ts +10 -5
  50. package/build/src/api-endpoints/pages.d.ts.map +1 -1
  51. package/build/src/api-endpoints/pages.js +5 -1
  52. package/build/src/api-endpoints/pages.js.map +1 -1
  53. package/build/src/api-endpoints/search.d.ts +5 -2
  54. package/build/src/api-endpoints/search.d.ts.map +1 -1
  55. package/build/src/api-endpoints/search.js +1 -1
  56. package/build/src/api-endpoints/search.js.map +1 -1
  57. package/build/src/api-endpoints/views.d.ts +2 -1
  58. package/build/src/api-endpoints/views.d.ts.map +1 -1
  59. package/build/src/api-endpoints/views.js.map +1 -1
  60. package/build/src/api-endpoints/webhooks.d.ts +6 -0
  61. package/build/src/api-endpoints/webhooks.d.ts.map +1 -1
  62. package/build/src/api-endpoints/webhooks.js.map +1 -1
  63. package/build/src/errors.js.map +1 -1
  64. package/build/src/helpers.d.ts.map +1 -1
  65. package/build/src/helpers.js +2 -1
  66. package/build/src/helpers.js.map +1 -1
  67. package/build/src/index.d.ts +9 -5
  68. package/build/src/index.d.ts.map +1 -1
  69. package/build/src/index.js +4 -1
  70. package/build/src/index.js.map +1 -1
  71. package/build/src/meeting-notes.d.ts +3 -6
  72. package/build/src/meeting-notes.d.ts.map +1 -1
  73. package/build/src/meeting-notes.js +0 -27
  74. package/build/src/meeting-notes.js.map +1 -1
  75. package/build/src/webhooks.d.ts +1 -2
  76. package/build/src/webhooks.d.ts.map +1 -1
  77. package/build/src/webhooks.js +18 -58
  78. package/build/src/webhooks.js.map +1 -1
  79. package/package.json +22 -14
@@ -1 +1 @@
1
- {"version":3,"file":"views.js","sourceRoot":"","sources":["../../../src/api-endpoints/views.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C;;;AAo0B/C;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC;IAC3E,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAUV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAaV;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAwB,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CACxD,CAAA;AAgBV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAWV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAcV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,UAAU;CACtB,CAAA;AAgCV;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAC1C,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAoC,EAAU,EAAE,CACrD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA;AAaV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type {\n CreateViewQueryRequest,\n CreateViewRequest,\n DataSourceViewReferenceResponse,\n DatabaseParentResponse,\n EmptyObject,\n IdRequest,\n IdResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n RequestStatusResponse,\n UpdateViewRequest,\n} from \"./common\"\n\ntype BoardViewConfigResponse = {\n // The view configuration type.\n type: \"board\"\n // Column (horizontal) grouping - required for board view.\n group_by: GroupByConfigResponse\n // Sub-grouping (vertical swimlanes within columns).\n sub_group_by?: GroupByConfigResponse\n // Properties to display on each card.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\ntype CalendarViewConfigResponse = {\n // The view configuration type.\n type: \"calendar\"\n // Date property used to position items on the calendar - required.\n date_property_id: string\n // Date property name (convenience field).\n date_property_name?: string\n // Properties to display on calendar event cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Calendar view range.\n view_range?: \"week\" | \"month\"\n // Whether to show weekend days.\n show_weekends?: boolean\n}\n\ntype ChartAggregationResponse = {\n // The aggregation operator. \"count\" counts all rows and does not require a property_id.\n // All other operators require a property_id.\n aggregator:\n | \"count\"\n | \"count_values\"\n | \"sum\"\n | \"average\"\n | \"median\"\n | \"min\"\n | \"max\"\n | \"range\"\n | \"unique\"\n | \"empty\"\n | \"not_empty\"\n | \"percent_empty\"\n | \"percent_not_empty\"\n | \"checked\"\n | \"unchecked\"\n | \"percent_checked\"\n | \"percent_unchecked\"\n | \"earliest_date\"\n | \"latest_date\"\n | \"date_range\"\n // The property to aggregate on. Required for all operators except \"count\".\n property_id?: string\n}\n\ntype ChartReferenceLineResponse = {\n // Unique identifier for the reference line.\n id: string\n // The y-axis value where the reference line is drawn.\n value: number\n // Label displayed alongside the reference line.\n label: string\n // Color of the reference line.\n color:\n | \"gray\"\n | \"lightgray\"\n | \"brown\"\n | \"yellow\"\n | \"orange\"\n | \"green\"\n | \"blue\"\n | \"purple\"\n | \"pink\"\n | \"red\"\n // Line style: \"solid\" for a continuous line, \"dash\" for a dashed line.\n dash_style: \"solid\" | \"dash\"\n}\n\ntype ChartViewConfigResponse = {\n // The view configuration type.\n type: \"chart\"\n // The chart type: column (vertical bars), bar (horizontal bars), line, donut, or number\n // (single value display).\n chart_type: \"column\" | \"bar\" | \"line\" | \"donut\" | \"number\"\n // X-axis grouping configuration for column/bar/line/donut charts using grouped data.\n // Null when using results (raw property values) mode.\n x_axis?: GroupByConfigResponse | null\n // Y-axis aggregation for column/bar/line/donut charts using grouped data. Null when\n // using results mode.\n y_axis?: ChartAggregationResponse | null\n // Property ID for the x-axis name values when using results (raw property values) mode.\n x_axis_property_id?: string\n // Property ID for the y-axis numeric values when using results (raw property values)\n // mode.\n y_axis_property_id?: string\n // Aggregation configuration for number charts (single value display).\n value?: ChartAggregationResponse\n // Sort order for chart data.\n sort?:\n | \"manual\"\n | \"x_ascending\"\n | \"x_descending\"\n | \"y_ascending\"\n | \"y_descending\"\n // Color theme for the chart.\n color_theme?:\n | \"gray\"\n | \"blue\"\n | \"yellow\"\n | \"green\"\n | \"purple\"\n | \"teal\"\n | \"orange\"\n | \"pink\"\n | \"red\"\n | \"auto\"\n | \"colorful\"\n // Chart height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Whether to hide groups with no data on the x-axis.\n hide_empty_groups?: boolean\n // Legend display position. \"off\" hides the legend.\n legend_position?: \"off\" | \"bottom\" | \"side\"\n // Whether to show data value labels on chart elements.\n show_data_labels?: boolean\n // Which axis labels to display.\n axis_labels?: \"none\" | \"x_axis\" | \"y_axis\" | \"both\"\n // Which grid lines to display.\n grid_lines?: \"none\" | \"horizontal\" | \"vertical\" | \"both\"\n // Whether to show cumulative values (line charts only).\n cumulative?: boolean\n // Whether to use smooth curves (line charts only).\n smooth_line?: boolean\n // Whether to hide the shaded area under the line (line charts only).\n hide_line_fill_area?: boolean\n // How grouped/stacked bars are displayed. \"normal\" stacks values, \"percent\" normalizes\n // to 100%, \"side_by_side\" places bars next to each other.\n group_style?: \"normal\" | \"percent\" | \"side_by_side\"\n // Custom minimum value for the y-axis. Null clears the override.\n y_axis_min?: number | null\n // Custom maximum value for the y-axis. Null clears the override.\n y_axis_max?: number | null\n // What to display on donut chart slices.\n donut_labels?: \"none\" | \"value\" | \"name\" | \"name_and_value\"\n // Whether to hide the title label (number charts only).\n hide_title?: boolean\n // Stack-by grouping configuration for stacked/grouped bar charts (column/bar/line only).\n // Null when not stacked.\n stack_by?: GroupByConfigResponse | null\n // Reference lines drawn on the chart. Null when no reference lines are configured.\n reference_lines?: Array<ChartReferenceLineResponse> | null\n // Text caption displayed below the chart. Null when no caption is shown.\n caption?: string | null\n // Whether chart elements are colored by their numeric value (gradient coloring).\n color_by_value?: boolean\n}\n\ntype CheckboxGroupByConfigResponse = {\n // The property type for grouping.\n type: \"checkbox\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype CoverConfigResponse = {\n // Source of the cover image.\n type: \"page_cover\" | \"page_content\" | \"page_content_first\" | \"property\"\n // Property ID when type is \"property\".\n property_id?: string\n}\n\nexport type DashboardRowResponse = {\n // The ID of this row module.\n id: string\n // The widget modules within this row.\n widgets: Array<DashboardWidgetResponse>\n // Fixed height of the row in pixels.\n height?: number\n}\n\ntype DashboardViewConfigResponse = {\n // The view configuration type.\n type: \"dashboard\"\n // The rows that make up the dashboard layout. Each row contains one or more widget\n // modules.\n rows: Array<DashboardRowResponse>\n}\n\nexport type DashboardWidgetResponse = {\n // The ID of this widget module.\n id: string\n // The ID of the collection view rendered by this widget.\n view_id: string\n // Width of the widget in a 12-column grid (1-12). 12 means full width.\n width?: number\n // The 0-based index of the row this widget belongs to. Widgets in the same row share the\n // same row_index.\n row_index?: number\n}\n\nexport type DataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The name of the view.\n name: string\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n // The time when the view was created.\n created_time: string\n // The time when the view was last edited.\n last_edited_time: string\n // Canonical deep link to the view in Notion.\n url: string\n // The ID of the data source this view is scoped to, or null for dashboard views.\n data_source_id?: string | null\n // The user who created the view, or null if not available.\n created_by?: PartialUserObjectResponse | null\n // The user who last edited the view, or null if not available.\n last_edited_by?: PartialUserObjectResponse | null\n // The filter applied to this view (same shape as data source query filter).\n filter?: ViewFilterResponse | null\n // The sorts applied to this view (same shape as data source query sorts).\n sorts?: Array<ViewSortResponse> | null\n // Quick filters pinned to the view's filter bar. Keys are property IDs. Values are\n // filter conditions (same shape as a property filter without the property field). Null\n // when no quick filters are set.\n quick_filters?: Record<string, QuickFilterConditionResponse> | null\n // View presentation configuration.\n configuration?: ViewConfigResponse | null\n // For dashboard widget views, the ID of the parent dashboard view. Only present when\n // this view is a widget inside a dashboard.\n dashboard_view_id?: string\n}\n\ntype DateGroupByConfigResponse = {\n // The property type for grouping.\n type: \"date\" | \"created_time\" | \"last_edited_time\"\n // Property ID to group by.\n property_id: string\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups (no manual sort for dates).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\nexport type DeletedViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The ID of the deleted view query.\n id: IdResponse\n // Whether the view query was deleted.\n deleted: boolean\n}\n\ntype FormViewConfigResponse = {\n // The view configuration type.\n type: \"form\"\n // Whether the form is closed for submissions.\n is_form_closed?: boolean\n // Whether anonymous (non-logged-in) submissions are allowed.\n anonymous_submissions?: boolean\n // Permission level granted to the submitter on the created page after form submission.\n submission_permissions?:\n | \"none\"\n | \"comment_only\"\n | \"reader\"\n | \"read_and_write\"\n | \"editor\"\n}\n\ntype FormulaCheckboxSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"checkbox\"\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n}\n\ntype FormulaDateSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"date\"\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\ntype FormulaGroupByConfigResponse = {\n // The property type for grouping.\n type: \"formula\"\n // Property ID of the formula to group by.\n property_id: string\n // Sub-group-by configuration based on the formula result type.\n group_by: FormulaSubGroupByResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype FormulaNumberSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"number\"\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\n/**\n * Sub-group-by configuration for formula properties based on result type.\n */\ntype FormulaSubGroupByResponse =\n | FormulaDateSubGroupByResponse\n | FormulaTextSubGroupByResponse\n | FormulaNumberSubGroupByResponse\n | FormulaCheckboxSubGroupByResponse\n\ntype FormulaTextSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"text\"\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n}\n\ntype GalleryViewConfigResponse = {\n // The view configuration type.\n type: \"gallery\"\n // Properties to display on gallery cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\n/**\n * Group-by configuration based on property type.\n */\ntype GroupByConfigResponse =\n | SelectGroupByConfigResponse\n | StatusGroupByConfigResponse\n | PersonGroupByConfigResponse\n | RelationGroupByConfigResponse\n | DateGroupByConfigResponse\n | TextGroupByConfigResponse\n | NumberGroupByConfigResponse\n | CheckboxGroupByConfigResponse\n | FormulaGroupByConfigResponse\n\ntype GroupSortResponse = {\n // Sort direction for groups.\n type: \"manual\" | \"ascending\" | \"descending\"\n}\n\ntype ListViewConfigResponse = {\n // The view configuration type.\n type: \"list\"\n // Properties to display in list items.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype MapViewConfigResponse = {\n // The view configuration type.\n type: \"map\"\n // Map display height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Property ID of the location property used to position items on the map.\n map_by?: string\n // Map-by property name (convenience field).\n map_by_property_name?: string\n // Properties to display on map pin cards.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype NumberGroupByConfigResponse = {\n // The property type for grouping.\n type: \"number\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\ntype PageReferenceResponse = {\n // The object type.\n object: string\n // The object ID.\n id: IdResponse\n}\n\nexport type PartialDataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n}\n\ntype PersonGroupByConfigResponse = {\n // The property type for grouping.\n type: \"person\" | \"created_by\" | \"last_edited_by\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual supported).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype PropertySortResponse = {\n // The name or ID of the property to sort by.\n property: string\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * A property filter condition. Same shape as a property filter but without the\n * \"property\" field. For example: { \"select\": { \"equals\": \"High\" } }.\n */\ntype QuickFilterConditionResponse = Record<string, never>\n\ntype RelationGroupByConfigResponse = {\n // The property type for grouping.\n type: \"relation\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SelectGroupByConfigResponse = {\n // The property type for grouping.\n type: \"select\" | \"multi_select\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype StatusGroupByConfigResponse = {\n // The property type for grouping.\n type: \"status\"\n // Property ID to group by.\n property_id: string\n // How to group status values. \"group\" groups by status group (To Do/In Progress/Done),\n // \"option\" groups by individual option.\n group_by: \"group\" | \"option\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SubtaskConfigResponse = {\n // Relation property ID used for parent-child nesting.\n property_id?: string\n // How sub-items are displayed. \"show\" renders hierarchically with toggles, \"hidden\"\n // shows parents with a count, \"flattened\" shows sub-items with a parent indicator,\n // \"disabled\" turns off sub-item rendering.\n display_mode?: \"show\" | \"hidden\" | \"flattened\" | \"disabled\"\n // Which items are included when filtering. \"parents\" includes parent items only,\n // \"parents_and_subitems\" includes both, \"subitems\" includes sub-items only.\n filter_scope?: \"parents\" | \"parents_and_subitems\" | \"subitems\"\n // Property ID of the column showing the sub-item expand/collapse toggle.\n toggle_column_id?: string\n}\n\ntype TableViewConfigResponse = {\n // The view configuration type.\n type: \"table\"\n // Columns/properties visible in the table view.\n properties?: Array<ViewPropertyConfigResponse>\n // Vertical (row) grouping configuration.\n group_by?: GroupByConfigResponse\n // Sub-item (subtask) display configuration.\n subtasks?: SubtaskConfigResponse\n // Whether to wrap cell content by default.\n wrap_cells?: boolean\n // Index of the last frozen column. Columns up to and including this index are frozen.\n frozen_column_index?: number\n // Whether to show vertical lines between columns.\n show_vertical_lines?: boolean\n}\n\ntype TextGroupByConfigResponse = {\n // The property type for grouping.\n type: \"text\" | \"title\" | \"url\" | \"email\" | \"phone_number\"\n // Property ID to group by.\n property_id: string\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype TimelineArrowsByResponse = {\n // Relation property ID used for dependency arrows.\n property_id?: string | null\n}\n\ntype TimelinePreferenceResponse = {\n // Zoom level for the timeline.\n zoom_level:\n | \"hours\"\n | \"day\"\n | \"week\"\n | \"bi_week\"\n | \"month\"\n | \"quarter\"\n | \"year\"\n | \"5_years\"\n // Center timestamp for the timeline view (Unix timestamp in ms).\n center_timestamp?: number\n}\n\ntype TimelineViewConfigResponse = {\n // The view configuration type.\n type: \"timeline\"\n // Start date property - required.\n date_property_id: string\n // Start date property name (convenience field).\n date_property_name?: string\n // End date property (optional, for items that span a range).\n end_date_property_id?: string\n // End date property name (convenience field).\n end_date_property_name?: string\n // Properties to display on timeline items.\n properties?: Array<ViewPropertyConfigResponse>\n // Whether to show the table panel alongside the timeline.\n show_table?: boolean\n // Properties to display in the table panel (when show_table is true).\n table_properties?: Array<ViewPropertyConfigResponse>\n // Timeline zoom/preference state.\n preference?: TimelinePreferenceResponse\n // Dependency arrows configuration.\n arrows_by?: TimelineArrowsByResponse\n // Whether to color-code items by property.\n color_by?: boolean\n}\n\ntype TimestampSortResponse = {\n // The timestamp to sort by.\n timestamp: \"created_time\" | \"last_edited_time\"\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * View configuration, typed by view type (table, board, calendar, etc.).\n */\ntype ViewConfigResponse =\n | TableViewConfigResponse\n | BoardViewConfigResponse\n | CalendarViewConfigResponse\n | TimelineViewConfigResponse\n | GalleryViewConfigResponse\n | ListViewConfigResponse\n | MapViewConfigResponse\n | FormViewConfigResponse\n | ChartViewConfigResponse\n | DashboardViewConfigResponse\n\n/**\n * Filter for the view. Can be a property filter (filter by property value), timestamp\n * filter (filter by created_time or last_edited_time), or compound filter (combine\n * filters with and/or logic). Compound filters support up to 2 levels of nesting.\n */\ntype ViewFilterResponse =\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n }\n\ntype ViewPropertyConfigResponse = {\n // Property ID (stable identifier).\n property_id: string\n // Property name (convenience field, not stable across renames).\n property_name?: string\n // Whether this property is visible in the view.\n visible?: boolean\n // Width of the property column in pixels (table view only).\n width?: number\n // Whether to wrap content in this property cell/card.\n wrap?: boolean\n // How to display status properties (as select dropdown or checkbox).\n status_show_as?: \"select\" | \"checkbox\"\n // Property width mode in compact card layouts (board/gallery).\n card_property_width_mode?: \"full_line\" | \"inline\"\n // Date display format (date properties only). \"full\" = localized full date, \"short\" =\n // month and day, \"month_day_year\" = MM/DD/YYYY, \"day_month_year\" = DD/MM/YYYY,\n // \"year_month_day\" = YYYY/MM/DD, \"relative\" = relative dates.\n date_format?:\n | \"full\"\n | \"short\"\n | \"month_day_year\"\n | \"day_month_year\"\n | \"year_month_day\"\n | \"relative\"\n // Time display format (date properties only). \"12_hour\" = 12-hour clock with AM/PM,\n // \"24_hour\" = 24-hour clock, \"hidden\" = hide time.\n time_format?: \"12_hour\" | \"24_hour\" | \"hidden\"\n}\n\nexport type ViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The query ID.\n id: IdResponse\n // The view this query was executed against.\n view_id: IdResponse\n // When the cached query results expire.\n expires_at: string\n // Total number of results in the query.\n total_count: number\n // The page results for this page.\n results: Array<PageReferenceResponse>\n // Cursor for the next page of results.\n next_cursor: IdResponse | null\n // Whether there are more results.\n has_more: boolean\n // Set to `{ type: 'incomplete', incomplete_reason: 'query_result_limit_reached' }` when\n // the view's underlying data source has more rows matching this query than the\n // server-side pagination depth limit allows.\n request_status?: RequestStatusResponse\n}\n\n/**\n * Sort for the view. Can sort by property or timestamp.\n */\ntype ViewSortResponse = PropertySortResponse | TimestampSortResponse\n\ntype ListDatabaseViewsQueryParameters = {\n // ID of a Notion database (collection view block) to list views for. At least one of\n // database_id or data_source_id is required.\n database_id?: IdRequest\n // ID of a data source (collection) to list all views for, including linked views across\n // the workspace. At least one of database_id or data_source_id is required.\n data_source_id?: IdRequest\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided. If not supplied, this endpoint will return the first page of results.\n start_cursor?: string | null\n // The number of items from the full list desired in the response. Maximum: 100\n page_size?: number\n}\n\nexport type ListDatabaseViewsParameters = ListDatabaseViewsQueryParameters\n\nexport type ListDatabaseViewsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<DataSourceViewReferenceResponse>\n // Always `view`\n type: \"view\"\n view: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * List views\n */\nexport const listDatabaseViews = {\n method: \"get\",\n pathParams: [],\n queryParams: [\"database_id\", \"data_source_id\", \"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype CreateViewBodyParameters = CreateViewRequest\n\nexport type CreateViewParameters = CreateViewBodyParameters\n\nexport type CreateViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Create a view\n */\nexport const createView = {\n method: \"post\",\n pathParams: [],\n queryParams: [],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype GetViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\nexport type GetViewParameters = GetViewPathParameters\n\nexport type GetViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Retrieve a view\n */\nexport const getView = {\n method: \"get\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: GetViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype UpdateViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\ntype UpdateViewBodyParameters = UpdateViewRequest\n\nexport type UpdateViewParameters = UpdateViewPathParameters &\n UpdateViewBodyParameters\n\nexport type UpdateViewResponse =\n | PartialDataSourceViewObjectResponse\n | DataSourceViewObjectResponse\n\n/**\n * Update a view\n */\nexport const updateView = {\n method: \"patch\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: UpdateViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype DeleteViewPathParameters = {\n // The ID of the view to delete.\n view_id: IdRequest\n}\n\nexport type DeleteViewParameters = DeleteViewPathParameters\n\nexport type DeleteViewResponse = PartialDataSourceViewObjectResponse\n\n/**\n * Delete a view\n */\nexport const deleteView = {\n method: \"delete\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype CreateViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n}\n\ntype CreateViewQueryBodyParameters = CreateViewQueryRequest\n\nexport type CreateViewQueryParameters = CreateViewQueryPathParameters &\n CreateViewQueryBodyParameters\n\nexport type CreateViewQueryResponse = ViewQueryResponse\n\n/**\n * Create a view query\n */\nexport const createViewQuery = {\n method: \"post\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: CreateViewQueryPathParameters): string =>\n `views/${p.view_id}/queries`,\n} as const\n\ntype GetViewQueryResultsPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\ntype GetViewQueryResultsQueryParameters = {\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided.\n start_cursor?: string | null\n // The number of results to return per page. Maximum: 100\n page_size?: number\n}\n\nexport type GetViewQueryResultsParameters = GetViewQueryResultsPathParameters &\n GetViewQueryResultsQueryParameters\n\nexport type GetViewQueryResultsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<PartialPageObjectResponse>\n // Always `page`\n type: \"page\"\n page: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * Get view query results\n */\nexport const getViewQueryResults = {\n method: \"get\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [\"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (p: GetViewQueryResultsPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n\ntype DeleteViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\nexport type DeleteViewQueryParameters = DeleteViewQueryPathParameters\n\nexport type DeleteViewQueryResponse = DeletedViewQueryResponse\n\n/**\n * Delete a view query\n */\nexport const deleteViewQuery = {\n method: \"delete\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewQueryPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n"]}
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../../src/api-endpoints/views.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C;;;AA6zB/C;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC;IAC3E,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AASV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO;CACnB,CAAA;AAYV;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAwB,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CACxD,CAAA;AAeV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAWV;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAA2B,EAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;CAC3D,CAAA;AAcV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,UAAU;CACtB,CAAA;AAgCV;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAC1C,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAoC,EAAU,EAAE,CACrD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA;AAaV;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IAEd,IAAI,EAAE,CAAC,CAAgC,EAAU,EAAE,CACjD,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAA","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type {\n CreateViewQueryRequest,\n CreateViewRequest,\n DataSourceViewReferenceResponse,\n DatabaseParentResponse,\n EmptyObject,\n IdRequest,\n IdResponse,\n PartialPageObjectResponse,\n PartialUserObjectResponse,\n RequestStatusResponse,\n UpdateViewRequest,\n} from \"./common\"\n\ntype BoardViewConfigResponse = {\n // The view configuration type.\n type: \"board\"\n // Column (horizontal) grouping - required for board view.\n group_by: GroupByConfigResponse\n // Sub-grouping (vertical swimlanes within columns).\n sub_group_by?: GroupByConfigResponse\n // Properties to display on each card.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\ntype CalendarViewConfigResponse = {\n // The view configuration type.\n type: \"calendar\"\n // Date property used to position items on the calendar - required.\n date_property_id: string\n // Date property name (convenience field).\n date_property_name?: string\n // Properties to display on calendar event cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Calendar view range.\n view_range?: \"week\" | \"month\"\n // Whether to show weekend days.\n show_weekends?: boolean\n}\n\ntype ChartAggregationResponse = {\n // The aggregation operator. \"count\" counts all rows and does not require a property_id.\n // All other operators require a property_id.\n aggregator:\n | \"count\"\n | \"count_values\"\n | \"sum\"\n | \"average\"\n | \"median\"\n | \"min\"\n | \"max\"\n | \"range\"\n | \"unique\"\n | \"empty\"\n | \"not_empty\"\n | \"percent_empty\"\n | \"percent_not_empty\"\n | \"checked\"\n | \"unchecked\"\n | \"percent_checked\"\n | \"percent_unchecked\"\n | \"earliest_date\"\n | \"latest_date\"\n | \"date_range\"\n // The property to aggregate on. Required for all operators except \"count\".\n property_id?: string\n}\n\ntype ChartReferenceLineResponse = {\n // Unique identifier for the reference line.\n id: string\n // The y-axis value where the reference line is drawn.\n value: number\n // Label displayed alongside the reference line.\n label: string\n // Color of the reference line.\n color:\n | \"gray\"\n | \"lightgray\"\n | \"brown\"\n | \"yellow\"\n | \"orange\"\n | \"green\"\n | \"blue\"\n | \"purple\"\n | \"pink\"\n | \"red\"\n // Line style: \"solid\" for a continuous line, \"dash\" for a dashed line.\n dash_style: \"solid\" | \"dash\"\n}\n\ntype ChartViewConfigResponse = {\n // The view configuration type.\n type: \"chart\"\n // The chart type: column (vertical bars), bar (horizontal bars), line, donut, or number\n // (single value display).\n chart_type: \"column\" | \"bar\" | \"line\" | \"donut\" | \"number\"\n // X-axis grouping configuration for column/bar/line/donut charts using grouped data.\n // Null when using results (raw property values) mode.\n x_axis?: GroupByConfigResponse | null\n // Y-axis aggregation for column/bar/line/donut charts using grouped data. Null when\n // using results mode.\n y_axis?: ChartAggregationResponse | null\n // Property ID for the x-axis name values when using results (raw property values) mode.\n x_axis_property_id?: string\n // Property ID for the y-axis numeric values when using results (raw property values)\n // mode.\n y_axis_property_id?: string\n // Aggregation configuration for number charts (single value display).\n value?: ChartAggregationResponse\n // Sort order for chart data.\n sort?:\n \"manual\" | \"x_ascending\" | \"x_descending\" | \"y_ascending\" | \"y_descending\"\n // Color theme for the chart.\n color_theme?:\n | \"gray\"\n | \"blue\"\n | \"yellow\"\n | \"green\"\n | \"purple\"\n | \"teal\"\n | \"orange\"\n | \"pink\"\n | \"red\"\n | \"auto\"\n | \"colorful\"\n // Chart height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Whether to hide groups with no data on the x-axis.\n hide_empty_groups?: boolean\n // Legend display position. \"off\" hides the legend.\n legend_position?: \"off\" | \"bottom\" | \"side\"\n // Whether to show data value labels on chart elements.\n show_data_labels?: boolean\n // Which axis labels to display.\n axis_labels?: \"none\" | \"x_axis\" | \"y_axis\" | \"both\"\n // Which grid lines to display.\n grid_lines?: \"none\" | \"horizontal\" | \"vertical\" | \"both\"\n // Whether to show cumulative values (line charts only).\n cumulative?: boolean\n // Whether to use smooth curves (line charts only).\n smooth_line?: boolean\n // Whether to hide the shaded area under the line (line charts only).\n hide_line_fill_area?: boolean\n // How grouped/stacked bars are displayed. \"normal\" stacks values, \"percent\" normalizes\n // to 100%, \"side_by_side\" places bars next to each other.\n group_style?: \"normal\" | \"percent\" | \"side_by_side\"\n // Custom minimum value for the y-axis. Null clears the override.\n y_axis_min?: number | null\n // Custom maximum value for the y-axis. Null clears the override.\n y_axis_max?: number | null\n // What to display on donut chart slices.\n donut_labels?: \"none\" | \"value\" | \"name\" | \"name_and_value\"\n // Whether to hide the title label (number charts only).\n hide_title?: boolean\n // Stack-by grouping configuration for stacked/grouped bar charts (column/bar/line only).\n // Null when not stacked.\n stack_by?: GroupByConfigResponse | null\n // Reference lines drawn on the chart. Null when no reference lines are configured.\n reference_lines?: Array<ChartReferenceLineResponse> | null\n // Text caption displayed below the chart. Null when no caption is shown.\n caption?: string | null\n // Whether chart elements are colored by their numeric value (gradient coloring).\n color_by_value?: boolean\n}\n\ntype CheckboxGroupByConfigResponse = {\n // The property type for grouping.\n type: \"checkbox\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype CoverConfigResponse = {\n // Source of the cover image.\n type: \"page_cover\" | \"page_content\" | \"page_content_first\" | \"property\"\n // Property ID when type is \"property\".\n property_id?: string\n}\n\nexport type DashboardRowResponse = {\n // The ID of this row module.\n id: string\n // The widget modules within this row.\n widgets: Array<DashboardWidgetResponse>\n // Fixed height of the row in pixels.\n height?: number\n}\n\ntype DashboardViewConfigResponse = {\n // The view configuration type.\n type: \"dashboard\"\n // The rows that make up the dashboard layout. Each row contains one or more widget\n // modules.\n rows: Array<DashboardRowResponse>\n}\n\nexport type DashboardWidgetResponse = {\n // The ID of this widget module.\n id: string\n // The ID of the collection view rendered by this widget.\n view_id: string\n // Width of the widget in a 12-column grid (1-12). 12 means full width.\n width?: number\n // The 0-based index of the row this widget belongs to. Widgets in the same row share the\n // same row_index.\n row_index?: number\n}\n\nexport type DataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The name of the view.\n name: string\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n // The time when the view was created.\n created_time: string\n // The time when the view was last edited.\n last_edited_time: string\n // Canonical deep link to the view in Notion.\n url: string\n // The ID of the data source this view is scoped to, or null for dashboard views.\n data_source_id?: string | null\n // The user who created the view, or null if not available.\n created_by?: PartialUserObjectResponse | null\n // The user who last edited the view, or null if not available.\n last_edited_by?: PartialUserObjectResponse | null\n // The filter applied to this view (same shape as data source query filter).\n filter?: ViewFilterResponse | null\n // The sorts applied to this view (same shape as data source query sorts).\n sorts?: Array<ViewSortResponse> | null\n // Quick filters pinned to the view's filter bar. Keys are property IDs. Values are\n // filter conditions (same shape as a property filter without the property field). Null\n // when no quick filters are set.\n quick_filters?: Record<string, QuickFilterConditionResponse> | null\n // View presentation configuration.\n configuration?: ViewConfigResponse | null\n // For dashboard widget views, the ID of the parent dashboard view. Only present when\n // this view is a widget inside a dashboard.\n dashboard_view_id?: string\n}\n\ntype DateGroupByConfigResponse = {\n // The property type for grouping.\n type: \"date\" | \"created_time\" | \"last_edited_time\"\n // Property ID to group by.\n property_id: string\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups (no manual sort for dates).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\nexport type DeletedViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The ID of the deleted view query.\n id: IdResponse\n // Whether the view query was deleted.\n deleted: boolean\n}\n\ntype FormViewConfigResponse = {\n // The view configuration type.\n type: \"form\"\n // Whether the form is closed for submissions.\n is_form_closed?: boolean\n // Whether anonymous (non-logged-in) submissions are allowed.\n anonymous_submissions?: boolean\n // Permission level granted to the submitter on the created page after form submission.\n submission_permissions?:\n \"none\" | \"comment_only\" | \"reader\" | \"read_and_write\" | \"editor\"\n}\n\ntype FormulaCheckboxSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"checkbox\"\n // Sort order for groups (only manual for checkbox).\n sort: GroupSortResponse\n}\n\ntype FormulaDateSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"date\"\n // Granularity for date grouping.\n group_by: \"relative\" | \"day\" | \"week\" | \"month\" | \"year\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Start day of week for week grouping (0 = Sunday, 1 = Monday).\n start_day_of_week?: 0 | 1\n}\n\ntype FormulaGroupByConfigResponse = {\n // The property type for grouping.\n type: \"formula\"\n // Property ID of the formula to group by.\n property_id: string\n // Sub-group-by configuration based on the formula result type.\n group_by: FormulaSubGroupByResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype FormulaNumberSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"number\"\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\n/**\n * Sub-group-by configuration for formula properties based on result type.\n */\ntype FormulaSubGroupByResponse =\n | FormulaDateSubGroupByResponse\n | FormulaTextSubGroupByResponse\n | FormulaNumberSubGroupByResponse\n | FormulaCheckboxSubGroupByResponse\n\ntype FormulaTextSubGroupByResponse = {\n // The formula result type for grouping.\n type: \"text\"\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n}\n\ntype GalleryViewConfigResponse = {\n // The view configuration type.\n type: \"gallery\"\n // Properties to display on gallery cards.\n properties?: Array<ViewPropertyConfigResponse>\n // Card cover/preview image configuration.\n cover?: CoverConfigResponse\n // Cover image size.\n cover_size?: \"small\" | \"medium\" | \"large\"\n // Cover image aspect ratio.\n cover_aspect?: \"contain\" | \"cover\"\n // Card layout mode (list shows all properties, compact shows inline).\n card_layout?: \"list\" | \"compact\"\n}\n\n/**\n * Group-by configuration based on property type.\n */\ntype GroupByConfigResponse =\n | SelectGroupByConfigResponse\n | StatusGroupByConfigResponse\n | PersonGroupByConfigResponse\n | RelationGroupByConfigResponse\n | DateGroupByConfigResponse\n | TextGroupByConfigResponse\n | NumberGroupByConfigResponse\n | CheckboxGroupByConfigResponse\n | FormulaGroupByConfigResponse\n\ntype GroupSortResponse = {\n // Sort direction for groups.\n type: \"manual\" | \"ascending\" | \"descending\"\n}\n\ntype ListViewConfigResponse = {\n // The view configuration type.\n type: \"list\"\n // Properties to display in list items.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype MapViewConfigResponse = {\n // The view configuration type.\n type: \"map\"\n // Map display height.\n height?: \"small\" | \"medium\" | \"large\" | \"extra_large\"\n // Property ID of the location property used to position items on the map.\n map_by?: string\n // Map-by property name (convenience field).\n map_by_property_name?: string\n // Properties to display on map pin cards.\n properties?: Array<ViewPropertyConfigResponse>\n}\n\ntype NumberGroupByConfigResponse = {\n // The property type for grouping.\n type: \"number\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (ascending or descending only).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n // Start of the range for number grouping buckets.\n range_start?: number\n // End of the range for number grouping buckets.\n range_end?: number\n // Size of each bucket in number grouping.\n range_size?: number\n}\n\ntype PageReferenceResponse = {\n // The object type.\n object: string\n // The object ID.\n id: IdResponse\n}\n\nexport type PartialDataSourceViewObjectResponse = {\n // The object type name.\n object: \"view\"\n // The ID of the view.\n id: IdResponse\n // The parent database of the view.\n parent: DatabaseParentResponse\n // The view type.\n type:\n | \"table\"\n | \"board\"\n | \"list\"\n | \"calendar\"\n | \"timeline\"\n | \"gallery\"\n | \"form\"\n | \"chart\"\n | \"map\"\n | \"dashboard\"\n}\n\ntype PersonGroupByConfigResponse = {\n // The property type for grouping.\n type: \"person\" | \"created_by\" | \"last_edited_by\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups (only manual supported).\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype PropertySortResponse = {\n // The name or ID of the property to sort by.\n property: string\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * A property filter condition. Same shape as a property filter but without the\n * \"property\" field. For example: { \"select\": { \"equals\": \"High\" } }. An empty object\n * means the quick filter has no criteria yet.\n */\ntype QuickFilterConditionResponse = Record<string, never>\n\ntype RelationGroupByConfigResponse = {\n // The property type for grouping.\n type: \"relation\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SelectGroupByConfigResponse = {\n // The property type for grouping.\n type: \"select\" | \"multi_select\"\n // Property ID to group by.\n property_id: string\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype StatusGroupByConfigResponse = {\n // The property type for grouping.\n type: \"status\"\n // Property ID to group by.\n property_id: string\n // How to group status values. \"group\" groups by status group (To Do/In Progress/Done),\n // \"option\" groups by individual option.\n group_by: \"group\" | \"option\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype SubtaskConfigResponse = {\n // Relation property ID used for parent-child nesting.\n property_id?: string\n // How sub-items are displayed. \"show\" renders hierarchically with toggles, \"hidden\"\n // shows parents with a count, \"flattened\" shows sub-items with a parent indicator,\n // \"disabled\" turns off sub-item rendering.\n display_mode?: \"show\" | \"hidden\" | \"flattened\" | \"disabled\"\n // Which items are included when filtering. \"parents\" includes parent items only,\n // \"parents_and_subitems\" includes both, \"subitems\" includes sub-items only.\n filter_scope?: \"parents\" | \"parents_and_subitems\" | \"subitems\"\n // Property ID of the column showing the sub-item expand/collapse toggle.\n toggle_column_id?: string\n}\n\ntype TableViewConfigResponse = {\n // The view configuration type.\n type: \"table\"\n // Columns/properties visible in the table view.\n properties?: Array<ViewPropertyConfigResponse>\n // Vertical (row) grouping configuration.\n group_by?: GroupByConfigResponse\n // Sub-item (subtask) display configuration.\n subtasks?: SubtaskConfigResponse\n // Whether to wrap cell content by default.\n wrap_cells?: boolean\n // Index of the last frozen column. Columns up to and including this index are frozen.\n frozen_column_index?: number\n // Whether to show vertical lines between columns.\n show_vertical_lines?: boolean\n}\n\ntype TextGroupByConfigResponse = {\n // The property type for grouping.\n type: \"text\" | \"title\" | \"url\" | \"email\" | \"phone_number\"\n // Property ID to group by.\n property_id: string\n // How to group text values. \"exact\" = exact match, \"alphabet_prefix\" = first letter.\n group_by: \"exact\" | \"alphabet_prefix\"\n // Sort order for groups.\n sort: GroupSortResponse\n // Property name (convenience field).\n property_name?: string\n // Whether to hide groups that have no items.\n hide_empty_groups?: boolean\n}\n\ntype TimelineArrowsByResponse = {\n // Relation property ID used for dependency arrows.\n property_id?: string | null\n}\n\ntype TimelinePreferenceResponse = {\n // Zoom level for the timeline.\n zoom_level:\n | \"hours\"\n | \"day\"\n | \"week\"\n | \"bi_week\"\n | \"month\"\n | \"quarter\"\n | \"year\"\n | \"5_years\"\n // Center timestamp for the timeline view (Unix timestamp in ms).\n center_timestamp?: number\n}\n\ntype TimelineViewConfigResponse = {\n // The view configuration type.\n type: \"timeline\"\n // Start date property - required.\n date_property_id: string\n // Start date property name (convenience field).\n date_property_name?: string\n // End date property (optional, for items that span a range).\n end_date_property_id?: string\n // End date property name (convenience field).\n end_date_property_name?: string\n // Properties to display on timeline items.\n properties?: Array<ViewPropertyConfigResponse>\n // Whether to show the table panel alongside the timeline.\n show_table?: boolean\n // Properties to display in the table panel (when show_table is true).\n table_properties?: Array<ViewPropertyConfigResponse>\n // Timeline zoom/preference state.\n preference?: TimelinePreferenceResponse\n // Dependency arrows configuration.\n arrows_by?: TimelineArrowsByResponse\n // Whether to color-code items by property.\n color_by?: boolean\n}\n\ntype TimestampSortResponse = {\n // The timestamp to sort by.\n timestamp: \"created_time\" | \"last_edited_time\"\n // Sort direction.\n direction: \"ascending\" | \"descending\"\n}\n\n/**\n * View configuration, typed by view type (table, board, calendar, etc.).\n */\ntype ViewConfigResponse =\n | TableViewConfigResponse\n | BoardViewConfigResponse\n | CalendarViewConfigResponse\n | TimelineViewConfigResponse\n | GalleryViewConfigResponse\n | ListViewConfigResponse\n | MapViewConfigResponse\n | FormViewConfigResponse\n | ChartViewConfigResponse\n | DashboardViewConfigResponse\n\n/**\n * Filter for the view. Can be a property filter (filter by property value), timestamp\n * filter (filter by created_time or last_edited_time), or compound filter (combine\n * filters with and/or logic). Compound filters support up to 2 levels of nesting.\n */\ntype ViewFilterResponse =\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n | {\n // Filters combined with OR logic.\n or?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n // Filters combined with AND logic.\n and?: Array<\n | (Record<string, unknown> & {\n // The name or ID of the property to filter on.\n property: string\n })\n | (Record<string, unknown> & {\n // The timestamp to filter on.\n timestamp: \"created_time\" | \"last_edited_time\"\n })\n >\n }\n >\n }\n\ntype ViewPropertyConfigResponse = {\n // Property ID (stable identifier).\n property_id: string\n // Property name (convenience field, not stable across renames).\n property_name?: string\n // Whether this property is visible in the view.\n visible?: boolean\n // Width of the property column in pixels (table view only).\n width?: number\n // Whether to wrap content in this property cell/card.\n wrap?: boolean\n // How to display status properties (as select dropdown or checkbox).\n status_show_as?: \"select\" | \"checkbox\"\n // Property width mode in compact card layouts (board/gallery).\n card_property_width_mode?: \"full_line\" | \"inline\"\n // Date display format (date properties only). \"full\" = localized full date, \"short\" =\n // month and day, \"month_day_year\" = MM/DD/YYYY, \"day_month_year\" = DD/MM/YYYY,\n // \"year_month_day\" = YYYY/MM/DD, \"relative\" = relative dates.\n date_format?:\n | \"full\"\n | \"short\"\n | \"month_day_year\"\n | \"day_month_year\"\n | \"year_month_day\"\n | \"relative\"\n // Time display format (date properties only). \"12_hour\" = 12-hour clock with AM/PM,\n // \"24_hour\" = 24-hour clock, \"hidden\" = hide time.\n time_format?: \"12_hour\" | \"24_hour\" | \"hidden\"\n}\n\nexport type ViewQueryResponse = {\n // The object type.\n object: \"view_query\"\n // The query ID.\n id: IdResponse\n // The view this query was executed against.\n view_id: IdResponse\n // When the cached query results expire.\n expires_at: string\n // Total number of results in the query.\n total_count: number\n // The page results for this page.\n results: Array<PageReferenceResponse>\n // Cursor for the next page of results.\n next_cursor: IdResponse | null\n // Whether there are more results.\n has_more: boolean\n // Set to `{ type: 'incomplete', incomplete_reason: 'query_result_limit_reached' }` when\n // the view's underlying data source has more rows matching this query than the\n // server-side pagination depth limit allows.\n request_status?: RequestStatusResponse\n}\n\n/**\n * Sort for the view. Can sort by property or timestamp.\n */\ntype ViewSortResponse = PropertySortResponse | TimestampSortResponse\n\ntype ListDatabaseViewsQueryParameters = {\n // ID of a Notion database (collection view block) to list views for. At least one of\n // database_id or data_source_id is required.\n database_id?: IdRequest\n // ID of a data source (collection) to list all views for, including linked views across\n // the workspace. At least one of database_id or data_source_id is required.\n data_source_id?: IdRequest\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided. If not supplied, this endpoint will return the first page of results.\n start_cursor?: string | null\n // The number of items from the full list desired in the response. Maximum: 100\n page_size?: number\n}\n\nexport type ListDatabaseViewsParameters = ListDatabaseViewsQueryParameters\n\nexport type ListDatabaseViewsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<DataSourceViewReferenceResponse>\n // Always `view`\n type: \"view\"\n view: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * List views\n */\nexport const listDatabaseViews = {\n method: \"get\",\n pathParams: [],\n queryParams: [\"database_id\", \"data_source_id\", \"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype CreateViewBodyParameters = CreateViewRequest\n\nexport type CreateViewParameters = CreateViewBodyParameters\n\nexport type CreateViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Create a view\n */\nexport const createView = {\n method: \"post\",\n pathParams: [],\n queryParams: [],\n bodyParams: [],\n\n path: (): string => `views`,\n} as const\n\ntype GetViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\nexport type GetViewParameters = GetViewPathParameters\n\nexport type GetViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Retrieve a view\n */\nexport const getView = {\n method: \"get\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: GetViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype UpdateViewPathParameters = {\n // ID of a Notion view.\n view_id: IdRequest\n}\n\ntype UpdateViewBodyParameters = UpdateViewRequest\n\nexport type UpdateViewParameters = UpdateViewPathParameters &\n UpdateViewBodyParameters\n\nexport type UpdateViewResponse =\n PartialDataSourceViewObjectResponse | DataSourceViewObjectResponse\n\n/**\n * Update a view\n */\nexport const updateView = {\n method: \"patch\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: UpdateViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype DeleteViewPathParameters = {\n // The ID of the view to delete.\n view_id: IdRequest\n}\n\nexport type DeleteViewParameters = DeleteViewPathParameters\n\nexport type DeleteViewResponse = PartialDataSourceViewObjectResponse\n\n/**\n * Delete a view\n */\nexport const deleteView = {\n method: \"delete\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewPathParameters): string => `views/${p.view_id}`,\n} as const\n\ntype CreateViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n}\n\ntype CreateViewQueryBodyParameters = CreateViewQueryRequest\n\nexport type CreateViewQueryParameters = CreateViewQueryPathParameters &\n CreateViewQueryBodyParameters\n\nexport type CreateViewQueryResponse = ViewQueryResponse\n\n/**\n * Create a view query\n */\nexport const createViewQuery = {\n method: \"post\",\n pathParams: [\"view_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: CreateViewQueryPathParameters): string =>\n `views/${p.view_id}/queries`,\n} as const\n\ntype GetViewQueryResultsPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\ntype GetViewQueryResultsQueryParameters = {\n // If supplied, this endpoint will return a page of results starting after the cursor\n // provided.\n start_cursor?: string | null\n // The number of results to return per page. Maximum: 100\n page_size?: number\n}\n\nexport type GetViewQueryResultsParameters = GetViewQueryResultsPathParameters &\n GetViewQueryResultsQueryParameters\n\nexport type GetViewQueryResultsResponse = {\n // Always `list`\n object: \"list\"\n next_cursor: IdResponse | null\n has_more: boolean\n results: Array<PartialPageObjectResponse>\n // Always `page`\n type: \"page\"\n page: EmptyObject\n request_status?: RequestStatusResponse\n}\n\n/**\n * Get view query results\n */\nexport const getViewQueryResults = {\n method: \"get\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [\"start_cursor\", \"page_size\"],\n bodyParams: [],\n\n path: (p: GetViewQueryResultsPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n\ntype DeleteViewQueryPathParameters = {\n // The ID of the view.\n view_id: IdRequest\n // The ID of the query.\n query_id: IdRequest\n}\n\nexport type DeleteViewQueryParameters = DeleteViewQueryPathParameters\n\nexport type DeleteViewQueryResponse = DeletedViewQueryResponse\n\n/**\n * Delete a view query\n */\nexport const deleteViewQuery = {\n method: \"delete\",\n pathParams: [\"view_id\", \"query_id\"],\n queryParams: [],\n bodyParams: [],\n\n path: (p: DeleteViewQueryPathParameters): string =>\n `views/${p.view_id}/queries/${p.query_id}`,\n} as const\n"]}
@@ -29,6 +29,8 @@ export type CommentCreatedWebhookPayload = BaseWebhookPayload & {
29
29
  data: {
30
30
  parent: WebhookExternalBlock;
31
31
  page_id: IdResponse;
32
+ discussion_id: IdResponse;
33
+ property_id?: string;
32
34
  };
33
35
  };
34
36
  export type CommentDeletedWebhookPayload = BaseWebhookPayload & {
@@ -37,6 +39,8 @@ export type CommentDeletedWebhookPayload = BaseWebhookPayload & {
37
39
  data: {
38
40
  parent: WebhookExternalBlock;
39
41
  page_id: IdResponse;
42
+ discussion_id: IdResponse;
43
+ property_id?: string;
40
44
  };
41
45
  };
42
46
  export type CommentUpdatedWebhookPayload = BaseWebhookPayload & {
@@ -45,6 +49,8 @@ export type CommentUpdatedWebhookPayload = BaseWebhookPayload & {
45
49
  data: {
46
50
  parent: WebhookExternalBlock;
47
51
  page_id: IdResponse;
52
+ discussion_id: IdResponse;
53
+ property_id?: string;
48
54
  };
49
55
  };
50
56
  export type DataSourceContentUpdatedWebhookPayload = BaseWebhookPayload & {
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/api-endpoints/webhooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/api-endpoints/webhooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../src/api-endpoints/webhooks.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type { EmptyObject, IdResponse } from \"./common\"\n\nexport type BaseWebhookPayload = {\n // Unique identifier for this webhook event.\n id: string\n // ISO 8601 timestamp of when the event occurred. Can be used to order events.\n timestamp: string\n // The ID of the workspace where the event originated.\n workspace_id: IdResponse\n // The name of the workspace where the event originated.\n workspace_name: string\n // The ID of the webhook subscription.\n subscription_id: IdResponse\n // The ID of the integration the subscription is set up with.\n integration_id: IdResponse\n // The users or bots that performed the action. Typically an array of length 1; can be\n // more for aggregated events.\n authors: Array<\n | {\n // The ID of the user.\n id: IdResponse\n // Always `person`\n type: \"person\"\n }\n | {\n // The ID of the bot.\n id: IdResponse\n // Always `bot`\n type: \"bot\"\n }\n >\n // The delivery attempt number (1-8) of the current event delivery.\n attempt_number: number\n // The Notion API version that was used to render this webhook event's shape.\n api_version: \"2022-06-28\" | \"2025-09-03\" | \"2026-03-11\"\n // The users or bots who own the bot connection to the `integration_id` and have access\n // to the webhook's `entity`. Only present for public integrations.\n accessible_by?: Array<\n | {\n // The ID of the user.\n id: IdResponse\n // Always `person`\n type: \"person\"\n }\n | {\n // The ID of the bot.\n id: IdResponse\n // Always `bot`\n type: \"bot\"\n }\n >\n}\n\nexport type CommentCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.created`\n type: \"comment.created\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n }\n}\n\nexport type CommentDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.deleted`\n type: \"comment.deleted\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n }\n}\n\nexport type CommentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.updated`\n type: \"comment.updated\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n }\n}\n\nexport type DataSourceContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.content_updated`\n type: \"data_source.content_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type DataSourceCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.created`\n type: \"data_source.created\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.deleted`\n type: \"data_source.deleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceMovedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.moved`\n type: \"data_source.moved\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceSchemaUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.schema_updated`\n type: \"data_source.schema_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the database whose schema was updated.\n parent: WebhookParentBlock\n // The database properties that were created, updated, or deleted.\n updated_properties?: Array<{\n // The ID of the database property that changed.\n id: string\n // The name of the database property, or `null` if deleted.\n name: string | null\n // The action taken on the property.\n action: \"created\" | \"updated\" | \"deleted\"\n }>\n }\n}\n\nexport type DataSourceUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.undeleted`\n type: \"data_source.undeleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.content_updated`\n type: \"database.content_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type DatabaseCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.created`\n type: \"database.created\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `database.deleted`\n type: \"database.deleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseMovedWebhookPayload = BaseWebhookPayload & {\n // Always `database.moved`\n type: \"database.moved\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseSchemaUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.schema_updated`\n type: \"database.schema_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the database whose schema was updated.\n parent: WebhookParentBlock\n // The database properties that were created, updated, or deleted.\n updated_properties?: Array<{\n // The ID of the database property that changed.\n id: string\n // The name of the database property, or `null` if deleted.\n name: string | null\n // The action taken on the property.\n action: \"created\" | \"updated\" | \"deleted\"\n }>\n }\n}\n\nexport type DatabaseUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `database.undeleted`\n type: \"database.undeleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type FileUploadCompletedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.completed`\n type: \"file_upload.completed\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.created`\n type: \"file_upload.created\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadExpiredWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.expired`\n type: \"file_upload.expired\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadUploadFailedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.upload_failed`\n type: \"file_upload.upload_failed\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n // Additional event-specific data.\n data: {\n // The result of the file import attempt.\n file_import_result:\n | {\n // Always `success`\n type: \"success\"\n // ISO 8601 timestamp of when the file was imported.\n imported_time: string\n // Empty object indicating success.\n success: EmptyObject\n }\n | {\n // Always `error`\n type: \"error\"\n // ISO 8601 timestamp of when the import was attempted.\n imported_time: string\n // Details about the error.\n error: {\n // The category of the error.\n type:\n | \"validation_error\"\n | \"internal_system_error\"\n | \"download_error\"\n | \"upload_error\"\n // A machine-readable error code.\n code: string\n // A human-readable description of the error.\n message: string\n // The parameter that caused the error, or `null`.\n parameter: string | null\n // The HTTP status code associated with the error, or `null`.\n status_code: number | null\n }\n }\n }\n}\n\nexport type PageContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.content_updated`\n type: \"page.content_updated\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type PageCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.created`\n type: \"page.created\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `page.deleted`\n type: \"page.deleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageLockedWebhookPayload = BaseWebhookPayload & {\n // Always `page.locked`\n type: \"page.locked\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageMovedWebhookPayload = BaseWebhookPayload & {\n // Always `page.moved`\n type: \"page.moved\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PagePropertiesUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.properties_updated`\n type: \"page.properties_updated\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the page whose properties were updated.\n parent: WebhookParentBlock\n // The IDs of the properties that were updated.\n updated_properties: Array<string>\n }\n}\n\nexport type PageTranscriptionBlockTranscriptDeletedWebhookPayload =\n BaseWebhookPayload & {\n // Always `page.transcription_block.transcript_deleted`\n type: \"page.transcription_block.transcript_deleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The block that contained the deleted transcript.\n target: WebhookExternalBlock\n // The ID of the deleted transcript, or `null` if not available.\n transcript_id: string | null\n }\n }\n\nexport type PageUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `page.undeleted`\n type: \"page.undeleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageUnlockedWebhookPayload = BaseWebhookPayload & {\n // Always `page.unlocked`\n type: \"page.unlocked\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type ViewCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `view.created`\n type: \"view.created\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the created view.\n parent: WebhookParentBlock\n // The type of the created view (e.g. `table`, `board`, `list`, `calendar`, `gallery`,\n // `timeline`).\n view_type: string\n }\n}\n\nexport type ViewDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `view.deleted`\n type: \"view.deleted\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type ViewUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `view.updated`\n type: \"view.updated\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the updated view.\n parent: WebhookParentBlock\n // The fields of the view that were updated.\n updated_fields: Array<\"name\" | \"filter\" | \"sorts\" | \"configuration\">\n }\n}\n\ntype WebhookCommentEntity = {\n // Always `comment`\n type: \"comment\"\n // The ID of the comment that triggered the event.\n id: IdResponse\n}\n\ntype WebhookDatabaseEventEntity = {\n // The ID of the database or data source that triggered the event.\n id: IdResponse\n // The type of entity. For linked databases, this is `block`.\n type: \"block\" | \"database\" | \"data_source\"\n}\n\ntype WebhookExternalBlock = {\n // The ID of the parent.\n id: IdResponse\n // The type of the parent.\n type: \"page\" | \"database\" | \"block\"\n}\n\ntype WebhookFileUploadEntity = {\n // Always `file_upload`\n type: \"file_upload\"\n // The ID of the file upload that triggered the event.\n id: IdResponse\n}\n\ntype WebhookPageEntity = {\n // Always `page`\n type: \"page\"\n // The ID of the page that triggered the event.\n id: IdResponse\n}\n\ntype WebhookParentBlock = {\n // The ID of the parent.\n id: IdResponse\n // The type of the parent.\n type: \"space\" | \"block\" | \"page\" | \"database\" | \"team\" | \"agent\"\n // The data source ID of the parent, if applicable.\n data_source_id?: IdResponse\n}\n\ntype WebhookUpdatedBlock = {\n // The ID of the updated block.\n id: IdResponse\n // The type of the updated block.\n type: \"page\" | \"database\" | \"block\"\n}\n\ntype WebhookViewEntity = {\n // The ID of the view that triggered the event.\n id: IdResponse\n // Always `view`\n type: \"view\"\n}\n"]}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../src/api-endpoints/webhooks.ts"],"names":[],"mappings":";AAAA,sBAAsB;AACtB,+CAA+C","sourcesContent":["// cspell:disable-file\n// Note: This is a generated file. DO NOT EDIT!\n\nimport type { EmptyObject, IdResponse } from \"./common\"\n\nexport type BaseWebhookPayload = {\n // Unique identifier for this webhook event.\n id: string\n // ISO 8601 timestamp of when the event occurred. Can be used to order events.\n timestamp: string\n // The ID of the workspace where the event originated.\n workspace_id: IdResponse\n // The name of the workspace where the event originated.\n workspace_name: string\n // The ID of the webhook subscription.\n subscription_id: IdResponse\n // The ID of the integration the subscription is set up with.\n integration_id: IdResponse\n // The users or bots that performed the action. Typically an array of length 1; can be\n // more for aggregated events.\n authors: Array<\n | {\n // The ID of the user.\n id: IdResponse\n // Always `person`\n type: \"person\"\n }\n | {\n // The ID of the bot.\n id: IdResponse\n // Always `bot`\n type: \"bot\"\n }\n >\n // The delivery attempt number (1-8) of the current event delivery.\n attempt_number: number\n // The Notion API version that was used to render this webhook event's shape.\n api_version: \"2022-06-28\" | \"2025-09-03\" | \"2026-03-11\"\n // The users or bots who own the bot connection to the `integration_id` and have access\n // to the webhook's `entity`. Only present for public integrations.\n accessible_by?: Array<\n | {\n // The ID of the user.\n id: IdResponse\n // Always `person`\n type: \"person\"\n }\n | {\n // The ID of the bot.\n id: IdResponse\n // Always `bot`\n type: \"bot\"\n }\n >\n}\n\nexport type CommentCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.created`\n type: \"comment.created\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n // The ID of the discussion containing the comment.\n discussion_id: IdResponse\n // The ID of the database property the comment is on, for comments on a page property.\n // Matches the property's `id` in the page object. Omitted for other comments.\n property_id?: string\n }\n}\n\nexport type CommentDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.deleted`\n type: \"comment.deleted\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n // The ID of the discussion containing the comment.\n discussion_id: IdResponse\n // The ID of the database property the comment is on, for comments on a page property.\n // Matches the property's `id` in the page object. Omitted for other comments.\n property_id?: string\n }\n}\n\nexport type CommentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `comment.updated`\n type: \"comment.updated\"\n // The object that triggered the event.\n entity: WebhookCommentEntity\n // Additional event-specific data.\n data: {\n // The parent of the comment (the page or block the comment is attached to).\n parent: WebhookExternalBlock\n // The ID of the page containing the comment.\n page_id: IdResponse\n // The ID of the discussion containing the comment.\n discussion_id: IdResponse\n // The ID of the database property the comment is on, for comments on a page property.\n // Matches the property's `id` in the page object. Omitted for other comments.\n property_id?: string\n }\n}\n\nexport type DataSourceContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.content_updated`\n type: \"data_source.content_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type DataSourceCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.created`\n type: \"data_source.created\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.deleted`\n type: \"data_source.deleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceMovedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.moved`\n type: \"data_source.moved\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DataSourceSchemaUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.schema_updated`\n type: \"data_source.schema_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the database whose schema was updated.\n parent: WebhookParentBlock\n // The database properties that were created, updated, or deleted.\n updated_properties?: Array<{\n // The ID of the database property that changed.\n id: string\n // The name of the database property, or `null` if deleted.\n name: string | null\n // The action taken on the property.\n action: \"created\" | \"updated\" | \"deleted\"\n }>\n }\n}\n\nexport type DataSourceUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `data_source.undeleted`\n type: \"data_source.undeleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.content_updated`\n type: \"database.content_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type DatabaseCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.created`\n type: \"database.created\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `database.deleted`\n type: \"database.deleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseMovedWebhookPayload = BaseWebhookPayload & {\n // Always `database.moved`\n type: \"database.moved\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type DatabaseSchemaUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `database.schema_updated`\n type: \"database.schema_updated\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the database whose schema was updated.\n parent: WebhookParentBlock\n // The database properties that were created, updated, or deleted.\n updated_properties?: Array<{\n // The ID of the database property that changed.\n id: string\n // The name of the database property, or `null` if deleted.\n name: string | null\n // The action taken on the property.\n action: \"created\" | \"updated\" | \"deleted\"\n }>\n }\n}\n\nexport type DatabaseUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `database.undeleted`\n type: \"database.undeleted\"\n // The object that triggered the event.\n entity: WebhookDatabaseEventEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type FileUploadCompletedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.completed`\n type: \"file_upload.completed\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.created`\n type: \"file_upload.created\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadExpiredWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.expired`\n type: \"file_upload.expired\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n}\n\nexport type FileUploadUploadFailedWebhookPayload = BaseWebhookPayload & {\n // Always `file_upload.upload_failed`\n type: \"file_upload.upload_failed\"\n // The object that triggered the event.\n entity: WebhookFileUploadEntity\n // Additional event-specific data.\n data: {\n // The result of the file import attempt.\n file_import_result:\n | {\n // Always `success`\n type: \"success\"\n // ISO 8601 timestamp of when the file was imported.\n imported_time: string\n // Empty object indicating success.\n success: EmptyObject\n }\n | {\n // Always `error`\n type: \"error\"\n // ISO 8601 timestamp of when the import was attempted.\n imported_time: string\n // Details about the error.\n error: {\n // The category of the error.\n type:\n | \"validation_error\"\n | \"internal_system_error\"\n | \"download_error\"\n | \"upload_error\"\n // A machine-readable error code.\n code: string\n // A human-readable description of the error.\n message: string\n // The parameter that caused the error, or `null`.\n parameter: string | null\n // The HTTP status code associated with the error, or `null`.\n status_code: number | null\n }\n }\n }\n}\n\nexport type PageContentUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.content_updated`\n type: \"page.content_updated\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity whose content was updated.\n parent: WebhookParentBlock\n // The blocks that were updated in this event.\n updated_blocks: Array<WebhookUpdatedBlock>\n }\n}\n\nexport type PageCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.created`\n type: \"page.created\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `page.deleted`\n type: \"page.deleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageLockedWebhookPayload = BaseWebhookPayload & {\n // Always `page.locked`\n type: \"page.locked\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageMovedWebhookPayload = BaseWebhookPayload & {\n // Always `page.moved`\n type: \"page.moved\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PagePropertiesUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `page.properties_updated`\n type: \"page.properties_updated\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the page whose properties were updated.\n parent: WebhookParentBlock\n // The IDs of the properties that were updated.\n updated_properties: Array<string>\n }\n}\n\nexport type PageTranscriptionBlockTranscriptDeletedWebhookPayload =\n BaseWebhookPayload & {\n // Always `page.transcription_block.transcript_deleted`\n type: \"page.transcription_block.transcript_deleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The block that contained the deleted transcript.\n target: WebhookExternalBlock\n // The ID of the deleted transcript, or `null` if not available.\n transcript_id: string | null\n }\n }\n\nexport type PageUndeletedWebhookPayload = BaseWebhookPayload & {\n // Always `page.undeleted`\n type: \"page.undeleted\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type PageUnlockedWebhookPayload = BaseWebhookPayload & {\n // Always `page.unlocked`\n type: \"page.unlocked\"\n // The object that triggered the event.\n entity: WebhookPageEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type ViewCreatedWebhookPayload = BaseWebhookPayload & {\n // Always `view.created`\n type: \"view.created\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the created view.\n parent: WebhookParentBlock\n // The type of the created view (e.g. `table`, `board`, `list`, `calendar`, `gallery`,\n // `timeline`).\n view_type: string\n }\n}\n\nexport type ViewDeletedWebhookPayload = BaseWebhookPayload & {\n // Always `view.deleted`\n type: \"view.deleted\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the entity that triggered the event.\n parent: WebhookParentBlock\n }\n}\n\nexport type ViewUpdatedWebhookPayload = BaseWebhookPayload & {\n // Always `view.updated`\n type: \"view.updated\"\n // The object that triggered the event.\n entity: WebhookViewEntity\n // Additional event-specific data.\n data: {\n // The parent of the updated view.\n parent: WebhookParentBlock\n // The fields of the view that were updated.\n updated_fields: Array<\"name\" | \"filter\" | \"sorts\" | \"configuration\">\n }\n}\n\ntype WebhookCommentEntity = {\n // Always `comment`\n type: \"comment\"\n // The ID of the comment that triggered the event.\n id: IdResponse\n}\n\ntype WebhookDatabaseEventEntity = {\n // The ID of the database or data source that triggered the event.\n id: IdResponse\n // The type of entity. For linked databases, this is `block`.\n type: \"block\" | \"database\" | \"data_source\"\n}\n\ntype WebhookExternalBlock = {\n // The ID of the parent.\n id: IdResponse\n // The type of the parent.\n type: \"page\" | \"database\" | \"block\"\n}\n\ntype WebhookFileUploadEntity = {\n // Always `file_upload`\n type: \"file_upload\"\n // The ID of the file upload that triggered the event.\n id: IdResponse\n}\n\ntype WebhookPageEntity = {\n // Always `page`\n type: \"page\"\n // The ID of the page that triggered the event.\n id: IdResponse\n}\n\ntype WebhookParentBlock = {\n // The ID of the parent.\n id: IdResponse\n // The type of the parent.\n type: \"space\" | \"block\" | \"page\" | \"database\" | \"team\" | \"agent\"\n // The data source ID of the parent, if applicable.\n data_source_id?: IdResponse\n}\n\ntype WebhookUpdatedBlock = {\n // The ID of the updated block.\n id: IdResponse\n // The type of the updated block.\n type: \"page\" | \"database\" | \"block\"\n}\n\ntype WebhookViewEntity = {\n // The ID of the view that triggered the event.\n id: IdResponse\n // Always `view`\n type: \"view\"\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SupportedResponse } from \"./fetch-types\"\nimport { isObject } from \"./utils\"\nimport { Assert } from \"./type-utils\"\n\n/**\n * Error codes returned in responses from the API.\n */\nexport enum APIErrorCode {\n Unauthorized = \"unauthorized\",\n RestrictedResource = \"restricted_resource\",\n ObjectNotFound = \"object_not_found\",\n RateLimited = \"rate_limited\",\n InvalidJSON = \"invalid_json\",\n InvalidRequestURL = \"invalid_request_url\",\n InvalidRequest = \"invalid_request\",\n InvalidBeta = \"invalid_beta\",\n ValidationError = \"validation_error\",\n ConflictError = \"conflict_error\",\n InternalServerError = \"internal_server_error\",\n ServiceOverload = \"service_overload\",\n ServiceUnavailable = \"service_unavailable\",\n GatewayTimeout = \"gateway_timeout\",\n}\n\n/**\n * Error codes generated for client errors.\n */\nexport enum ClientErrorCode {\n RequestTimeout = \"notionhq_client_request_timeout\",\n ResponseError = \"notionhq_client_response_error\",\n InvalidPathParameter = \"notionhq_client_invalid_path_parameter\",\n}\n\n/**\n * Error codes on errors thrown by the `Client`.\n */\nexport type NotionErrorCode = APIErrorCode | ClientErrorCode\n\n/**\n * Base error type.\n */\nabstract class NotionClientErrorBase<\n Code extends NotionErrorCode,\n> extends Error {\n abstract code: Code\n}\n\n/**\n * Error type that encompasses all the kinds of errors that the Notion client will throw.\n */\nexport type NotionClientError =\n | RequestTimeoutError\n | UnknownHTTPResponseError\n | APIResponseError\n | InvalidPathParameterError\n\n// Assert that NotionClientError's `code` property is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertCodeIsNarrow = Assert<NotionErrorCode, NotionClientError[\"code\"]>\n\n// Assert that the type of `name` in NotionErrorCode is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertNameIsNarrow = Assert<\n | \"RequestTimeoutError\"\n | \"UnknownHTTPResponseError\"\n | \"APIResponseError\"\n | \"InvalidPathParameterError\",\n NotionClientError[\"name\"]\n>\n\n/**\n * @param error any value, usually a caught error.\n * @returns `true` if error is a `NotionClientError`.\n */\nexport function isNotionClientError(\n error: unknown\n): error is NotionClientError {\n return isObject(error) && error instanceof NotionClientErrorBase\n}\n\n/**\n * Narrows down the types of a NotionClientError.\n * @param error any value, usually a caught error.\n * @param codes an object mapping from possible error codes to `true`\n * @returns `true` if error is a `NotionClientError` with a code in `codes`.\n */\nfunction isNotionClientErrorWithCode<Code extends NotionErrorCode>(\n error: unknown,\n codes: { [C in Code]: true }\n): error is NotionClientError & { code: Code } {\n return isNotionClientError(error) && error.code in codes\n}\n\n/**\n * Error thrown by the client if a request times out.\n */\nexport class RequestTimeoutError extends NotionClientErrorBase<ClientErrorCode.RequestTimeout> {\n readonly code = ClientErrorCode.RequestTimeout\n readonly name = \"RequestTimeoutError\"\n\n constructor(message = \"Request to Notion API has timed out\") {\n super(message)\n }\n\n static isRequestTimeoutError(error: unknown): error is RequestTimeoutError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.RequestTimeout]: true,\n })\n }\n\n static rejectAfterTimeout<T>(\n promise: Promise<T>,\n timeoutMS: number\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new RequestTimeoutError())\n }, timeoutMS)\n\n promise\n .then(resolve)\n .catch(reject)\n .then(() => clearTimeout(timeoutId))\n })\n }\n}\n\n/**\n * Error thrown when a path parameter contains invalid characters such as\n * path traversal sequences (..) that could alter the intended API endpoint.\n */\nexport class InvalidPathParameterError extends NotionClientErrorBase<ClientErrorCode.InvalidPathParameter> {\n readonly code = ClientErrorCode.InvalidPathParameter\n readonly name = \"InvalidPathParameterError\"\n\n constructor(\n message = \"Path parameter contains invalid characters that could alter the request path\"\n ) {\n super(message)\n }\n\n static isInvalidPathParameterError(\n error: unknown\n ): error is InvalidPathParameterError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.InvalidPathParameter]: true,\n })\n }\n}\n\n/**\n * Error thrown when the client would send a token or client secret from a\n * browser page or worker without `dangerouslyAllowBrowser: true`. Anyone who\n * can load the page can read the token, so this is blocked by default.\n *\n * This is a setup error, not an API error, so it is not a `NotionClientError`.\n */\nexport class BrowserTokenNotAllowedError extends Error {\n readonly name = \"BrowserTokenNotAllowedError\"\n\n constructor(\n message = \"It looks like you're running in a browser. Using a Notion \" +\n \"token here is blocked by default: anyone who can load the page can \" +\n \"read the token and act as your connection. Keep the token on a \" +\n \"server instead. If only you can open this page and you accept the \" +\n \"risk, pass `dangerouslyAllowBrowser: true` to the Client. See \" +\n \"https://developers.notion.com/guides/get-started/handling-api-keys#calling-the-api-from-a-browser\"\n ) {\n super(message)\n }\n}\n\n/**\n * Validates that a request path does not contain path traversal sequences.\n * Throws InvalidPathParameterError if the path contains \"..\" segments,\n * including URL-encoded variants like %2e%2e.\n */\nexport function validateRequestPath(path: string): void {\n // Check for literal path traversal\n if (path.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains path traversal sequence \"..\"`\n )\n }\n\n // Check for URL-encoded path traversal (%2e = '.')\n // Only decode if path contains potential encoded dots\n if (/%2e/i.test(path)) {\n let decoded: string\n try {\n decoded = decodeURIComponent(path)\n } catch {\n // Invalid percent encoding - not a traversal concern\n return\n }\n if (decoded.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains encoded path traversal sequence`\n )\n }\n }\n}\n\n/**\n * Reads a header by name from a `SupportedResponse[\"headers\"]`, which is typed\n * as `unknown` because the SDK supports any `fetch` implementation. Handles\n * both a standard `Headers` object and a plain record. Header names are\n * case-insensitive per RFC 9110, so plain records are matched case-insensitively.\n */\nexport function getResponseHeader(\n headers: unknown,\n name: string\n): string | undefined {\n if (!isObject(headers)) {\n return undefined\n }\n\n const get = headers[\"get\"]\n if (typeof get === \"function\") {\n const value: unknown = get.call(headers, name)\n return typeof value === \"string\" ? value : undefined\n }\n\n const lowerName = name.toLowerCase()\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== lowerName) {\n continue\n }\n if (typeof value === \"string\") {\n return value\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0]\n }\n }\n return undefined\n}\n\ntype HTTPResponseErrorCode = ClientErrorCode.ResponseError | APIErrorCode\n\ntype AdditionalData = Record<string, string | string[]>\n\nclass HTTPResponseError<\n Code extends HTTPResponseErrorCode,\n> extends NotionClientErrorBase<Code> {\n readonly name: string = \"HTTPResponseError\"\n readonly code: Code\n readonly status: number\n readonly headers: SupportedResponse[\"headers\"]\n readonly body: string\n readonly additional_data: AdditionalData | undefined\n readonly request_id: string | undefined\n /**\n * Value of the `cf-ray` response header, when present.\n */\n readonly ray_id: string | undefined\n\n constructor(args: {\n code: Code\n status: number\n message: string\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }) {\n super(args.message)\n const { code, status, headers, rawBodyText, additional_data, request_id } =\n args\n this.code = code\n this.status = status\n this.headers = headers\n this.body = rawBodyText\n this.additional_data = additional_data\n this.request_id =\n request_id ?? getResponseHeader(headers, \"x-notion-request-id\")\n this.ray_id = getResponseHeader(headers, \"cf-ray\")\n }\n}\n\nconst httpResponseErrorCodes: { [C in HTTPResponseErrorCode]: true } = {\n [ClientErrorCode.ResponseError]: true,\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\nexport function isHTTPResponseError(\n error: unknown\n): error is UnknownHTTPResponseError | APIResponseError {\n if (!isNotionClientErrorWithCode(error, httpResponseErrorCodes)) {\n return false\n }\n\n type _assert = Assert<\n UnknownHTTPResponseError | APIResponseError,\n typeof error\n >\n\n return true\n}\n\n/**\n * Error thrown if an API call responds with an unknown error code, or does not respond with\n * a property-formatted error.\n */\nexport class UnknownHTTPResponseError extends HTTPResponseError<ClientErrorCode.ResponseError> {\n readonly name = \"UnknownHTTPResponseError\"\n\n constructor(args: {\n status: number\n message: string | undefined\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n }) {\n const ray_id = getResponseHeader(args.headers, \"cf-ray\")\n const request_id = getResponseHeader(args.headers, \"x-notion-request-id\")\n super({\n ...args,\n code: ClientErrorCode.ResponseError,\n message:\n args.message ??\n buildUnknownResponseMessage({\n status: args.status,\n contentType: getResponseHeader(args.headers, \"content-type\"),\n ray_id,\n request_id,\n }),\n additional_data: undefined,\n request_id,\n })\n }\n\n static isUnknownHTTPResponseError(\n error: unknown\n ): error is UnknownHTTPResponseError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.ResponseError]: true,\n })\n }\n}\n\nconst apiErrorCodes: { [C in APIErrorCode]: true } = {\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\n/**\n * A response from the API indicating a problem.\n * Use the `code` property to handle various kinds of errors. All its possible values are in `APIErrorCode`.\n */\nexport class APIResponseError extends HTTPResponseError<APIErrorCode> {\n readonly name = \"APIResponseError\"\n readonly request_id: string | undefined\n\n static isAPIResponseError(error: unknown): error is APIResponseError {\n return isNotionClientErrorWithCode(error, apiErrorCodes)\n }\n}\n\nexport function buildRequestError(\n response: SupportedResponse,\n bodyText: string\n): APIResponseError | UnknownHTTPResponseError {\n const apiErrorResponseBody = parseAPIErrorResponseBody(bodyText)\n if (apiErrorResponseBody !== undefined) {\n return new APIResponseError({\n code: apiErrorResponseBody.code,\n message: apiErrorResponseBody.message,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n additional_data: apiErrorResponseBody.additional_data,\n request_id: apiErrorResponseBody.request_id,\n })\n }\n return new UnknownHTTPResponseError({\n message: undefined,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n })\n}\n\n/**\n * Builds the default message for an unrecognized HTTP response.\n *\n * A response with a Cloudflare Ray ID but no Notion request ID was answered\n * before it reached the API. The message surfaces the Ray ID rather than\n * leaving callers to infer it from an HTML body.\n */\nfunction buildUnknownResponseMessage(args: {\n status: number\n contentType: string | undefined\n ray_id: string | undefined\n request_id: string | undefined\n}): string {\n const { status, contentType, ray_id, request_id } = args\n const base = `Request to Notion API failed with status: ${status}`\n if (ray_id === undefined || request_id !== undefined) {\n return base\n }\n const contentTypeNote =\n contentType !== undefined ? ` (content-type: ${contentType})` : \"\"\n const blockedRequestNote =\n status === 403\n ? \" This may mean the request was blocked by a network security rule.\"\n : \"\"\n return (\n `${base}. The response was returned by Notion's edge proxy before reaching ` +\n `the Notion API${contentTypeNote}.${blockedRequestNote} Cloudflare Ray ID: ` +\n `${ray_id}. Include this ID when contacting Notion support.`\n )\n}\n\nfunction parseAPIErrorResponseBody(body: string):\n | {\n code: APIErrorCode\n message: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }\n | undefined {\n if (typeof body !== \"string\") {\n return\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(body)\n } catch (parseError) {\n return\n }\n\n if (\n !isObject(parsed) ||\n typeof parsed[\"message\"] !== \"string\" ||\n !isAPIErrorCode(parsed[\"code\"])\n ) {\n return\n }\n\n const additional_data = parsed[\"additional_data\"] as\n | AdditionalData\n | undefined\n const request_id = parsed[\"request_id\"] as string | undefined\n\n return {\n ...parsed,\n code: parsed[\"code\"],\n message: parsed[\"message\"],\n additional_data,\n request_id,\n }\n}\n\nfunction isAPIErrorCode(code: unknown): code is APIErrorCode {\n return typeof code === \"string\" && code in apiErrorCodes\n}\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SupportedResponse } from \"./fetch-types\"\nimport { isObject } from \"./utils\"\nimport { Assert } from \"./type-utils\"\n\n/**\n * Error codes returned in responses from the API.\n */\nexport enum APIErrorCode {\n Unauthorized = \"unauthorized\",\n RestrictedResource = \"restricted_resource\",\n ObjectNotFound = \"object_not_found\",\n RateLimited = \"rate_limited\",\n InvalidJSON = \"invalid_json\",\n InvalidRequestURL = \"invalid_request_url\",\n InvalidRequest = \"invalid_request\",\n InvalidBeta = \"invalid_beta\",\n ValidationError = \"validation_error\",\n ConflictError = \"conflict_error\",\n InternalServerError = \"internal_server_error\",\n ServiceOverload = \"service_overload\",\n ServiceUnavailable = \"service_unavailable\",\n GatewayTimeout = \"gateway_timeout\",\n}\n\n/**\n * Error codes generated for client errors.\n */\nexport enum ClientErrorCode {\n RequestTimeout = \"notionhq_client_request_timeout\",\n ResponseError = \"notionhq_client_response_error\",\n InvalidPathParameter = \"notionhq_client_invalid_path_parameter\",\n}\n\n/**\n * Error codes on errors thrown by the `Client`.\n */\nexport type NotionErrorCode = APIErrorCode | ClientErrorCode\n\n/**\n * Base error type.\n */\nabstract class NotionClientErrorBase<\n Code extends NotionErrorCode,\n> extends Error {\n abstract code: Code\n}\n\n/**\n * Error type that encompasses all the kinds of errors that the Notion client will throw.\n */\nexport type NotionClientError =\n | RequestTimeoutError\n | UnknownHTTPResponseError\n | APIResponseError\n | InvalidPathParameterError\n\n// Assert that NotionClientError's `code` property is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertCodeIsNarrow = Assert<NotionErrorCode, NotionClientError[\"code\"]>\n\n// Assert that the type of `name` in NotionErrorCode is a narrow type.\n// This prevents us from accidentally regressing to `string`-typed name field.\ntype _assertNameIsNarrow = Assert<\n | \"RequestTimeoutError\"\n | \"UnknownHTTPResponseError\"\n | \"APIResponseError\"\n | \"InvalidPathParameterError\",\n NotionClientError[\"name\"]\n>\n\n/**\n * @param error any value, usually a caught error.\n * @returns `true` if error is a `NotionClientError`.\n */\nexport function isNotionClientError(\n error: unknown\n): error is NotionClientError {\n return isObject(error) && error instanceof NotionClientErrorBase\n}\n\n/**\n * Narrows down the types of a NotionClientError.\n * @param error any value, usually a caught error.\n * @param codes an object mapping from possible error codes to `true`\n * @returns `true` if error is a `NotionClientError` with a code in `codes`.\n */\nfunction isNotionClientErrorWithCode<Code extends NotionErrorCode>(\n error: unknown,\n codes: { [C in Code]: true }\n): error is NotionClientError & { code: Code } {\n return isNotionClientError(error) && error.code in codes\n}\n\n/**\n * Error thrown by the client if a request times out.\n */\nexport class RequestTimeoutError extends NotionClientErrorBase<ClientErrorCode.RequestTimeout> {\n readonly code = ClientErrorCode.RequestTimeout\n readonly name = \"RequestTimeoutError\"\n\n constructor(message = \"Request to Notion API has timed out\") {\n super(message)\n }\n\n static isRequestTimeoutError(error: unknown): error is RequestTimeoutError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.RequestTimeout]: true,\n })\n }\n\n static rejectAfterTimeout<T>(\n promise: Promise<T>,\n timeoutMS: number\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new RequestTimeoutError())\n }, timeoutMS)\n\n promise\n .then(resolve)\n .catch(reject)\n .then(() => clearTimeout(timeoutId))\n })\n }\n}\n\n/**\n * Error thrown when a path parameter contains invalid characters such as\n * path traversal sequences (..) that could alter the intended API endpoint.\n */\nexport class InvalidPathParameterError extends NotionClientErrorBase<ClientErrorCode.InvalidPathParameter> {\n readonly code = ClientErrorCode.InvalidPathParameter\n readonly name = \"InvalidPathParameterError\"\n\n constructor(\n message = \"Path parameter contains invalid characters that could alter the request path\"\n ) {\n super(message)\n }\n\n static isInvalidPathParameterError(\n error: unknown\n ): error is InvalidPathParameterError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.InvalidPathParameter]: true,\n })\n }\n}\n\n/**\n * Error thrown when the client would send a token or client secret from a\n * browser page or worker without `dangerouslyAllowBrowser: true`. Anyone who\n * can load the page can read the token, so this is blocked by default.\n *\n * This is a setup error, not an API error, so it is not a `NotionClientError`.\n */\nexport class BrowserTokenNotAllowedError extends Error {\n readonly name = \"BrowserTokenNotAllowedError\"\n\n constructor(\n message = \"It looks like you're running in a browser. Using a Notion \" +\n \"token here is blocked by default: anyone who can load the page can \" +\n \"read the token and act as your connection. Keep the token on a \" +\n \"server instead. If only you can open this page and you accept the \" +\n \"risk, pass `dangerouslyAllowBrowser: true` to the Client. See \" +\n \"https://developers.notion.com/guides/get-started/handling-api-keys#calling-the-api-from-a-browser\"\n ) {\n super(message)\n }\n}\n\n/**\n * Validates that a request path does not contain path traversal sequences.\n * Throws InvalidPathParameterError if the path contains \"..\" segments,\n * including URL-encoded variants like %2e%2e.\n */\nexport function validateRequestPath(path: string): void {\n // Check for literal path traversal\n if (path.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains path traversal sequence \"..\"`\n )\n }\n\n // Check for URL-encoded path traversal (%2e = '.')\n // Only decode if path contains potential encoded dots\n if (/%2e/i.test(path)) {\n let decoded: string\n try {\n decoded = decodeURIComponent(path)\n } catch {\n // Invalid percent encoding - not a traversal concern\n return\n }\n if (decoded.includes(\"..\")) {\n throw new InvalidPathParameterError(\n `Request path \"${path}\" contains encoded path traversal sequence`\n )\n }\n }\n}\n\n/**\n * Reads a header by name from a `SupportedResponse[\"headers\"]`, which is typed\n * as `unknown` because the SDK supports any `fetch` implementation. Handles\n * both a standard `Headers` object and a plain record. Header names are\n * case-insensitive per RFC 9110, so plain records are matched case-insensitively.\n */\nexport function getResponseHeader(\n headers: unknown,\n name: string\n): string | undefined {\n if (!isObject(headers)) {\n return undefined\n }\n\n const get = headers[\"get\"]\n if (typeof get === \"function\") {\n const value: unknown = get.call(headers, name)\n return typeof value === \"string\" ? value : undefined\n }\n\n const lowerName = name.toLowerCase()\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== lowerName) {\n continue\n }\n if (typeof value === \"string\") {\n return value\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0]\n }\n }\n return undefined\n}\n\ntype HTTPResponseErrorCode = ClientErrorCode.ResponseError | APIErrorCode\n\ntype AdditionalData = Record<string, string | string[]>\n\nclass HTTPResponseError<\n Code extends HTTPResponseErrorCode,\n> extends NotionClientErrorBase<Code> {\n readonly name: string = \"HTTPResponseError\"\n readonly code: Code\n readonly status: number\n readonly headers: SupportedResponse[\"headers\"]\n readonly body: string\n readonly additional_data: AdditionalData | undefined\n readonly request_id: string | undefined\n /**\n * Value of the `cf-ray` response header, when present.\n */\n readonly ray_id: string | undefined\n\n constructor(args: {\n code: Code\n status: number\n message: string\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }) {\n super(args.message)\n const { code, status, headers, rawBodyText, additional_data, request_id } =\n args\n this.code = code\n this.status = status\n this.headers = headers\n this.body = rawBodyText\n this.additional_data = additional_data\n this.request_id =\n request_id ?? getResponseHeader(headers, \"x-notion-request-id\")\n this.ray_id = getResponseHeader(headers, \"cf-ray\")\n }\n}\n\nconst httpResponseErrorCodes: { [C in HTTPResponseErrorCode]: true } = {\n [ClientErrorCode.ResponseError]: true,\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\nexport function isHTTPResponseError(\n error: unknown\n): error is UnknownHTTPResponseError | APIResponseError {\n if (!isNotionClientErrorWithCode(error, httpResponseErrorCodes)) {\n return false\n }\n\n type _assert = Assert<\n UnknownHTTPResponseError | APIResponseError,\n typeof error\n >\n\n return true\n}\n\n/**\n * Error thrown if an API call responds with an unknown error code, or does not respond with\n * a property-formatted error.\n */\nexport class UnknownHTTPResponseError extends HTTPResponseError<ClientErrorCode.ResponseError> {\n readonly name = \"UnknownHTTPResponseError\"\n\n constructor(args: {\n status: number\n message: string | undefined\n headers: SupportedResponse[\"headers\"]\n rawBodyText: string\n }) {\n const ray_id = getResponseHeader(args.headers, \"cf-ray\")\n const request_id = getResponseHeader(args.headers, \"x-notion-request-id\")\n super({\n ...args,\n code: ClientErrorCode.ResponseError,\n message:\n args.message ??\n buildUnknownResponseMessage({\n status: args.status,\n contentType: getResponseHeader(args.headers, \"content-type\"),\n ray_id,\n request_id,\n }),\n additional_data: undefined,\n request_id,\n })\n }\n\n static isUnknownHTTPResponseError(\n error: unknown\n ): error is UnknownHTTPResponseError {\n return isNotionClientErrorWithCode(error, {\n [ClientErrorCode.ResponseError]: true,\n })\n }\n}\n\nconst apiErrorCodes: { [C in APIErrorCode]: true } = {\n [APIErrorCode.Unauthorized]: true,\n [APIErrorCode.RestrictedResource]: true,\n [APIErrorCode.ObjectNotFound]: true,\n [APIErrorCode.RateLimited]: true,\n [APIErrorCode.InvalidJSON]: true,\n [APIErrorCode.InvalidRequestURL]: true,\n [APIErrorCode.InvalidRequest]: true,\n [APIErrorCode.InvalidBeta]: true,\n [APIErrorCode.ValidationError]: true,\n [APIErrorCode.ConflictError]: true,\n [APIErrorCode.InternalServerError]: true,\n [APIErrorCode.ServiceOverload]: true,\n [APIErrorCode.ServiceUnavailable]: true,\n [APIErrorCode.GatewayTimeout]: true,\n}\n\n/**\n * A response from the API indicating a problem.\n * Use the `code` property to handle various kinds of errors. All its possible values are in `APIErrorCode`.\n */\nexport class APIResponseError extends HTTPResponseError<APIErrorCode> {\n readonly name = \"APIResponseError\"\n readonly request_id: string | undefined\n\n static isAPIResponseError(error: unknown): error is APIResponseError {\n return isNotionClientErrorWithCode(error, apiErrorCodes)\n }\n}\n\nexport function buildRequestError(\n response: SupportedResponse,\n bodyText: string\n): APIResponseError | UnknownHTTPResponseError {\n const apiErrorResponseBody = parseAPIErrorResponseBody(bodyText)\n if (apiErrorResponseBody !== undefined) {\n return new APIResponseError({\n code: apiErrorResponseBody.code,\n message: apiErrorResponseBody.message,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n additional_data: apiErrorResponseBody.additional_data,\n request_id: apiErrorResponseBody.request_id,\n })\n }\n return new UnknownHTTPResponseError({\n message: undefined,\n headers: response.headers,\n status: response.status,\n rawBodyText: bodyText,\n })\n}\n\n/**\n * Builds the default message for an unrecognized HTTP response.\n *\n * A response with a Cloudflare Ray ID but no Notion request ID was answered\n * before it reached the API. The message surfaces the Ray ID rather than\n * leaving callers to infer it from an HTML body.\n */\nfunction buildUnknownResponseMessage(args: {\n status: number\n contentType: string | undefined\n ray_id: string | undefined\n request_id: string | undefined\n}): string {\n const { status, contentType, ray_id, request_id } = args\n const base = `Request to Notion API failed with status: ${status}`\n if (ray_id === undefined || request_id !== undefined) {\n return base\n }\n const contentTypeNote =\n contentType !== undefined ? ` (content-type: ${contentType})` : \"\"\n const blockedRequestNote =\n status === 403\n ? \" This may mean the request was blocked by a network security rule.\"\n : \"\"\n return (\n `${base}. The response was returned by Notion's edge proxy before reaching ` +\n `the Notion API${contentTypeNote}.${blockedRequestNote} Cloudflare Ray ID: ` +\n `${ray_id}. Include this ID when contacting Notion support.`\n )\n}\n\nfunction parseAPIErrorResponseBody(body: string):\n | {\n code: APIErrorCode\n message: string\n additional_data: AdditionalData | undefined\n request_id: string | undefined\n }\n | undefined {\n if (typeof body !== \"string\") {\n return\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(body)\n } catch (parseError) {\n return\n }\n\n if (\n !isObject(parsed) ||\n typeof parsed[\"message\"] !== \"string\" ||\n !isAPIErrorCode(parsed[\"code\"])\n ) {\n return\n }\n\n const additional_data = parsed[\"additional_data\"] as\n AdditionalData | undefined\n const request_id = parsed[\"request_id\"] as string | undefined\n\n return {\n ...parsed,\n code: parsed[\"code\"],\n message: parsed[\"message\"],\n additional_data,\n request_id,\n }\n}\n\nfunction isAPIErrorCode(code: unknown): code is APIErrorCode {\n return typeof code === \"string\" && code in apiErrorCodes\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,mBAAmB,CAAC,IAAI,SAAS,aAAa,EAAE,IAAI,EACzE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpD,aAAa,EAAE,IAAI,GAClB,qBAAqB,CAAC,IAAI,CAAC,CAU7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,SAAS,aAAa,EAAE,IAAI,EACxE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpD,aAAa,EAAE,IAAI,GAClB,OAAO,CAAC,IAAI,EAAE,CAAC,CAMjB;AAED,KAAK,kBAAkB,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9E,KAAK,2BAA2B,GAAG,aAAa,GAAG;IACjD,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAuB,0BAA0B,CAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,2BAA2B,GAChC,qBAAqB,CAAC,kBAAkB,CAAC,CAW3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAM/B;AAED,KAAK,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC,cAAc,GACd,eAAe,GACf;IAAE,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAAA;AAErC;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,yBAAyB,EACzB,cAAc,GAAG,OAAO,GAAG,QAAQ,CACpC,GAAG;IACF,MAAM,CAAC,EAAE,yBAAyB,CAAA;CACnC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAuB,wBAAwB,CAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,uBAAuB,GAC5B,qBAAqB,CAAC,aAAa,CAAC,CAgDtC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,aAAa,EAAE,CAAC,CAM1B;AA2BD,KAAK,cAAc,GACf,kBAAkB,GAClB,yBAAyB,GACzB,wBAAwB,GACxB,+BAA+B,GAC/B,sBAAsB,GACtB,6BAA6B,GAC7B,mBAAmB,GACnB,0BAA0B,CAAA;AAE9B;;GAEG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,mBAAmB,CAEjC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,kBAAkB,CAEhC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,wBAAwB,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,sBAAsB,CAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,wBAAwB,GAAG,kBAAkB,CAM3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,kBAAkB,GAAG,yBAAyB,GACvD,QAAQ,IAAI,kBAAkB,CAEhC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,qBAAqB,GAAG,4BAA4B,GAC7D,QAAQ,IAAI,qBAAqB,CAEnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,4BAA4B,GAAG,mCAAmC,GAC3E,QAAQ,IAAI,4BAA4B,CAE1C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,oBAAoB,GAC7B,QAAQ,IAAI,0BAA0B,GAAG,wBAAwB,CAEnE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,GAC7B,QAAQ,IAAI,0BAA0B,GAAG,4BAA4B,CAEvE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,oBAAoB,GAC7B,QAAQ,IAAI,0BAA0B,GAAG,2BAA2B,CAEtE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0C9D;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYlE"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -368,7 +368,8 @@ function extractNotionId(urlOrId) {
368
368
  }
369
369
  // Extract from URL - prioritize path over query parameters
370
370
  // This prevents extracting view IDs when database IDs are in the path
371
- const pathMatch = trimmed.match(/\/[^/?#]*-([0-9a-f]{32})(?:[/?#]|$)/i);
371
+ // The title slug is optional: Notion also copies links with a bare ID path.
372
+ const pathMatch = trimmed.match(/\/(?:[^/?#]*-)?([0-9a-f]{32})(?:[/?#]|$)/i);
372
373
  if (pathMatch && pathMatch[1]) {
373
374
  return formatUuid(pathMatch[1]);
374
375
  }