UNPKG

macro_api

Version:

A comprehensive, production-ready API toolkit for various services including Stripe, Slack, SendGrid, Vercel, AWS S3, Docker Hub, and more.

516 lines (515 loc) 15 kB
import NotionAuthOptions from '../interfaces/Notion/NotionAuthOptions'; import NotionPaginationParams from '../interfaces/Notion/NotionPaginationParams'; /** * Complete Notion API wrapper for interacting with all Notion endpoints */ export declare class NotionAPI { private apiKey; private version; private baseUrl; /** * Create a new Notion API client * @param options Authentication options */ constructor(options: NotionAuthOptions); /** * Make a request to the Notion API * @param method HTTP method * @param endpoint API endpoint * @param data Optional request body * @param params Optional query parameters */ private request; /** * Query a database * @param databaseId Database ID * @param data Query parameters */ queryDatabase(databaseId: string, data?: { filter?: Record<string, any>; sorts?: Array<{ property?: string; timestamp?: 'created_time' | 'last_edited_time'; direction: 'ascending' | 'descending'; }>; start_cursor?: string; page_size?: number; }): Promise<any>; /** * Get database details * @param databaseId Database ID */ getDatabase(databaseId: string): Promise<any>; /** * Create a database * @param data Database data */ createDatabase(data: { parent: { type: 'page_id'; page_id: string; }; title: Array<{ type: 'text'; text: { content: string; link?: { url: string; }; }; annotations?: Record<string, any>; }>; properties: Record<string, { title?: {}; rich_text?: {}; number?: { format?: 'number' | 'number_with_commas' | 'percent' | 'dollar' | 'euro' | 'pound' | 'yen' | 'ruble' | 'rupee' | 'won' | 'yuan'; }; select?: { options: Array<{ name: string; color?: string; }>; }; multi_select?: { options: Array<{ name: string; color?: string; }>; }; date?: {}; people?: {}; files?: {}; checkbox?: {}; url?: {}; email?: {}; phone_number?: {}; formula?: { expression: string; }; relation?: { database_id: string; synced_property_name?: string; }; rollup?: { relation_property_name: string; relation_property_id: string; rollup_property_name: string; rollup_property_id: string; function: 'count' | 'count_values' | 'empty' | 'not_empty' | 'unique' | 'show_original' | 'show_unique' | 'sum' | 'average' | 'median' | 'min' | 'max' | 'range' | 'earliest_date' | 'latest_date' | 'date_range' | 'checked' | 'unchecked' | 'percent_checked' | 'percent_unchecked'; }; created_time?: {}; created_by?: {}; last_edited_time?: {}; last_edited_by?: {}; }>; icon?: { type: 'emoji' | 'external'; emoji?: string; external?: { url: string; }; }; cover?: { type: 'external'; external: { url: string; }; }; is_inline?: boolean; }): Promise<any>; /** * Update database * @param databaseId Database ID * @param data Update data */ updateDatabase(databaseId: string, data: { title?: Array<{ type: 'text'; text: { content: string; link?: { url: string; }; }; annotations?: Record<string, any>; }>; properties?: Record<string, any>; icon?: { type: 'emoji' | 'external'; emoji?: string; external?: { url: string; }; } | null; cover?: { type: 'external'; external: { url: string; }; } | null; is_inline?: boolean; }): Promise<any>; /** * Create a page * @param data Page data */ createPage(data: { parent: { type: 'database_id' | 'page_id'; database_id?: string; page_id?: string; }; properties: Record<string, any>; children?: Array<Record<string, any>>; icon?: { type: 'emoji' | 'external'; emoji?: string; external?: { url: string; }; }; cover?: { type: 'external'; external: { url: string; }; }; }): Promise<any>; /** * Get page details * @param pageId Page ID */ getPage(pageId: string): Promise<any>; /** * Update page properties * @param pageId Page ID * @param data Update data */ updatePage(pageId: string, data: { properties?: Record<string, any>; icon?: { type: 'emoji' | 'external'; emoji?: string; external?: { url: string; }; } | null; cover?: { type: 'external'; external: { url: string; }; } | null; archived?: boolean; }): Promise<any>; /** * Get page property * @param pageId Page ID * @param propertyId Property ID */ getPageProperty(pageId: string, propertyId: string): Promise<any>; /** * Get block children * @param blockId Block ID * @param params Pagination parameters */ getBlockChildren(blockId: string, params?: NotionPaginationParams): Promise<any>; /** * Append block children * @param blockId Block ID * @param data Block children data */ appendBlockChildren(blockId: string, data: { children: Array<Record<string, any>>; }): Promise<any>; /** * Get block details * @param blockId Block ID */ getBlock(blockId: string): Promise<any>; /** * Update block * @param blockId Block ID * @param data Update data */ updateBlock(blockId: string, data: Record<string, any>): Promise<any>; /** * Delete block * @param blockId Block ID */ deleteBlock(blockId: string): Promise<any>; /** * Get current user */ getCurrentUser(): Promise<any>; /** * Get user details * @param userId User ID */ getUser(userId: string): Promise<any>; /** * List users * @param params Pagination parameters */ listUsers(params?: NotionPaginationParams): Promise<any>; /** * Search Notion * @param data Search parameters */ search(data?: { query?: string; filter?: { value: 'page' | 'database'; property: 'object'; }; sort?: { direction: 'ascending' | 'descending'; timestamp: 'last_edited_time'; }; start_cursor?: string; page_size?: number; }): Promise<any>; /** * Create a comment * @param data Comment data */ createComment(data: { parent: { page_id: string; } | { block_id: string; } | { discussion_id: string; }; rich_text: Array<{ type: 'text'; text: { content: string; link?: { url: string; }; }; annotations?: { bold?: boolean; italic?: boolean; strikethrough?: boolean; underline?: boolean; code?: boolean; color?: string; }; }>; }): Promise<any>; /** * List comments * @param params Query parameters */ listComments(params: { block_id?: string; page_id?: string; start_cursor?: string; page_size?: number; }): Promise<any>; /** * Create a heading block * @param level Heading level (1, 2, or 3) * @param text Heading text */ createHeading(level: 1 | 2 | 3, text: string): { [x: string]: string | { rich_text: { type: string; text: { content: string; }; }[]; }; type: string; }; /** * Create a paragraph block * @param text Paragraph text */ createParagraph(text: string): { type: string; paragraph: { rich_text: { type: string; text: { content: string; }; }[]; }; }; /** * Create a bulleted list item block * @param text List item text */ createBulletedListItem(text: string): { type: string; bulleted_list_item: { rich_text: { type: string; text: { content: string; }; }[]; }; }; /** * Create a numbered list item block * @param text List item text */ createNumberedListItem(text: string): { type: string; numbered_list_item: { rich_text: { type: string; text: { content: string; }; }[]; }; }; /** * Create a to-do block * @param text Todo text * @param checked Checked state */ createTodo(text: string, checked?: boolean): { type: string; to_do: { rich_text: { type: string; text: { content: string; }; }[]; checked: boolean; }; }; /** * Create a toggle block * @param text Toggle text */ createToggle(text: string): { type: string; toggle: { rich_text: { type: string; text: { content: string; }; }[]; children: never[]; }; }; /** * Create a code block * @param code Code content * @param language Programming language */ createCode(code: string, language: 'abap' | 'arduino' | 'bash' | 'basic' | 'c' | 'clojure' | 'coffeescript' | 'c++' | 'c#' | 'css' | 'dart' | 'diff' | 'docker' | 'elixir' | 'elm' | 'erlang' | 'flow' | 'fortran' | 'f#' | 'gherkin' | 'glsl' | 'go' | 'graphql' | 'groovy' | 'haskell' | 'html' | 'java' | 'javascript' | 'json' | 'julia' | 'kotlin' | 'latex' | 'less' | 'lisp' | 'livescript' | 'lua' | 'makefile' | 'markdown' | 'markup' | 'matlab' | 'mermaid' | 'nix' | 'objective-c' | 'ocaml' | 'pascal' | 'perl' | 'php' | 'plain text' | 'powershell' | 'prolog' | 'protobuf' | 'python' | 'r' | 'reason' | 'ruby' | 'rust' | 'sass' | 'scala' | 'scheme' | 'scss' | 'shell' | 'sql' | 'swift' | 'typescript' | 'vb.net' | 'verilog' | 'vhdl' | 'visual basic' | 'webassembly' | 'xml' | 'yaml' | 'java/c/c++/c#'): { type: string; code: { rich_text: { type: string; text: { content: string; }; }[]; language: "json" | "abap" | "arduino" | "bash" | "basic" | "c" | "clojure" | "coffeescript" | "c++" | "c#" | "css" | "dart" | "diff" | "docker" | "elixir" | "elm" | "erlang" | "flow" | "fortran" | "f#" | "gherkin" | "glsl" | "go" | "graphql" | "groovy" | "haskell" | "html" | "java" | "javascript" | "julia" | "kotlin" | "latex" | "less" | "lisp" | "livescript" | "lua" | "makefile" | "markdown" | "markup" | "matlab" | "mermaid" | "nix" | "objective-c" | "ocaml" | "pascal" | "perl" | "php" | "plain text" | "powershell" | "prolog" | "protobuf" | "python" | "r" | "reason" | "ruby" | "rust" | "sass" | "scala" | "scheme" | "scss" | "shell" | "sql" | "swift" | "typescript" | "vb.net" | "verilog" | "vhdl" | "visual basic" | "webassembly" | "xml" | "yaml" | "java/c/c++/c#"; }; }; /** * Create a quote block * @param text Quote text */ createQuote(text: string): { type: string; quote: { rich_text: { type: string; text: { content: string; }; }[]; }; }; /** * Create a divider block */ createDivider(): { type: string; divider: {}; }; /** * Create a callout block * @param text Callout text * @param emoji Emoji icon */ createCallout(text: string, emoji: string): { type: string; callout: { rich_text: { type: string; text: { content: string; }; }[]; icon: { type: string; emoji: string; }; }; }; /** * Create a bookmark block * @param url Bookmark URL * @param caption Optional caption */ createBookmark(url: string, caption?: string): any; /** * Create an image block * @param url Image URL * @param caption Optional caption */ createImage(url: string, caption?: string): any; /** * Create a table block * @param rows Number of rows * @param columns Number of columns * @param hasColumnHeader Whether to include a column header * @param hasRowHeader Whether to include a row header */ createTable(rows: number, columns: number, hasColumnHeader?: boolean, hasRowHeader?: boolean): { type: string; table: { table_width: number; has_column_header: boolean; has_row_header: boolean; children: never[]; }; }; /** * Create a table row block * @param cells Cell contents */ createTableRow(cells: string[]): { type: string; table_row: { cells: { type: string; text: { content: string; }; }[][]; }; }; /** * Create a database property * @param type Property type * @param options Property options */ createDatabaseProperty(type: string, options?: Record<string, any>): Record<string, any>; }