@catafal/notion-cli 5.9.0 → 5.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/oclif.manifest.json +1608 -1608
  2. package/package.json +1 -1
@@ -2586,74 +2586,24 @@
2586
2586
  "update.js"
2587
2587
  ]
2588
2588
  },
2589
- "bookmark:list": {
2589
+ "cache:info": {
2590
2590
  "aliases": [
2591
- "bm:ls"
2591
+ "cache:stats",
2592
+ "cache:status"
2592
2593
  ],
2593
2594
  "args": {},
2594
- "description": "List all saved bookmarks",
2595
+ "description": "Show cache statistics and configuration",
2595
2596
  "examples": [
2596
2597
  {
2597
- "description": "List bookmarks",
2598
- "command": "$ notion-cli bookmark list"
2598
+ "description": "Show cache info in JSON format",
2599
+ "command": "notion-cli cache:info --json"
2600
+ },
2601
+ {
2602
+ "description": "Show cache statistics",
2603
+ "command": "notion-cli cache:info"
2599
2604
  }
2600
2605
  ],
2601
2606
  "flags": {
2602
- "columns": {
2603
- "description": "Only show provided columns (comma-separated)",
2604
- "exclusive": [
2605
- "extended"
2606
- ],
2607
- "name": "columns",
2608
- "hasDynamicHelp": false,
2609
- "multiple": false,
2610
- "type": "option"
2611
- },
2612
- "sort": {
2613
- "description": "Property to sort by (prepend with - for descending)",
2614
- "name": "sort",
2615
- "hasDynamicHelp": false,
2616
- "multiple": false,
2617
- "type": "option"
2618
- },
2619
- "filter": {
2620
- "description": "Filter property by substring match",
2621
- "name": "filter",
2622
- "hasDynamicHelp": false,
2623
- "multiple": false,
2624
- "type": "option"
2625
- },
2626
- "csv": {
2627
- "description": "Output in CSV format",
2628
- "exclusive": [
2629
- "no-truncate"
2630
- ],
2631
- "name": "csv",
2632
- "allowNo": false,
2633
- "type": "boolean"
2634
- },
2635
- "extended": {
2636
- "char": "x",
2637
- "description": "Show extra columns",
2638
- "name": "extended",
2639
- "allowNo": false,
2640
- "type": "boolean"
2641
- },
2642
- "no-truncate": {
2643
- "description": "Do not truncate output to fit screen",
2644
- "exclusive": [
2645
- "csv"
2646
- ],
2647
- "name": "no-truncate",
2648
- "allowNo": false,
2649
- "type": "boolean"
2650
- },
2651
- "no-header": {
2652
- "description": "Hide table header from output",
2653
- "name": "no-header",
2654
- "allowNo": false,
2655
- "type": "boolean"
2656
- },
2657
2607
  "json": {
2658
2608
  "char": "j",
2659
2609
  "description": "Output as JSON (recommended for automation)",
@@ -2706,7 +2656,7 @@
2706
2656
  },
2707
2657
  "hasDynamicHelp": false,
2708
2658
  "hiddenAliases": [],
2709
- "id": "bookmark:list",
2659
+ "id": "cache:info",
2710
2660
  "pluginAlias": "@catafal/notion-cli",
2711
2661
  "pluginName": "@catafal/notion-cli",
2712
2662
  "pluginType": "core",
@@ -2716,139 +2666,105 @@
2716
2666
  "relativePath": [
2717
2667
  "dist",
2718
2668
  "commands",
2719
- "bookmark",
2720
- "list.js"
2669
+ "cache",
2670
+ "info.js"
2721
2671
  ]
2722
2672
  },
2723
- "bookmark:remove": {
2673
+ "db:create": {
2724
2674
  "aliases": [
2725
- "bm:rm"
2675
+ "db:c"
2726
2676
  ],
2727
2677
  "args": {
2728
- "name": {
2729
- "description": "Bookmark name to remove",
2730
- "name": "name",
2678
+ "page_id": {
2679
+ "description": "Parent page ID or URL where the database will be created",
2680
+ "name": "page_id",
2731
2681
  "required": true
2732
2682
  }
2733
2683
  },
2734
- "description": "Remove a saved bookmark",
2684
+ "description": "Create a database with an initial data source (table)",
2735
2685
  "examples": [
2736
2686
  {
2737
- "description": "Remove a bookmark",
2738
- "command": "$ notion-cli bookmark remove inbox"
2687
+ "description": "Create a database with an initial data source",
2688
+ "command": "$ notion-cli db create PAGE_ID -t 'My Database'"
2689
+ },
2690
+ {
2691
+ "description": "Create a database using page URL",
2692
+ "command": "$ notion-cli db create https://notion.so/PAGE_ID -t 'My Database'"
2693
+ },
2694
+ {
2695
+ "description": "Create a database with an initial data source and output raw json",
2696
+ "command": "$ notion-cli db create PAGE_ID -t 'My Database' -r"
2739
2697
  }
2740
2698
  ],
2741
2699
  "flags": {
2742
- "json": {
2743
- "char": "j",
2744
- "description": "Output as JSON (recommended for automation)",
2745
- "name": "json",
2700
+ "title": {
2701
+ "char": "t",
2702
+ "description": "Title for the database (and initial data source)",
2703
+ "name": "title",
2704
+ "required": true,
2705
+ "hasDynamicHelp": false,
2706
+ "multiple": false,
2707
+ "type": "option"
2708
+ },
2709
+ "raw": {
2710
+ "char": "r",
2711
+ "description": "output raw json",
2712
+ "name": "raw",
2746
2713
  "allowNo": false,
2747
2714
  "type": "boolean"
2748
2715
  },
2749
- "page-size": {
2750
- "description": "Items per page (1-100, default: 100 for automation)",
2751
- "name": "page-size",
2752
- "default": 100,
2716
+ "columns": {
2717
+ "description": "Only show provided columns (comma-separated)",
2718
+ "exclusive": [
2719
+ "extended"
2720
+ ],
2721
+ "name": "columns",
2753
2722
  "hasDynamicHelp": false,
2754
2723
  "multiple": false,
2755
2724
  "type": "option"
2756
2725
  },
2757
- "retry": {
2758
- "description": "Auto-retry on rate limit (respects Retry-After header)",
2759
- "name": "retry",
2760
- "allowNo": false,
2761
- "type": "boolean"
2726
+ "sort": {
2727
+ "description": "Property to sort by (prepend with - for descending)",
2728
+ "name": "sort",
2729
+ "hasDynamicHelp": false,
2730
+ "multiple": false,
2731
+ "type": "option"
2762
2732
  },
2763
- "timeout": {
2764
- "description": "Request timeout in milliseconds",
2765
- "name": "timeout",
2766
- "default": 30000,
2733
+ "filter": {
2734
+ "description": "Filter property by substring match",
2735
+ "name": "filter",
2767
2736
  "hasDynamicHelp": false,
2768
2737
  "multiple": false,
2769
2738
  "type": "option"
2770
2739
  },
2771
- "no-cache": {
2772
- "description": "Bypass cache and force fresh API calls",
2773
- "name": "no-cache",
2740
+ "csv": {
2741
+ "description": "Output in CSV format",
2742
+ "exclusive": [
2743
+ "no-truncate"
2744
+ ],
2745
+ "name": "csv",
2774
2746
  "allowNo": false,
2775
2747
  "type": "boolean"
2776
2748
  },
2777
- "verbose": {
2778
- "char": "v",
2779
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
2780
- "env": "NOTION_CLI_VERBOSE",
2781
- "name": "verbose",
2749
+ "extended": {
2750
+ "char": "x",
2751
+ "description": "Show extra columns",
2752
+ "name": "extended",
2782
2753
  "allowNo": false,
2783
2754
  "type": "boolean"
2784
2755
  },
2785
- "minimal": {
2786
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
2787
- "name": "minimal",
2756
+ "no-truncate": {
2757
+ "description": "Do not truncate output to fit screen",
2758
+ "exclusive": [
2759
+ "csv"
2760
+ ],
2761
+ "name": "no-truncate",
2788
2762
  "allowNo": false,
2789
2763
  "type": "boolean"
2790
- }
2791
- },
2792
- "hasDynamicHelp": false,
2793
- "hiddenAliases": [],
2794
- "id": "bookmark:remove",
2795
- "pluginAlias": "@catafal/notion-cli",
2796
- "pluginName": "@catafal/notion-cli",
2797
- "pluginType": "core",
2798
- "strict": true,
2799
- "enableJsonFlag": false,
2800
- "isESM": false,
2801
- "relativePath": [
2802
- "dist",
2803
- "commands",
2804
- "bookmark",
2805
- "remove.js"
2806
- ]
2807
- },
2808
- "bookmark:set": {
2809
- "aliases": [
2810
- "bm:set"
2811
- ],
2812
- "args": {
2813
- "name": {
2814
- "description": "Bookmark name (e.g. \"inbox\", \"tasks\")",
2815
- "name": "name",
2816
- "required": true
2817
- },
2818
- "target": {
2819
- "description": "Notion ID, URL, or database name",
2820
- "name": "target",
2821
- "required": true
2822
- }
2823
- },
2824
- "description": "Save a named shortcut to a Notion page or database",
2825
- "examples": [
2826
- {
2827
- "description": "Bookmark a database as \"inbox\" and set it as default",
2828
- "command": "$ notion-cli bookmark set inbox DB_ID_OR_URL --default"
2829
- },
2830
- {
2831
- "description": "Bookmark a page",
2832
- "command": "$ notion-cli bookmark set notes PAGE_URL --type page"
2833
- }
2834
- ],
2835
- "flags": {
2836
- "type": {
2837
- "char": "t",
2838
- "description": "Resource type",
2839
- "name": "type",
2840
- "default": "database",
2841
- "hasDynamicHelp": false,
2842
- "multiple": false,
2843
- "options": [
2844
- "database",
2845
- "page"
2846
- ],
2847
- "type": "option"
2848
2764
  },
2849
- "default": {
2850
- "description": "Also set as the default bookmark (used by `quick` command)",
2851
- "name": "default",
2765
+ "no-header": {
2766
+ "description": "Hide table header from output",
2767
+ "name": "no-header",
2852
2768
  "allowNo": false,
2853
2769
  "type": "boolean"
2854
2770
  },
@@ -2904,7 +2820,7 @@
2904
2820
  },
2905
2821
  "hasDynamicHelp": false,
2906
2822
  "hiddenAliases": [],
2907
- "id": "bookmark:set",
2823
+ "id": "db:create",
2908
2824
  "pluginAlias": "@catafal/notion-cli",
2909
2825
  "pluginName": "@catafal/notion-cli",
2910
2826
  "pluginType": "core",
@@ -2914,35 +2830,85 @@
2914
2830
  "relativePath": [
2915
2831
  "dist",
2916
2832
  "commands",
2917
- "bookmark",
2918
- "set.js"
2833
+ "db",
2834
+ "create.js"
2919
2835
  ]
2920
2836
  },
2921
- "cache:info": {
2837
+ "db:query": {
2922
2838
  "aliases": [
2923
- "cache:stats",
2924
- "cache:status"
2839
+ "db:q"
2925
2840
  ],
2926
- "args": {},
2927
- "description": "Show cache statistics and configuration",
2928
- "examples": [
2929
- {
2930
- "description": "Show cache info in JSON format",
2931
- "command": "notion-cli cache:info --json"
2932
- },
2933
- {
2934
- "description": "Show cache statistics",
2935
- "command": "notion-cli cache:info"
2841
+ "args": {
2842
+ "database_id": {
2843
+ "description": "Database or data source ID or URL (required for automation)",
2844
+ "name": "database_id",
2845
+ "required": true
2846
+ }
2847
+ },
2848
+ "description": "Query a database",
2849
+ "examples": [
2850
+ {
2851
+ "description": "Query a database with full data (recommended for AI assistants)",
2852
+ "command": "$ notion-cli db query DATABASE_ID --raw"
2853
+ },
2854
+ {
2855
+ "description": "Query all records as JSON",
2856
+ "command": "$ notion-cli db query DATABASE_ID --json"
2857
+ },
2858
+ {
2859
+ "description": "Filter with JSON object (recommended for AI agents)",
2860
+ "command": "$ notion-cli db query DATABASE_ID --filter '{\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}' --json"
2861
+ },
2862
+ {
2863
+ "description": "Simple text search across properties",
2864
+ "command": "$ notion-cli db query DATABASE_ID --search \"urgent\" --json"
2865
+ },
2866
+ {
2867
+ "description": "Load complex filter from file",
2868
+ "command": "$ notion-cli db query DATABASE_ID --file-filter ./filter.json --json"
2869
+ },
2870
+ {
2871
+ "description": "Query with AND filter",
2872
+ "command": "$ notion-cli db query DATABASE_ID --filter '{\"and\": [{\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}, {\"property\": \"Priority\", \"number\": {\"greater_than\": 5}}]}' --json"
2873
+ },
2874
+ {
2875
+ "description": "Query using database URL",
2876
+ "command": "$ notion-cli db query https://notion.so/DATABASE_ID --json"
2877
+ },
2878
+ {
2879
+ "description": "Query with sorting",
2880
+ "command": "$ notion-cli db query DATABASE_ID --sort-property Name --sort-direction desc"
2881
+ },
2882
+ {
2883
+ "description": "Query with pagination",
2884
+ "command": "$ notion-cli db query DATABASE_ID --page-size 50"
2885
+ },
2886
+ {
2887
+ "description": "Get all pages (bypass pagination)",
2888
+ "command": "$ notion-cli db query DATABASE_ID --page-all"
2889
+ },
2890
+ {
2891
+ "description": "Output as CSV",
2892
+ "command": "$ notion-cli db query DATABASE_ID --csv"
2893
+ },
2894
+ {
2895
+ "description": "Output as markdown table",
2896
+ "command": "$ notion-cli db query DATABASE_ID --markdown"
2897
+ },
2898
+ {
2899
+ "description": "Output as compact JSON",
2900
+ "command": "$ notion-cli db query DATABASE_ID --compact-json"
2901
+ },
2902
+ {
2903
+ "description": "Output as pretty table",
2904
+ "command": "$ notion-cli db query DATABASE_ID --pretty"
2905
+ },
2906
+ {
2907
+ "description": "Select specific properties (60-80% token reduction)",
2908
+ "command": "$ notion-cli db query DATABASE_ID --select \"title,status,priority\" --json"
2936
2909
  }
2937
2910
  ],
2938
2911
  "flags": {
2939
- "json": {
2940
- "char": "j",
2941
- "description": "Output as JSON (recommended for automation)",
2942
- "name": "json",
2943
- "allowNo": false,
2944
- "type": "boolean"
2945
- },
2946
2912
  "page-size": {
2947
2913
  "description": "Items per page (1-100, default: 100 for automation)",
2948
2914
  "name": "page-size",
@@ -2951,177 +2917,101 @@
2951
2917
  "multiple": false,
2952
2918
  "type": "option"
2953
2919
  },
2954
- "retry": {
2955
- "description": "Auto-retry on rate limit (respects Retry-After header)",
2956
- "name": "retry",
2920
+ "page-all": {
2921
+ "char": "A",
2922
+ "description": "Get all pages (bypass pagination)",
2923
+ "name": "page-all",
2957
2924
  "allowNo": false,
2958
2925
  "type": "boolean"
2959
2926
  },
2960
- "timeout": {
2961
- "description": "Request timeout in milliseconds",
2962
- "name": "timeout",
2963
- "default": 30000,
2927
+ "sort-property": {
2928
+ "description": "The property to sort results by",
2929
+ "name": "sort-property",
2964
2930
  "hasDynamicHelp": false,
2965
2931
  "multiple": false,
2966
2932
  "type": "option"
2967
2933
  },
2968
- "no-cache": {
2969
- "description": "Bypass cache and force fresh API calls",
2970
- "name": "no-cache",
2971
- "allowNo": false,
2972
- "type": "boolean"
2973
- },
2974
- "verbose": {
2975
- "char": "v",
2976
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
2977
- "env": "NOTION_CLI_VERBOSE",
2978
- "name": "verbose",
2979
- "allowNo": false,
2980
- "type": "boolean"
2981
- },
2982
- "minimal": {
2983
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
2984
- "name": "minimal",
2985
- "allowNo": false,
2986
- "type": "boolean"
2987
- }
2988
- },
2989
- "hasDynamicHelp": false,
2990
- "hiddenAliases": [],
2991
- "id": "cache:info",
2992
- "pluginAlias": "@catafal/notion-cli",
2993
- "pluginName": "@catafal/notion-cli",
2994
- "pluginType": "core",
2995
- "strict": true,
2996
- "enableJsonFlag": false,
2997
- "isESM": false,
2998
- "relativePath": [
2999
- "dist",
3000
- "commands",
3001
- "cache",
3002
- "info.js"
3003
- ]
3004
- },
3005
- "config:set-token": {
3006
- "aliases": [
3007
- "config:token"
3008
- ],
3009
- "args": {
3010
- "token": {
3011
- "description": "Notion integration token (starts with secret_ or ntn_)",
3012
- "name": "token",
3013
- "required": false
3014
- }
3015
- },
3016
- "description": "Set NOTION_TOKEN in your shell configuration file",
3017
- "examples": [
3018
- {
3019
- "description": "Set Notion token interactively",
3020
- "command": "notion-cli config set-token"
3021
- },
3022
- {
3023
- "description": "Set Notion token directly",
3024
- "command": "notion-cli config set-token ntn_abc123..."
2934
+ "sort-direction": {
2935
+ "description": "The direction to sort results",
2936
+ "name": "sort-direction",
2937
+ "default": "asc",
2938
+ "hasDynamicHelp": false,
2939
+ "multiple": false,
2940
+ "options": [
2941
+ "asc",
2942
+ "desc"
2943
+ ],
2944
+ "type": "option"
3025
2945
  },
3026
- {
3027
- "description": "Set token with JSON output",
3028
- "command": "notion-cli config set-token ntn_abc123... --json"
3029
- }
3030
- ],
3031
- "flags": {
3032
- "json": {
3033
- "char": "j",
3034
- "description": "Output as JSON (recommended for automation)",
3035
- "name": "json",
2946
+ "raw": {
2947
+ "char": "r",
2948
+ "description": "Output raw JSON (recommended for AI assistants - returns all page data)",
2949
+ "name": "raw",
3036
2950
  "allowNo": false,
3037
2951
  "type": "boolean"
3038
2952
  },
3039
- "page-size": {
3040
- "description": "Items per page (1-100, default: 100 for automation)",
3041
- "name": "page-size",
3042
- "default": 100,
2953
+ "columns": {
2954
+ "description": "Only show provided columns (comma-separated)",
2955
+ "exclusive": [
2956
+ "extended"
2957
+ ],
2958
+ "name": "columns",
3043
2959
  "hasDynamicHelp": false,
3044
2960
  "multiple": false,
3045
2961
  "type": "option"
3046
2962
  },
3047
- "retry": {
3048
- "description": "Auto-retry on rate limit (respects Retry-After header)",
3049
- "name": "retry",
3050
- "allowNo": false,
3051
- "type": "boolean"
2963
+ "sort": {
2964
+ "description": "Property to sort by (prepend with - for descending)",
2965
+ "name": "sort",
2966
+ "hasDynamicHelp": false,
2967
+ "multiple": false,
2968
+ "type": "option"
3052
2969
  },
3053
- "timeout": {
3054
- "description": "Request timeout in milliseconds",
3055
- "name": "timeout",
3056
- "default": 30000,
2970
+ "filter": {
2971
+ "char": "f",
2972
+ "description": "Filter as JSON object (Notion filter API format)",
2973
+ "exclusive": [
2974
+ "search",
2975
+ "file-filter",
2976
+ "rawFilter",
2977
+ "fileFilter"
2978
+ ],
2979
+ "name": "filter",
3057
2980
  "hasDynamicHelp": false,
3058
2981
  "multiple": false,
3059
2982
  "type": "option"
3060
2983
  },
3061
- "no-cache": {
3062
- "description": "Bypass cache and force fresh API calls",
3063
- "name": "no-cache",
2984
+ "csv": {
2985
+ "description": "Output in CSV format",
2986
+ "exclusive": [
2987
+ "no-truncate"
2988
+ ],
2989
+ "name": "csv",
3064
2990
  "allowNo": false,
3065
2991
  "type": "boolean"
3066
2992
  },
3067
- "verbose": {
3068
- "char": "v",
3069
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3070
- "env": "NOTION_CLI_VERBOSE",
3071
- "name": "verbose",
2993
+ "extended": {
2994
+ "char": "x",
2995
+ "description": "Show extra columns",
2996
+ "name": "extended",
3072
2997
  "allowNo": false,
3073
2998
  "type": "boolean"
3074
2999
  },
3075
- "minimal": {
3076
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3077
- "name": "minimal",
3000
+ "no-truncate": {
3001
+ "description": "Do not truncate output to fit screen",
3002
+ "exclusive": [
3003
+ "csv"
3004
+ ],
3005
+ "name": "no-truncate",
3078
3006
  "allowNo": false,
3079
3007
  "type": "boolean"
3080
- }
3081
- },
3082
- "hasDynamicHelp": false,
3083
- "hiddenAliases": [],
3084
- "id": "config:set-token",
3085
- "pluginAlias": "@catafal/notion-cli",
3086
- "pluginName": "@catafal/notion-cli",
3087
- "pluginType": "core",
3088
- "strict": true,
3089
- "enableJsonFlag": false,
3090
- "isESM": false,
3091
- "relativePath": [
3092
- "dist",
3093
- "commands",
3094
- "config",
3095
- "set-token.js"
3096
- ]
3097
- },
3098
- "daily": {
3099
- "aliases": [
3100
- "d"
3101
- ],
3102
- "args": {
3103
- "content": {
3104
- "description": "Text to add to today's entry (appended if entry already exists)",
3105
- "name": "content",
3106
- "required": false
3107
- }
3108
- },
3109
- "description": "Create or open today's daily journal entry",
3110
- "examples": [
3111
- {
3112
- "description": "Create today's entry",
3113
- "command": "$ notion-cli daily"
3114
3008
  },
3115
- {
3116
- "description": "Create entry with body content",
3117
- "command": "$ notion-cli daily \"Had a productive standup\""
3009
+ "no-header": {
3010
+ "description": "Hide table header from output",
3011
+ "name": "no-header",
3012
+ "allowNo": false,
3013
+ "type": "boolean"
3118
3014
  },
3119
- {
3120
- "description": "First-time setup (see `daily setup --help`)",
3121
- "command": "$ notion-cli daily setup DB_ID"
3122
- }
3123
- ],
3124
- "flags": {
3125
3015
  "json": {
3126
3016
  "char": "j",
3127
3017
  "description": "Output as JSON (recommended for automation)",
@@ -3129,14 +3019,6 @@
3129
3019
  "allowNo": false,
3130
3020
  "type": "boolean"
3131
3021
  },
3132
- "page-size": {
3133
- "description": "Items per page (1-100, default: 100 for automation)",
3134
- "name": "page-size",
3135
- "default": 100,
3136
- "hasDynamicHelp": false,
3137
- "multiple": false,
3138
- "type": "option"
3139
- },
3140
3022
  "retry": {
3141
3023
  "description": "Auto-retry on rate limit (respects Retry-After header)",
3142
3024
  "name": "retry",
@@ -3170,105 +3052,108 @@
3170
3052
  "name": "minimal",
3171
3053
  "allowNo": false,
3172
3054
  "type": "boolean"
3173
- }
3174
- },
3175
- "hasDynamicHelp": false,
3176
- "hiddenAliases": [],
3177
- "id": "daily",
3178
- "pluginAlias": "@catafal/notion-cli",
3179
- "pluginName": "@catafal/notion-cli",
3180
- "pluginType": "core",
3181
- "strict": true,
3182
- "enableJsonFlag": false,
3183
- "isESM": false,
3184
- "relativePath": [
3185
- "dist",
3186
- "commands",
3187
- "daily",
3188
- "index.js"
3189
- ]
3190
- },
3191
- "daily:setup": {
3192
- "aliases": [],
3193
- "args": {
3194
- "target": {
3195
- "description": "Existing database ID or URL (manual mode)",
3196
- "name": "target",
3197
- "required": false
3198
- }
3199
- },
3200
- "description": "Configure the daily journal command",
3201
- "examples": [
3202
- {
3203
- "description": "Point to an existing database (manual)",
3204
- "command": "$ notion-cli daily setup DB_ID_OR_URL"
3205
3055
  },
3206
- {
3207
- "description": "Auto-create a daily journal database",
3208
- "command": "$ notion-cli daily setup --auto PAGE_ID_OR_URL"
3209
- }
3210
- ],
3211
- "flags": {
3212
- "auto": {
3213
- "description": "Auto-create database under this parent page (pass page ID or URL)",
3214
- "name": "auto",
3056
+ "markdown": {
3057
+ "char": "m",
3058
+ "description": "Output as markdown table (GitHub-flavored)",
3059
+ "exclusive": [
3060
+ "compact-json",
3061
+ "pretty"
3062
+ ],
3063
+ "name": "markdown",
3064
+ "allowNo": false,
3065
+ "type": "boolean"
3066
+ },
3067
+ "compact-json": {
3068
+ "char": "c",
3069
+ "description": "Output as compact JSON (single-line, ideal for piping)",
3070
+ "exclusive": [
3071
+ "markdown",
3072
+ "pretty"
3073
+ ],
3074
+ "name": "compact-json",
3075
+ "allowNo": false,
3076
+ "type": "boolean"
3077
+ },
3078
+ "pretty": {
3079
+ "char": "P",
3080
+ "description": "Output as pretty table with borders",
3081
+ "exclusive": [
3082
+ "markdown",
3083
+ "compact-json"
3084
+ ],
3085
+ "name": "pretty",
3086
+ "allowNo": false,
3087
+ "type": "boolean"
3088
+ },
3089
+ "file-filter": {
3090
+ "char": "F",
3091
+ "description": "Load filter from JSON file",
3092
+ "exclusive": [
3093
+ "filter",
3094
+ "search",
3095
+ "rawFilter",
3096
+ "fileFilter"
3097
+ ],
3098
+ "name": "file-filter",
3215
3099
  "hasDynamicHelp": false,
3216
3100
  "multiple": false,
3217
3101
  "type": "option"
3218
3102
  },
3219
- "json": {
3220
- "char": "j",
3221
- "description": "Output as JSON (recommended for automation)",
3222
- "name": "json",
3223
- "allowNo": false,
3224
- "type": "boolean"
3103
+ "search": {
3104
+ "char": "s",
3105
+ "description": "Simple text search (searches across title and common text properties)",
3106
+ "exclusive": [
3107
+ "filter",
3108
+ "file-filter",
3109
+ "rawFilter",
3110
+ "fileFilter"
3111
+ ],
3112
+ "name": "search",
3113
+ "hasDynamicHelp": false,
3114
+ "multiple": false,
3115
+ "type": "option"
3225
3116
  },
3226
- "page-size": {
3227
- "description": "Items per page (1-100, default: 100 for automation)",
3228
- "name": "page-size",
3229
- "default": 100,
3117
+ "select": {
3118
+ "description": "Select specific properties to return (comma-separated). Reduces token usage by 60-80%.",
3119
+ "name": "select",
3230
3120
  "hasDynamicHelp": false,
3231
3121
  "multiple": false,
3232
3122
  "type": "option"
3233
3123
  },
3234
- "retry": {
3235
- "description": "Auto-retry on rate limit (respects Retry-After header)",
3236
- "name": "retry",
3237
- "allowNo": false,
3238
- "type": "boolean"
3239
- },
3240
- "timeout": {
3241
- "description": "Request timeout in milliseconds",
3242
- "name": "timeout",
3243
- "default": 30000,
3124
+ "rawFilter": {
3125
+ "char": "a",
3126
+ "description": "DEPRECATED: Use --filter instead. JSON stringified filter string",
3127
+ "exclusive": [
3128
+ "filter",
3129
+ "search",
3130
+ "file-filter",
3131
+ "fileFilter"
3132
+ ],
3133
+ "hidden": true,
3134
+ "name": "rawFilter",
3244
3135
  "hasDynamicHelp": false,
3245
3136
  "multiple": false,
3246
3137
  "type": "option"
3247
3138
  },
3248
- "no-cache": {
3249
- "description": "Bypass cache and force fresh API calls",
3250
- "name": "no-cache",
3251
- "allowNo": false,
3252
- "type": "boolean"
3253
- },
3254
- "verbose": {
3255
- "char": "v",
3256
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3257
- "env": "NOTION_CLI_VERBOSE",
3258
- "name": "verbose",
3259
- "allowNo": false,
3260
- "type": "boolean"
3261
- },
3262
- "minimal": {
3263
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3264
- "name": "minimal",
3265
- "allowNo": false,
3266
- "type": "boolean"
3139
+ "fileFilter": {
3140
+ "description": "DEPRECATED: Use --file-filter instead. JSON filter file path",
3141
+ "exclusive": [
3142
+ "filter",
3143
+ "search",
3144
+ "file-filter",
3145
+ "rawFilter"
3146
+ ],
3147
+ "hidden": true,
3148
+ "name": "fileFilter",
3149
+ "hasDynamicHelp": false,
3150
+ "multiple": false,
3151
+ "type": "option"
3267
3152
  }
3268
3153
  },
3269
3154
  "hasDynamicHelp": false,
3270
3155
  "hiddenAliases": [],
3271
- "id": "daily:setup",
3156
+ "id": "db:query",
3272
3157
  "pluginAlias": "@catafal/notion-cli",
3273
3158
  "pluginName": "@catafal/notion-cli",
3274
3159
  "pluginType": "core",
@@ -3278,49 +3163,50 @@
3278
3163
  "relativePath": [
3279
3164
  "dist",
3280
3165
  "commands",
3281
- "daily",
3282
- "setup.js"
3166
+ "db",
3167
+ "query.js"
3283
3168
  ]
3284
3169
  },
3285
- "db:create": {
3170
+ "db:retrieve": {
3286
3171
  "aliases": [
3287
- "db:c"
3172
+ "db:r",
3173
+ "ds:retrieve",
3174
+ "ds:r"
3288
3175
  ],
3289
3176
  "args": {
3290
- "page_id": {
3291
- "description": "Parent page ID or URL where the database will be created",
3292
- "name": "page_id",
3177
+ "database_id": {
3178
+ "description": "Data source ID or URL (the ID of the table whose schema you want to retrieve)",
3179
+ "name": "database_id",
3293
3180
  "required": true
3294
3181
  }
3295
3182
  },
3296
- "description": "Create a database with an initial data source (table)",
3183
+ "description": "Retrieve a data source (table) schema and properties",
3297
3184
  "examples": [
3298
3185
  {
3299
- "description": "Create a database with an initial data source",
3300
- "command": "$ notion-cli db create PAGE_ID -t 'My Database'"
3186
+ "description": "Retrieve a data source with full schema (recommended for AI assistants)",
3187
+ "command": "notion-cli db retrieve DATA_SOURCE_ID -r"
3301
3188
  },
3302
3189
  {
3303
- "description": "Create a database using page URL",
3304
- "command": "$ notion-cli db create https://notion.so/PAGE_ID -t 'My Database'"
3190
+ "description": "Retrieve a data source schema via data_source_id",
3191
+ "command": "notion-cli db retrieve DATA_SOURCE_ID"
3305
3192
  },
3306
3193
  {
3307
- "description": "Create a database with an initial data source and output raw json",
3308
- "command": "$ notion-cli db create PAGE_ID -t 'My Database' -r"
3194
+ "description": "Retrieve a data source via URL",
3195
+ "command": "notion-cli db retrieve https://notion.so/DATABASE_ID"
3196
+ },
3197
+ {
3198
+ "description": "Retrieve a data source and output as markdown table",
3199
+ "command": "notion-cli db retrieve DATA_SOURCE_ID --markdown"
3200
+ },
3201
+ {
3202
+ "description": "Retrieve a data source and output as compact JSON",
3203
+ "command": "notion-cli db retrieve DATA_SOURCE_ID --compact-json"
3309
3204
  }
3310
3205
  ],
3311
3206
  "flags": {
3312
- "title": {
3313
- "char": "t",
3314
- "description": "Title for the database (and initial data source)",
3315
- "name": "title",
3316
- "required": true,
3317
- "hasDynamicHelp": false,
3318
- "multiple": false,
3319
- "type": "option"
3320
- },
3321
3207
  "raw": {
3322
3208
  "char": "r",
3323
- "description": "output raw json",
3209
+ "description": "output raw json (recommended for AI assistants - returns full schema)",
3324
3210
  "name": "raw",
3325
3211
  "allowNo": false,
3326
3212
  "type": "boolean"
@@ -3395,44 +3281,194 @@
3395
3281
  "multiple": false,
3396
3282
  "type": "option"
3397
3283
  },
3398
- "retry": {
3399
- "description": "Auto-retry on rate limit (respects Retry-After header)",
3400
- "name": "retry",
3401
- "allowNo": false,
3402
- "type": "boolean"
3403
- },
3404
- "timeout": {
3405
- "description": "Request timeout in milliseconds",
3406
- "name": "timeout",
3407
- "default": 30000,
3284
+ "retry": {
3285
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
3286
+ "name": "retry",
3287
+ "allowNo": false,
3288
+ "type": "boolean"
3289
+ },
3290
+ "timeout": {
3291
+ "description": "Request timeout in milliseconds",
3292
+ "name": "timeout",
3293
+ "default": 30000,
3294
+ "hasDynamicHelp": false,
3295
+ "multiple": false,
3296
+ "type": "option"
3297
+ },
3298
+ "no-cache": {
3299
+ "description": "Bypass cache and force fresh API calls",
3300
+ "name": "no-cache",
3301
+ "allowNo": false,
3302
+ "type": "boolean"
3303
+ },
3304
+ "verbose": {
3305
+ "char": "v",
3306
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3307
+ "env": "NOTION_CLI_VERBOSE",
3308
+ "name": "verbose",
3309
+ "allowNo": false,
3310
+ "type": "boolean"
3311
+ },
3312
+ "minimal": {
3313
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3314
+ "name": "minimal",
3315
+ "allowNo": false,
3316
+ "type": "boolean"
3317
+ },
3318
+ "markdown": {
3319
+ "char": "m",
3320
+ "description": "Output as markdown table (GitHub-flavored)",
3321
+ "exclusive": [
3322
+ "compact-json",
3323
+ "pretty"
3324
+ ],
3325
+ "name": "markdown",
3326
+ "allowNo": false,
3327
+ "type": "boolean"
3328
+ },
3329
+ "compact-json": {
3330
+ "char": "c",
3331
+ "description": "Output as compact JSON (single-line, ideal for piping)",
3332
+ "exclusive": [
3333
+ "markdown",
3334
+ "pretty"
3335
+ ],
3336
+ "name": "compact-json",
3337
+ "allowNo": false,
3338
+ "type": "boolean"
3339
+ },
3340
+ "pretty": {
3341
+ "char": "P",
3342
+ "description": "Output as pretty table with borders",
3343
+ "exclusive": [
3344
+ "markdown",
3345
+ "compact-json"
3346
+ ],
3347
+ "name": "pretty",
3348
+ "allowNo": false,
3349
+ "type": "boolean"
3350
+ }
3351
+ },
3352
+ "hasDynamicHelp": false,
3353
+ "hiddenAliases": [],
3354
+ "id": "db:retrieve",
3355
+ "pluginAlias": "@catafal/notion-cli",
3356
+ "pluginName": "@catafal/notion-cli",
3357
+ "pluginType": "core",
3358
+ "strict": true,
3359
+ "enableJsonFlag": false,
3360
+ "isESM": false,
3361
+ "relativePath": [
3362
+ "dist",
3363
+ "commands",
3364
+ "db",
3365
+ "retrieve.js"
3366
+ ]
3367
+ },
3368
+ "db:schema": {
3369
+ "aliases": [
3370
+ "db:s",
3371
+ "ds:schema",
3372
+ "ds:s"
3373
+ ],
3374
+ "args": {
3375
+ "data_source_id": {
3376
+ "description": "Data source ID or URL (the table whose schema you want to extract)",
3377
+ "name": "data_source_id",
3378
+ "required": true
3379
+ }
3380
+ },
3381
+ "description": "Extract clean, AI-parseable schema from a Notion data source (table). This command is optimized for AI agents and automation - it returns property names, types, options (for select/multi-select), and configuration in an easy-to-parse format.",
3382
+ "examples": [
3383
+ {
3384
+ "description": "Get full schema in JSON format (recommended for AI agents)",
3385
+ "command": "<%= config.bin %> db schema abc123def456 --output json"
3386
+ },
3387
+ {
3388
+ "description": "Get schema with property payload examples (recommended for AI agents)",
3389
+ "command": "<%= config.bin %> db schema abc123def456 --with-examples --json"
3390
+ },
3391
+ {
3392
+ "description": "Get schema using database URL",
3393
+ "command": "<%= config.bin %> db schema https://notion.so/DATABASE_ID --output json"
3394
+ },
3395
+ {
3396
+ "description": "Get schema as formatted table",
3397
+ "command": "<%= config.bin %> db schema abc123def456"
3398
+ },
3399
+ {
3400
+ "description": "Get schema with examples in human-readable format",
3401
+ "command": "<%= config.bin %> db schema abc123def456 --with-examples"
3402
+ },
3403
+ {
3404
+ "description": "Get schema in YAML format",
3405
+ "command": "<%= config.bin %> db schema abc123def456 --output yaml"
3406
+ },
3407
+ {
3408
+ "description": "Get only specific properties",
3409
+ "command": "<%= config.bin %> db schema abc123def456 --properties Name,Status,Tags --output json"
3410
+ },
3411
+ {
3412
+ "description": "Get schema as markdown documentation",
3413
+ "command": "<%= config.bin %> db schema abc123def456 --markdown"
3414
+ },
3415
+ {
3416
+ "description": "Parse schema with jq (extract property names)",
3417
+ "command": "<%= config.bin %> db schema abc123def456 --output json | jq '.data.properties[].name'"
3418
+ },
3419
+ {
3420
+ "description": "Find all select/multi-select properties and their options",
3421
+ "command": "<%= config.bin %> db schema abc123def456 --output json | jq '.data.properties[] | select(.options) | {name, options}'"
3422
+ }
3423
+ ],
3424
+ "flags": {
3425
+ "output": {
3426
+ "char": "o",
3427
+ "description": "Output format",
3428
+ "name": "output",
3429
+ "default": "table",
3430
+ "hasDynamicHelp": false,
3431
+ "multiple": false,
3432
+ "options": [
3433
+ "json",
3434
+ "yaml",
3435
+ "table"
3436
+ ],
3437
+ "type": "option"
3438
+ },
3439
+ "properties": {
3440
+ "char": "p",
3441
+ "description": "Comma-separated list of properties to include (default: all)",
3442
+ "name": "properties",
3408
3443
  "hasDynamicHelp": false,
3409
3444
  "multiple": false,
3410
3445
  "type": "option"
3411
3446
  },
3412
- "no-cache": {
3413
- "description": "Bypass cache and force fresh API calls",
3414
- "name": "no-cache",
3447
+ "markdown": {
3448
+ "char": "m",
3449
+ "description": "Output as markdown documentation",
3450
+ "name": "markdown",
3415
3451
  "allowNo": false,
3416
3452
  "type": "boolean"
3417
3453
  },
3418
- "verbose": {
3419
- "char": "v",
3420
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3421
- "env": "NOTION_CLI_VERBOSE",
3422
- "name": "verbose",
3454
+ "json": {
3455
+ "char": "j",
3456
+ "description": "Output as JSON (shorthand for --output json)",
3457
+ "name": "json",
3423
3458
  "allowNo": false,
3424
3459
  "type": "boolean"
3425
3460
  },
3426
- "minimal": {
3427
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3428
- "name": "minimal",
3461
+ "with-examples": {
3462
+ "char": "e",
3463
+ "description": "Include property payload examples for create/update operations",
3464
+ "name": "with-examples",
3429
3465
  "allowNo": false,
3430
3466
  "type": "boolean"
3431
3467
  }
3432
3468
  },
3433
3469
  "hasDynamicHelp": false,
3434
3470
  "hiddenAliases": [],
3435
- "id": "db:create",
3471
+ "id": "db:schema",
3436
3472
  "pluginAlias": "@catafal/notion-cli",
3437
3473
  "pluginName": "@catafal/notion-cli",
3438
3474
  "pluginType": "core",
@@ -3443,121 +3479,50 @@
3443
3479
  "dist",
3444
3480
  "commands",
3445
3481
  "db",
3446
- "create.js"
3482
+ "schema.js"
3447
3483
  ]
3448
3484
  },
3449
- "db:query": {
3485
+ "db:update": {
3450
3486
  "aliases": [
3451
- "db:q"
3487
+ "db:u",
3488
+ "ds:update",
3489
+ "ds:u"
3452
3490
  ],
3453
3491
  "args": {
3454
3492
  "database_id": {
3455
- "description": "Database or data source ID or URL (required for automation)",
3493
+ "description": "Data source ID or URL (the ID of the table you want to update)",
3456
3494
  "name": "database_id",
3457
3495
  "required": true
3458
3496
  }
3459
3497
  },
3460
- "description": "Query a database",
3498
+ "description": "Update a data source (table) title and properties",
3461
3499
  "examples": [
3462
3500
  {
3463
- "description": "Query a database with full data (recommended for AI assistants)",
3464
- "command": "$ notion-cli db query DATABASE_ID --raw"
3465
- },
3466
- {
3467
- "description": "Query all records as JSON",
3468
- "command": "$ notion-cli db query DATABASE_ID --json"
3469
- },
3470
- {
3471
- "description": "Filter with JSON object (recommended for AI agents)",
3472
- "command": "$ notion-cli db query DATABASE_ID --filter '{\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}' --json"
3473
- },
3474
- {
3475
- "description": "Simple text search across properties",
3476
- "command": "$ notion-cli db query DATABASE_ID --search \"urgent\" --json"
3477
- },
3478
- {
3479
- "description": "Load complex filter from file",
3480
- "command": "$ notion-cli db query DATABASE_ID --file-filter ./filter.json --json"
3481
- },
3482
- {
3483
- "description": "Query with AND filter",
3484
- "command": "$ notion-cli db query DATABASE_ID --filter '{\"and\": [{\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}, {\"property\": \"Priority\", \"number\": {\"greater_than\": 5}}]}' --json"
3485
- },
3486
- {
3487
- "description": "Query using database URL",
3488
- "command": "$ notion-cli db query https://notion.so/DATABASE_ID --json"
3489
- },
3490
- {
3491
- "description": "Query with sorting",
3492
- "command": "$ notion-cli db query DATABASE_ID --sort-property Name --sort-direction desc"
3493
- },
3494
- {
3495
- "description": "Query with pagination",
3496
- "command": "$ notion-cli db query DATABASE_ID --page-size 50"
3497
- },
3498
- {
3499
- "description": "Get all pages (bypass pagination)",
3500
- "command": "$ notion-cli db query DATABASE_ID --page-all"
3501
- },
3502
- {
3503
- "description": "Output as CSV",
3504
- "command": "$ notion-cli db query DATABASE_ID --csv"
3505
- },
3506
- {
3507
- "description": "Output as markdown table",
3508
- "command": "$ notion-cli db query DATABASE_ID --markdown"
3509
- },
3510
- {
3511
- "description": "Output as compact JSON",
3512
- "command": "$ notion-cli db query DATABASE_ID --compact-json"
3501
+ "description": "Update a data source with a specific data_source_id and title",
3502
+ "command": "$ notion-cli db update DATA_SOURCE_ID -t 'My Data Source'"
3513
3503
  },
3514
3504
  {
3515
- "description": "Output as pretty table",
3516
- "command": "$ notion-cli db query DATABASE_ID --pretty"
3505
+ "description": "Update a data source via URL",
3506
+ "command": "$ notion-cli db update https://notion.so/DATABASE_ID -t 'My Data Source'"
3517
3507
  },
3518
3508
  {
3519
- "description": "Select specific properties (60-80% token reduction)",
3520
- "command": "$ notion-cli db query DATABASE_ID --select \"title,status,priority\" --json"
3509
+ "description": "Update a data source with a specific data_source_id and output raw json",
3510
+ "command": "$ notion-cli db update DATA_SOURCE_ID -t 'My Table' -r"
3521
3511
  }
3522
3512
  ],
3523
3513
  "flags": {
3524
- "page-size": {
3525
- "description": "Items per page (1-100, default: 100 for automation)",
3526
- "name": "page-size",
3527
- "default": 100,
3528
- "hasDynamicHelp": false,
3529
- "multiple": false,
3530
- "type": "option"
3531
- },
3532
- "page-all": {
3533
- "char": "A",
3534
- "description": "Get all pages (bypass pagination)",
3535
- "name": "page-all",
3536
- "allowNo": false,
3537
- "type": "boolean"
3538
- },
3539
- "sort-property": {
3540
- "description": "The property to sort results by",
3541
- "name": "sort-property",
3542
- "hasDynamicHelp": false,
3543
- "multiple": false,
3544
- "type": "option"
3545
- },
3546
- "sort-direction": {
3547
- "description": "The direction to sort results",
3548
- "name": "sort-direction",
3549
- "default": "asc",
3514
+ "title": {
3515
+ "char": "t",
3516
+ "description": "New database title",
3517
+ "name": "title",
3518
+ "required": true,
3550
3519
  "hasDynamicHelp": false,
3551
3520
  "multiple": false,
3552
- "options": [
3553
- "asc",
3554
- "desc"
3555
- ],
3556
3521
  "type": "option"
3557
3522
  },
3558
3523
  "raw": {
3559
3524
  "char": "r",
3560
- "description": "Output raw JSON (recommended for AI assistants - returns all page data)",
3525
+ "description": "output raw json",
3561
3526
  "name": "raw",
3562
3527
  "allowNo": false,
3563
3528
  "type": "boolean"
@@ -3580,14 +3545,7 @@
3580
3545
  "type": "option"
3581
3546
  },
3582
3547
  "filter": {
3583
- "char": "f",
3584
- "description": "Filter as JSON object (Notion filter API format)",
3585
- "exclusive": [
3586
- "search",
3587
- "file-filter",
3588
- "rawFilter",
3589
- "fileFilter"
3590
- ],
3548
+ "description": "Filter property by substring match",
3591
3549
  "name": "filter",
3592
3550
  "hasDynamicHelp": false,
3593
3551
  "multiple": false,
@@ -3631,141 +3589,52 @@
3631
3589
  "allowNo": false,
3632
3590
  "type": "boolean"
3633
3591
  },
3634
- "retry": {
3635
- "description": "Auto-retry on rate limit (respects Retry-After header)",
3636
- "name": "retry",
3637
- "allowNo": false,
3638
- "type": "boolean"
3639
- },
3640
- "timeout": {
3641
- "description": "Request timeout in milliseconds",
3642
- "name": "timeout",
3643
- "default": 30000,
3644
- "hasDynamicHelp": false,
3645
- "multiple": false,
3646
- "type": "option"
3647
- },
3648
- "no-cache": {
3649
- "description": "Bypass cache and force fresh API calls",
3650
- "name": "no-cache",
3651
- "allowNo": false,
3652
- "type": "boolean"
3653
- },
3654
- "verbose": {
3655
- "char": "v",
3656
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3657
- "env": "NOTION_CLI_VERBOSE",
3658
- "name": "verbose",
3659
- "allowNo": false,
3660
- "type": "boolean"
3661
- },
3662
- "minimal": {
3663
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3664
- "name": "minimal",
3665
- "allowNo": false,
3666
- "type": "boolean"
3667
- },
3668
- "markdown": {
3669
- "char": "m",
3670
- "description": "Output as markdown table (GitHub-flavored)",
3671
- "exclusive": [
3672
- "compact-json",
3673
- "pretty"
3674
- ],
3675
- "name": "markdown",
3676
- "allowNo": false,
3677
- "type": "boolean"
3678
- },
3679
- "compact-json": {
3680
- "char": "c",
3681
- "description": "Output as compact JSON (single-line, ideal for piping)",
3682
- "exclusive": [
3683
- "markdown",
3684
- "pretty"
3685
- ],
3686
- "name": "compact-json",
3687
- "allowNo": false,
3688
- "type": "boolean"
3689
- },
3690
- "pretty": {
3691
- "char": "P",
3692
- "description": "Output as pretty table with borders",
3693
- "exclusive": [
3694
- "markdown",
3695
- "compact-json"
3696
- ],
3697
- "name": "pretty",
3698
- "allowNo": false,
3699
- "type": "boolean"
3700
- },
3701
- "file-filter": {
3702
- "char": "F",
3703
- "description": "Load filter from JSON file",
3704
- "exclusive": [
3705
- "filter",
3706
- "search",
3707
- "rawFilter",
3708
- "fileFilter"
3709
- ],
3710
- "name": "file-filter",
3711
- "hasDynamicHelp": false,
3712
- "multiple": false,
3713
- "type": "option"
3714
- },
3715
- "search": {
3716
- "char": "s",
3717
- "description": "Simple text search (searches across title and common text properties)",
3718
- "exclusive": [
3719
- "filter",
3720
- "file-filter",
3721
- "rawFilter",
3722
- "fileFilter"
3723
- ],
3724
- "name": "search",
3592
+ "page-size": {
3593
+ "description": "Items per page (1-100, default: 100 for automation)",
3594
+ "name": "page-size",
3595
+ "default": 100,
3725
3596
  "hasDynamicHelp": false,
3726
3597
  "multiple": false,
3727
3598
  "type": "option"
3728
3599
  },
3729
- "select": {
3730
- "description": "Select specific properties to return (comma-separated). Reduces token usage by 60-80%.",
3731
- "name": "select",
3732
- "hasDynamicHelp": false,
3733
- "multiple": false,
3734
- "type": "option"
3600
+ "retry": {
3601
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
3602
+ "name": "retry",
3603
+ "allowNo": false,
3604
+ "type": "boolean"
3735
3605
  },
3736
- "rawFilter": {
3737
- "char": "a",
3738
- "description": "DEPRECATED: Use --filter instead. JSON stringified filter string",
3739
- "exclusive": [
3740
- "filter",
3741
- "search",
3742
- "file-filter",
3743
- "fileFilter"
3744
- ],
3745
- "hidden": true,
3746
- "name": "rawFilter",
3606
+ "timeout": {
3607
+ "description": "Request timeout in milliseconds",
3608
+ "name": "timeout",
3609
+ "default": 30000,
3747
3610
  "hasDynamicHelp": false,
3748
3611
  "multiple": false,
3749
3612
  "type": "option"
3750
3613
  },
3751
- "fileFilter": {
3752
- "description": "DEPRECATED: Use --file-filter instead. JSON filter file path",
3753
- "exclusive": [
3754
- "filter",
3755
- "search",
3756
- "file-filter",
3757
- "rawFilter"
3758
- ],
3759
- "hidden": true,
3760
- "name": "fileFilter",
3761
- "hasDynamicHelp": false,
3762
- "multiple": false,
3763
- "type": "option"
3614
+ "no-cache": {
3615
+ "description": "Bypass cache and force fresh API calls",
3616
+ "name": "no-cache",
3617
+ "allowNo": false,
3618
+ "type": "boolean"
3619
+ },
3620
+ "verbose": {
3621
+ "char": "v",
3622
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3623
+ "env": "NOTION_CLI_VERBOSE",
3624
+ "name": "verbose",
3625
+ "allowNo": false,
3626
+ "type": "boolean"
3627
+ },
3628
+ "minimal": {
3629
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3630
+ "name": "minimal",
3631
+ "allowNo": false,
3632
+ "type": "boolean"
3764
3633
  }
3765
3634
  },
3766
3635
  "hasDynamicHelp": false,
3767
3636
  "hiddenAliases": [],
3768
- "id": "db:query",
3637
+ "id": "db:update",
3769
3638
  "pluginAlias": "@catafal/notion-cli",
3770
3639
  "pluginName": "@catafal/notion-cli",
3771
3640
  "pluginType": "core",
@@ -3776,53 +3645,22 @@
3776
3645
  "dist",
3777
3646
  "commands",
3778
3647
  "db",
3779
- "query.js"
3648
+ "update.js"
3780
3649
  ]
3781
3650
  },
3782
- "db:retrieve": {
3651
+ "bookmark:list": {
3783
3652
  "aliases": [
3784
- "db:r",
3785
- "ds:retrieve",
3786
- "ds:r"
3653
+ "bm:ls"
3787
3654
  ],
3788
- "args": {
3789
- "database_id": {
3790
- "description": "Data source ID or URL (the ID of the table whose schema you want to retrieve)",
3791
- "name": "database_id",
3792
- "required": true
3793
- }
3794
- },
3795
- "description": "Retrieve a data source (table) schema and properties",
3655
+ "args": {},
3656
+ "description": "List all saved bookmarks",
3796
3657
  "examples": [
3797
3658
  {
3798
- "description": "Retrieve a data source with full schema (recommended for AI assistants)",
3799
- "command": "notion-cli db retrieve DATA_SOURCE_ID -r"
3800
- },
3801
- {
3802
- "description": "Retrieve a data source schema via data_source_id",
3803
- "command": "notion-cli db retrieve DATA_SOURCE_ID"
3804
- },
3805
- {
3806
- "description": "Retrieve a data source via URL",
3807
- "command": "notion-cli db retrieve https://notion.so/DATABASE_ID"
3808
- },
3809
- {
3810
- "description": "Retrieve a data source and output as markdown table",
3811
- "command": "notion-cli db retrieve DATA_SOURCE_ID --markdown"
3812
- },
3813
- {
3814
- "description": "Retrieve a data source and output as compact JSON",
3815
- "command": "notion-cli db retrieve DATA_SOURCE_ID --compact-json"
3659
+ "description": "List bookmarks",
3660
+ "command": "$ notion-cli bookmark list"
3816
3661
  }
3817
3662
  ],
3818
3663
  "flags": {
3819
- "raw": {
3820
- "char": "r",
3821
- "description": "output raw json (recommended for AI assistants - returns full schema)",
3822
- "name": "raw",
3823
- "allowNo": false,
3824
- "type": "boolean"
3825
- },
3826
3664
  "columns": {
3827
3665
  "description": "Only show provided columns (comma-separated)",
3828
3666
  "exclusive": [
@@ -3926,44 +3764,11 @@
3926
3764
  "name": "minimal",
3927
3765
  "allowNo": false,
3928
3766
  "type": "boolean"
3929
- },
3930
- "markdown": {
3931
- "char": "m",
3932
- "description": "Output as markdown table (GitHub-flavored)",
3933
- "exclusive": [
3934
- "compact-json",
3935
- "pretty"
3936
- ],
3937
- "name": "markdown",
3938
- "allowNo": false,
3939
- "type": "boolean"
3940
- },
3941
- "compact-json": {
3942
- "char": "c",
3943
- "description": "Output as compact JSON (single-line, ideal for piping)",
3944
- "exclusive": [
3945
- "markdown",
3946
- "pretty"
3947
- ],
3948
- "name": "compact-json",
3949
- "allowNo": false,
3950
- "type": "boolean"
3951
- },
3952
- "pretty": {
3953
- "char": "P",
3954
- "description": "Output as pretty table with borders",
3955
- "exclusive": [
3956
- "markdown",
3957
- "compact-json"
3958
- ],
3959
- "name": "pretty",
3960
- "allowNo": false,
3961
- "type": "boolean"
3962
3767
  }
3963
3768
  },
3964
3769
  "hasDynamicHelp": false,
3965
3770
  "hiddenAliases": [],
3966
- "id": "db:retrieve",
3771
+ "id": "bookmark:list",
3967
3772
  "pluginAlias": "@catafal/notion-cli",
3968
3773
  "pluginName": "@catafal/notion-cli",
3969
3774
  "pluginType": "core",
@@ -3973,114 +3778,82 @@
3973
3778
  "relativePath": [
3974
3779
  "dist",
3975
3780
  "commands",
3976
- "db",
3977
- "retrieve.js"
3781
+ "bookmark",
3782
+ "list.js"
3978
3783
  ]
3979
3784
  },
3980
- "db:schema": {
3785
+ "bookmark:remove": {
3981
3786
  "aliases": [
3982
- "db:s",
3983
- "ds:schema",
3984
- "ds:s"
3787
+ "bm:rm"
3985
3788
  ],
3986
3789
  "args": {
3987
- "data_source_id": {
3988
- "description": "Data source ID or URL (the table whose schema you want to extract)",
3989
- "name": "data_source_id",
3790
+ "name": {
3791
+ "description": "Bookmark name to remove",
3792
+ "name": "name",
3990
3793
  "required": true
3991
3794
  }
3992
3795
  },
3993
- "description": "Extract clean, AI-parseable schema from a Notion data source (table). This command is optimized for AI agents and automation - it returns property names, types, options (for select/multi-select), and configuration in an easy-to-parse format.",
3796
+ "description": "Remove a saved bookmark",
3994
3797
  "examples": [
3995
3798
  {
3996
- "description": "Get full schema in JSON format (recommended for AI agents)",
3997
- "command": "<%= config.bin %> db schema abc123def456 --output json"
3998
- },
3999
- {
4000
- "description": "Get schema with property payload examples (recommended for AI agents)",
4001
- "command": "<%= config.bin %> db schema abc123def456 --with-examples --json"
4002
- },
4003
- {
4004
- "description": "Get schema using database URL",
4005
- "command": "<%= config.bin %> db schema https://notion.so/DATABASE_ID --output json"
4006
- },
4007
- {
4008
- "description": "Get schema as formatted table",
4009
- "command": "<%= config.bin %> db schema abc123def456"
4010
- },
4011
- {
4012
- "description": "Get schema with examples in human-readable format",
4013
- "command": "<%= config.bin %> db schema abc123def456 --with-examples"
4014
- },
4015
- {
4016
- "description": "Get schema in YAML format",
4017
- "command": "<%= config.bin %> db schema abc123def456 --output yaml"
4018
- },
4019
- {
4020
- "description": "Get only specific properties",
4021
- "command": "<%= config.bin %> db schema abc123def456 --properties Name,Status,Tags --output json"
4022
- },
4023
- {
4024
- "description": "Get schema as markdown documentation",
4025
- "command": "<%= config.bin %> db schema abc123def456 --markdown"
4026
- },
4027
- {
4028
- "description": "Parse schema with jq (extract property names)",
4029
- "command": "<%= config.bin %> db schema abc123def456 --output json | jq '.data.properties[].name'"
4030
- },
4031
- {
4032
- "description": "Find all select/multi-select properties and their options",
4033
- "command": "<%= config.bin %> db schema abc123def456 --output json | jq '.data.properties[] | select(.options) | {name, options}'"
3799
+ "description": "Remove a bookmark",
3800
+ "command": "$ notion-cli bookmark remove inbox"
4034
3801
  }
4035
3802
  ],
4036
3803
  "flags": {
4037
- "output": {
4038
- "char": "o",
4039
- "description": "Output format",
4040
- "name": "output",
4041
- "default": "table",
3804
+ "json": {
3805
+ "char": "j",
3806
+ "description": "Output as JSON (recommended for automation)",
3807
+ "name": "json",
3808
+ "allowNo": false,
3809
+ "type": "boolean"
3810
+ },
3811
+ "page-size": {
3812
+ "description": "Items per page (1-100, default: 100 for automation)",
3813
+ "name": "page-size",
3814
+ "default": 100,
4042
3815
  "hasDynamicHelp": false,
4043
3816
  "multiple": false,
4044
- "options": [
4045
- "json",
4046
- "yaml",
4047
- "table"
4048
- ],
4049
3817
  "type": "option"
4050
3818
  },
4051
- "properties": {
4052
- "char": "p",
4053
- "description": "Comma-separated list of properties to include (default: all)",
4054
- "name": "properties",
3819
+ "retry": {
3820
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
3821
+ "name": "retry",
3822
+ "allowNo": false,
3823
+ "type": "boolean"
3824
+ },
3825
+ "timeout": {
3826
+ "description": "Request timeout in milliseconds",
3827
+ "name": "timeout",
3828
+ "default": 30000,
4055
3829
  "hasDynamicHelp": false,
4056
3830
  "multiple": false,
4057
3831
  "type": "option"
4058
3832
  },
4059
- "markdown": {
4060
- "char": "m",
4061
- "description": "Output as markdown documentation",
4062
- "name": "markdown",
3833
+ "no-cache": {
3834
+ "description": "Bypass cache and force fresh API calls",
3835
+ "name": "no-cache",
4063
3836
  "allowNo": false,
4064
3837
  "type": "boolean"
4065
3838
  },
4066
- "json": {
4067
- "char": "j",
4068
- "description": "Output as JSON (shorthand for --output json)",
4069
- "name": "json",
3839
+ "verbose": {
3840
+ "char": "v",
3841
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
3842
+ "env": "NOTION_CLI_VERBOSE",
3843
+ "name": "verbose",
4070
3844
  "allowNo": false,
4071
- "type": "boolean"
4072
- },
4073
- "with-examples": {
4074
- "char": "e",
4075
- "description": "Include property payload examples for create/update operations",
4076
- "name": "with-examples",
3845
+ "type": "boolean"
3846
+ },
3847
+ "minimal": {
3848
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
3849
+ "name": "minimal",
4077
3850
  "allowNo": false,
4078
3851
  "type": "boolean"
4079
3852
  }
4080
3853
  },
4081
3854
  "hasDynamicHelp": false,
4082
3855
  "hiddenAliases": [],
4083
- "id": "db:schema",
3856
+ "id": "bookmark:remove",
4084
3857
  "pluginAlias": "@catafal/notion-cli",
4085
3858
  "pluginName": "@catafal/notion-cli",
4086
3859
  "pluginType": "core",
@@ -4090,107 +3863,54 @@
4090
3863
  "relativePath": [
4091
3864
  "dist",
4092
3865
  "commands",
4093
- "db",
4094
- "schema.js"
3866
+ "bookmark",
3867
+ "remove.js"
4095
3868
  ]
4096
3869
  },
4097
- "db:update": {
3870
+ "bookmark:set": {
4098
3871
  "aliases": [
4099
- "db:u",
4100
- "ds:update",
4101
- "ds:u"
3872
+ "bm:set"
4102
3873
  ],
4103
3874
  "args": {
4104
- "database_id": {
4105
- "description": "Data source ID or URL (the ID of the table you want to update)",
4106
- "name": "database_id",
3875
+ "name": {
3876
+ "description": "Bookmark name (e.g. \"inbox\", \"tasks\")",
3877
+ "name": "name",
3878
+ "required": true
3879
+ },
3880
+ "target": {
3881
+ "description": "Notion ID, URL, or database name",
3882
+ "name": "target",
4107
3883
  "required": true
4108
3884
  }
4109
3885
  },
4110
- "description": "Update a data source (table) title and properties",
3886
+ "description": "Save a named shortcut to a Notion page or database",
4111
3887
  "examples": [
4112
3888
  {
4113
- "description": "Update a data source with a specific data_source_id and title",
4114
- "command": "$ notion-cli db update DATA_SOURCE_ID -t 'My Data Source'"
4115
- },
4116
- {
4117
- "description": "Update a data source via URL",
4118
- "command": "$ notion-cli db update https://notion.so/DATABASE_ID -t 'My Data Source'"
3889
+ "description": "Bookmark a database as \"inbox\" and set it as default",
3890
+ "command": "$ notion-cli bookmark set inbox DB_ID_OR_URL --default"
4119
3891
  },
4120
3892
  {
4121
- "description": "Update a data source with a specific data_source_id and output raw json",
4122
- "command": "$ notion-cli db update DATA_SOURCE_ID -t 'My Table' -r"
3893
+ "description": "Bookmark a page",
3894
+ "command": "$ notion-cli bookmark set notes PAGE_URL --type page"
4123
3895
  }
4124
3896
  ],
4125
3897
  "flags": {
4126
- "title": {
3898
+ "type": {
4127
3899
  "char": "t",
4128
- "description": "New database title",
4129
- "name": "title",
4130
- "required": true,
3900
+ "description": "Resource type",
3901
+ "name": "type",
3902
+ "default": "database",
4131
3903
  "hasDynamicHelp": false,
4132
3904
  "multiple": false,
4133
- "type": "option"
4134
- },
4135
- "raw": {
4136
- "char": "r",
4137
- "description": "output raw json",
4138
- "name": "raw",
4139
- "allowNo": false,
4140
- "type": "boolean"
4141
- },
4142
- "columns": {
4143
- "description": "Only show provided columns (comma-separated)",
4144
- "exclusive": [
4145
- "extended"
3905
+ "options": [
3906
+ "database",
3907
+ "page"
4146
3908
  ],
4147
- "name": "columns",
4148
- "hasDynamicHelp": false,
4149
- "multiple": false,
4150
- "type": "option"
4151
- },
4152
- "sort": {
4153
- "description": "Property to sort by (prepend with - for descending)",
4154
- "name": "sort",
4155
- "hasDynamicHelp": false,
4156
- "multiple": false,
4157
- "type": "option"
4158
- },
4159
- "filter": {
4160
- "description": "Filter property by substring match",
4161
- "name": "filter",
4162
- "hasDynamicHelp": false,
4163
- "multiple": false,
4164
3909
  "type": "option"
4165
3910
  },
4166
- "csv": {
4167
- "description": "Output in CSV format",
4168
- "exclusive": [
4169
- "no-truncate"
4170
- ],
4171
- "name": "csv",
4172
- "allowNo": false,
4173
- "type": "boolean"
4174
- },
4175
- "extended": {
4176
- "char": "x",
4177
- "description": "Show extra columns",
4178
- "name": "extended",
4179
- "allowNo": false,
4180
- "type": "boolean"
4181
- },
4182
- "no-truncate": {
4183
- "description": "Do not truncate output to fit screen",
4184
- "exclusive": [
4185
- "csv"
4186
- ],
4187
- "name": "no-truncate",
4188
- "allowNo": false,
4189
- "type": "boolean"
4190
- },
4191
- "no-header": {
4192
- "description": "Hide table header from output",
4193
- "name": "no-header",
3911
+ "default": {
3912
+ "description": "Also set as the default bookmark (used by `quick` command)",
3913
+ "name": "default",
4194
3914
  "allowNo": false,
4195
3915
  "type": "boolean"
4196
3916
  },
@@ -4246,7 +3966,7 @@
4246
3966
  },
4247
3967
  "hasDynamicHelp": false,
4248
3968
  "hiddenAliases": [],
4249
- "id": "db:update",
3969
+ "id": "bookmark:set",
4250
3970
  "pluginAlias": "@catafal/notion-cli",
4251
3971
  "pluginName": "@catafal/notion-cli",
4252
3972
  "pluginType": "core",
@@ -4256,93 +3976,130 @@
4256
3976
  "relativePath": [
4257
3977
  "dist",
4258
3978
  "commands",
4259
- "db",
4260
- "update.js"
3979
+ "bookmark",
3980
+ "set.js"
4261
3981
  ]
4262
3982
  },
4263
- "user:list": {
3983
+ "config:set-token": {
4264
3984
  "aliases": [
4265
- "user:l"
3985
+ "config:token"
4266
3986
  ],
4267
- "args": {},
4268
- "description": "List all users",
3987
+ "args": {
3988
+ "token": {
3989
+ "description": "Notion integration token (starts with secret_ or ntn_)",
3990
+ "name": "token",
3991
+ "required": false
3992
+ }
3993
+ },
3994
+ "description": "Set NOTION_TOKEN in your shell configuration file",
4269
3995
  "examples": [
4270
3996
  {
4271
- "description": "List all users",
4272
- "command": "$ notion-cli user list"
3997
+ "description": "Set Notion token interactively",
3998
+ "command": "notion-cli config set-token"
4273
3999
  },
4274
4000
  {
4275
- "description": "List all users and output raw json",
4276
- "command": "$ notion-cli user list -r"
4001
+ "description": "Set Notion token directly",
4002
+ "command": "notion-cli config set-token ntn_abc123..."
4277
4003
  },
4278
4004
  {
4279
- "description": "List all users and output JSON for automation",
4280
- "command": "$ notion-cli user list --json"
4005
+ "description": "Set token with JSON output",
4006
+ "command": "notion-cli config set-token ntn_abc123... --json"
4281
4007
  }
4282
4008
  ],
4283
4009
  "flags": {
4284
- "raw": {
4285
- "char": "r",
4286
- "description": "output raw json",
4287
- "name": "raw",
4010
+ "json": {
4011
+ "char": "j",
4012
+ "description": "Output as JSON (recommended for automation)",
4013
+ "name": "json",
4288
4014
  "allowNo": false,
4289
4015
  "type": "boolean"
4290
4016
  },
4291
- "columns": {
4292
- "description": "Only show provided columns (comma-separated)",
4293
- "exclusive": [
4294
- "extended"
4295
- ],
4296
- "name": "columns",
4017
+ "page-size": {
4018
+ "description": "Items per page (1-100, default: 100 for automation)",
4019
+ "name": "page-size",
4020
+ "default": 100,
4297
4021
  "hasDynamicHelp": false,
4298
4022
  "multiple": false,
4299
4023
  "type": "option"
4300
4024
  },
4301
- "sort": {
4302
- "description": "Property to sort by (prepend with - for descending)",
4303
- "name": "sort",
4304
- "hasDynamicHelp": false,
4305
- "multiple": false,
4306
- "type": "option"
4025
+ "retry": {
4026
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
4027
+ "name": "retry",
4028
+ "allowNo": false,
4029
+ "type": "boolean"
4307
4030
  },
4308
- "filter": {
4309
- "description": "Filter property by substring match",
4310
- "name": "filter",
4031
+ "timeout": {
4032
+ "description": "Request timeout in milliseconds",
4033
+ "name": "timeout",
4034
+ "default": 30000,
4311
4035
  "hasDynamicHelp": false,
4312
4036
  "multiple": false,
4313
4037
  "type": "option"
4314
4038
  },
4315
- "csv": {
4316
- "description": "Output in CSV format",
4317
- "exclusive": [
4318
- "no-truncate"
4319
- ],
4320
- "name": "csv",
4039
+ "no-cache": {
4040
+ "description": "Bypass cache and force fresh API calls",
4041
+ "name": "no-cache",
4321
4042
  "allowNo": false,
4322
4043
  "type": "boolean"
4323
4044
  },
4324
- "extended": {
4325
- "char": "x",
4326
- "description": "Show extra columns",
4327
- "name": "extended",
4045
+ "verbose": {
4046
+ "char": "v",
4047
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
4048
+ "env": "NOTION_CLI_VERBOSE",
4049
+ "name": "verbose",
4328
4050
  "allowNo": false,
4329
4051
  "type": "boolean"
4330
4052
  },
4331
- "no-truncate": {
4332
- "description": "Do not truncate output to fit screen",
4333
- "exclusive": [
4334
- "csv"
4335
- ],
4336
- "name": "no-truncate",
4053
+ "minimal": {
4054
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
4055
+ "name": "minimal",
4337
4056
  "allowNo": false,
4338
4057
  "type": "boolean"
4058
+ }
4059
+ },
4060
+ "hasDynamicHelp": false,
4061
+ "hiddenAliases": [],
4062
+ "id": "config:set-token",
4063
+ "pluginAlias": "@catafal/notion-cli",
4064
+ "pluginName": "@catafal/notion-cli",
4065
+ "pluginType": "core",
4066
+ "strict": true,
4067
+ "enableJsonFlag": false,
4068
+ "isESM": false,
4069
+ "relativePath": [
4070
+ "dist",
4071
+ "commands",
4072
+ "config",
4073
+ "set-token.js"
4074
+ ]
4075
+ },
4076
+ "daily": {
4077
+ "aliases": [
4078
+ "d"
4079
+ ],
4080
+ "args": {
4081
+ "content": {
4082
+ "description": "Text to add to today's entry (appended if entry already exists)",
4083
+ "name": "content",
4084
+ "required": false
4085
+ }
4086
+ },
4087
+ "description": "Create or open today's daily journal entry",
4088
+ "examples": [
4089
+ {
4090
+ "description": "Create today's entry",
4091
+ "command": "$ notion-cli daily"
4339
4092
  },
4340
- "no-header": {
4341
- "description": "Hide table header from output",
4342
- "name": "no-header",
4343
- "allowNo": false,
4344
- "type": "boolean"
4093
+ {
4094
+ "description": "Create entry with body content",
4095
+ "command": "$ notion-cli daily \"Had a productive standup\""
4345
4096
  },
4097
+ {
4098
+ "description": "First-time setup (see `daily setup --help`)",
4099
+ "command": "$ notion-cli daily setup DB_ID"
4100
+ }
4101
+ ],
4102
+ "flags": {
4346
4103
  "json": {
4347
4104
  "char": "j",
4348
4105
  "description": "Output as JSON (recommended for automation)",
@@ -4395,7 +4152,7 @@
4395
4152
  },
4396
4153
  "hasDynamicHelp": false,
4397
4154
  "hiddenAliases": [],
4398
- "id": "user:list",
4155
+ "id": "daily",
4399
4156
  "pluginAlias": "@catafal/notion-cli",
4400
4157
  "pluginName": "@catafal/notion-cli",
4401
4158
  "pluginType": "core",
@@ -4405,97 +4162,38 @@
4405
4162
  "relativePath": [
4406
4163
  "dist",
4407
4164
  "commands",
4408
- "user",
4409
- "list.js"
4165
+ "daily",
4166
+ "index.js"
4410
4167
  ]
4411
4168
  },
4412
- "user:retrieve": {
4413
- "aliases": [
4414
- "user:r"
4415
- ],
4169
+ "daily:setup": {
4170
+ "aliases": [],
4416
4171
  "args": {
4417
- "user_id": {
4418
- "name": "user_id"
4172
+ "target": {
4173
+ "description": "Existing database ID or URL (manual mode)",
4174
+ "name": "target",
4175
+ "required": false
4419
4176
  }
4420
4177
  },
4421
- "description": "Retrieve a user",
4178
+ "description": "Configure the daily journal command",
4422
4179
  "examples": [
4423
4180
  {
4424
- "description": "Retrieve a user",
4425
- "command": "$ notion-cli user retrieve USER_ID"
4426
- },
4427
- {
4428
- "description": "Retrieve a user and output raw json",
4429
- "command": "$ notion-cli user retrieve USER_ID -r"
4181
+ "description": "Point to an existing database (manual)",
4182
+ "command": "$ notion-cli daily setup DB_ID_OR_URL"
4430
4183
  },
4431
4184
  {
4432
- "description": "Retrieve a user and output JSON for automation",
4433
- "command": "$ notion-cli user retrieve USER_ID --json"
4185
+ "description": "Auto-create a daily journal database",
4186
+ "command": "$ notion-cli daily setup --auto PAGE_ID_OR_URL"
4434
4187
  }
4435
4188
  ],
4436
4189
  "flags": {
4437
- "raw": {
4438
- "char": "r",
4439
- "description": "output raw json",
4440
- "name": "raw",
4441
- "allowNo": false,
4442
- "type": "boolean"
4443
- },
4444
- "columns": {
4445
- "description": "Only show provided columns (comma-separated)",
4446
- "exclusive": [
4447
- "extended"
4448
- ],
4449
- "name": "columns",
4450
- "hasDynamicHelp": false,
4451
- "multiple": false,
4452
- "type": "option"
4453
- },
4454
- "sort": {
4455
- "description": "Property to sort by (prepend with - for descending)",
4456
- "name": "sort",
4457
- "hasDynamicHelp": false,
4458
- "multiple": false,
4459
- "type": "option"
4460
- },
4461
- "filter": {
4462
- "description": "Filter property by substring match",
4463
- "name": "filter",
4190
+ "auto": {
4191
+ "description": "Auto-create database under this parent page (pass page ID or URL)",
4192
+ "name": "auto",
4464
4193
  "hasDynamicHelp": false,
4465
4194
  "multiple": false,
4466
4195
  "type": "option"
4467
4196
  },
4468
- "csv": {
4469
- "description": "Output in CSV format",
4470
- "exclusive": [
4471
- "no-truncate"
4472
- ],
4473
- "name": "csv",
4474
- "allowNo": false,
4475
- "type": "boolean"
4476
- },
4477
- "extended": {
4478
- "char": "x",
4479
- "description": "Show extra columns",
4480
- "name": "extended",
4481
- "allowNo": false,
4482
- "type": "boolean"
4483
- },
4484
- "no-truncate": {
4485
- "description": "Do not truncate output to fit screen",
4486
- "exclusive": [
4487
- "csv"
4488
- ],
4489
- "name": "no-truncate",
4490
- "allowNo": false,
4491
- "type": "boolean"
4492
- },
4493
- "no-header": {
4494
- "description": "Hide table header from output",
4495
- "name": "no-header",
4496
- "allowNo": false,
4497
- "type": "boolean"
4498
- },
4499
4197
  "json": {
4500
4198
  "char": "j",
4501
4199
  "description": "Output as JSON (recommended for automation)",
@@ -4548,7 +4246,7 @@
4548
4246
  },
4549
4247
  "hasDynamicHelp": false,
4550
4248
  "hiddenAliases": [],
4551
- "id": "user:retrieve",
4249
+ "id": "daily:setup",
4552
4250
  "pluginAlias": "@catafal/notion-cli",
4553
4251
  "pluginName": "@catafal/notion-cli",
4554
4252
  "pluginType": "core",
@@ -4558,29 +4256,171 @@
4558
4256
  "relativePath": [
4559
4257
  "dist",
4560
4258
  "commands",
4561
- "user",
4562
- "retrieve.js"
4259
+ "daily",
4260
+ "setup.js"
4563
4261
  ]
4564
4262
  },
4565
- "template:get": {
4263
+ "page:create": {
4566
4264
  "aliases": [
4567
- "tpl:get"
4265
+ "page:c"
4568
4266
  ],
4569
- "args": {
4570
- "name": {
4571
- "description": "Template name",
4572
- "name": "name",
4573
- "required": true
4574
- }
4575
- },
4576
- "description": "View a saved template",
4267
+ "args": {},
4268
+ "description": "Create a page",
4577
4269
  "examples": [
4578
4270
  {
4579
- "description": "View a template",
4580
- "command": "$ notion-cli template get \"meeting\""
4271
+ "description": "Create a page via interactive mode",
4272
+ "command": "$ notion-cli page create"
4273
+ },
4274
+ {
4275
+ "description": "Create a page with a specific parent_page_id",
4276
+ "command": "$ notion-cli page create -p PARENT_PAGE_ID"
4277
+ },
4278
+ {
4279
+ "description": "Create a page with a parent page URL",
4280
+ "command": "$ notion-cli page create -p https://notion.so/PARENT_PAGE_ID"
4281
+ },
4282
+ {
4283
+ "description": "Create a page with a specific parent_db_id",
4284
+ "command": "$ notion-cli page create -d PARENT_DB_ID"
4285
+ },
4286
+ {
4287
+ "description": "Create a page with simple properties (recommended for AI agents)",
4288
+ "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"My Task\", \"Status\": \"In Progress\", \"Due Date\": \"2025-12-31\"}'"
4289
+ },
4290
+ {
4291
+ "description": "Create a page with simple properties using relative dates",
4292
+ "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"Review\", \"Due Date\": \"tomorrow\", \"Priority\": \"High\"}'"
4293
+ },
4294
+ {
4295
+ "description": "Create a page with simple properties and multi-select",
4296
+ "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"Bug Fix\", \"Tags\": [\"urgent\", \"bug\"], \"Status\": \"Done\"}'"
4297
+ },
4298
+ {
4299
+ "description": "Create a page with a specific source markdown file and parent_page_id",
4300
+ "command": "$ notion-cli page create -f ./path/to/source.md -p PARENT_PAGE_ID"
4301
+ },
4302
+ {
4303
+ "description": "Create a page with a specific source markdown file and parent_db_id",
4304
+ "command": "$ notion-cli page create -f ./path/to/source.md -d PARENT_DB_ID"
4305
+ },
4306
+ {
4307
+ "description": "Create a page with a specific source markdown file and output raw json with parent_page_id",
4308
+ "command": "$ notion-cli page create -f ./path/to/source.md -p PARENT_PAGE_ID -r"
4309
+ },
4310
+ {
4311
+ "description": "Create a page and output JSON for automation",
4312
+ "command": "$ notion-cli page create -p PARENT_PAGE_ID --json"
4581
4313
  }
4582
4314
  ],
4583
4315
  "flags": {
4316
+ "parent_page_id": {
4317
+ "char": "p",
4318
+ "description": "Parent page ID or URL (to create a sub-page)",
4319
+ "name": "parent_page_id",
4320
+ "hasDynamicHelp": false,
4321
+ "multiple": false,
4322
+ "type": "option"
4323
+ },
4324
+ "parent_data_source_id": {
4325
+ "char": "d",
4326
+ "description": "Parent data source ID or URL (to create a page in a table)",
4327
+ "name": "parent_data_source_id",
4328
+ "hasDynamicHelp": false,
4329
+ "multiple": false,
4330
+ "type": "option"
4331
+ },
4332
+ "file_path": {
4333
+ "char": "f",
4334
+ "description": "Path to a source markdown file",
4335
+ "name": "file_path",
4336
+ "hasDynamicHelp": false,
4337
+ "multiple": false,
4338
+ "type": "option"
4339
+ },
4340
+ "title_property": {
4341
+ "char": "t",
4342
+ "description": "Title property name (auto-detected: \"title\" for sub-pages, \"Name\" for databases)",
4343
+ "name": "title_property",
4344
+ "hasDynamicHelp": false,
4345
+ "multiple": false,
4346
+ "type": "option"
4347
+ },
4348
+ "properties": {
4349
+ "description": "Page properties as JSON string",
4350
+ "name": "properties",
4351
+ "hasDynamicHelp": false,
4352
+ "multiple": false,
4353
+ "type": "option"
4354
+ },
4355
+ "simple-properties": {
4356
+ "char": "S",
4357
+ "description": "Use simplified property format (flat key-value pairs, recommended for AI agents)",
4358
+ "name": "simple-properties",
4359
+ "allowNo": false,
4360
+ "type": "boolean"
4361
+ },
4362
+ "raw": {
4363
+ "char": "r",
4364
+ "description": "output raw json",
4365
+ "name": "raw",
4366
+ "allowNo": false,
4367
+ "type": "boolean"
4368
+ },
4369
+ "columns": {
4370
+ "description": "Only show provided columns (comma-separated)",
4371
+ "exclusive": [
4372
+ "extended"
4373
+ ],
4374
+ "name": "columns",
4375
+ "hasDynamicHelp": false,
4376
+ "multiple": false,
4377
+ "type": "option"
4378
+ },
4379
+ "sort": {
4380
+ "description": "Property to sort by (prepend with - for descending)",
4381
+ "name": "sort",
4382
+ "hasDynamicHelp": false,
4383
+ "multiple": false,
4384
+ "type": "option"
4385
+ },
4386
+ "filter": {
4387
+ "description": "Filter property by substring match",
4388
+ "name": "filter",
4389
+ "hasDynamicHelp": false,
4390
+ "multiple": false,
4391
+ "type": "option"
4392
+ },
4393
+ "csv": {
4394
+ "description": "Output in CSV format",
4395
+ "exclusive": [
4396
+ "no-truncate"
4397
+ ],
4398
+ "name": "csv",
4399
+ "allowNo": false,
4400
+ "type": "boolean"
4401
+ },
4402
+ "extended": {
4403
+ "char": "x",
4404
+ "description": "Show extra columns",
4405
+ "name": "extended",
4406
+ "allowNo": false,
4407
+ "type": "boolean"
4408
+ },
4409
+ "no-truncate": {
4410
+ "description": "Do not truncate output to fit screen",
4411
+ "exclusive": [
4412
+ "csv"
4413
+ ],
4414
+ "name": "no-truncate",
4415
+ "allowNo": false,
4416
+ "type": "boolean"
4417
+ },
4418
+ "no-header": {
4419
+ "description": "Hide table header from output",
4420
+ "name": "no-header",
4421
+ "allowNo": false,
4422
+ "type": "boolean"
4423
+ },
4584
4424
  "json": {
4585
4425
  "char": "j",
4586
4426
  "description": "Output as JSON (recommended for automation)",
@@ -4633,7 +4473,7 @@
4633
4473
  },
4634
4474
  "hasDynamicHelp": false,
4635
4475
  "hiddenAliases": [],
4636
- "id": "template:get",
4476
+ "id": "page:create",
4637
4477
  "pluginAlias": "@catafal/notion-cli",
4638
4478
  "pluginName": "@catafal/notion-cli",
4639
4479
  "pluginType": "core",
@@ -4643,23 +4483,44 @@
4643
4483
  "relativePath": [
4644
4484
  "dist",
4645
4485
  "commands",
4646
- "template",
4647
- "get.js"
4486
+ "page",
4487
+ "create.js"
4648
4488
  ]
4649
4489
  },
4650
- "template:list": {
4490
+ "page:delete": {
4651
4491
  "aliases": [
4652
- "tpl:ls"
4492
+ "page:d"
4653
4493
  ],
4654
- "args": {},
4655
- "description": "List all saved templates",
4494
+ "args": {
4495
+ "page_id": {
4496
+ "description": "Page ID or full Notion URL",
4497
+ "name": "page_id",
4498
+ "required": true
4499
+ }
4500
+ },
4501
+ "description": "Archive (soft-delete) a Notion page",
4656
4502
  "examples": [
4657
4503
  {
4658
- "description": "List all templates",
4659
- "command": "$ notion-cli template list"
4504
+ "description": "Delete (archive) a page by ID",
4505
+ "command": "$ notion-cli page delete PAGE_ID"
4506
+ },
4507
+ {
4508
+ "description": "Delete (archive) a page by URL",
4509
+ "command": "$ notion-cli page delete https://notion.so/PAGE_ID"
4510
+ },
4511
+ {
4512
+ "description": "Delete and output JSON for automation",
4513
+ "command": "$ notion-cli page delete PAGE_ID --json"
4660
4514
  }
4661
4515
  ],
4662
4516
  "flags": {
4517
+ "raw": {
4518
+ "char": "r",
4519
+ "description": "Output raw JSON",
4520
+ "name": "raw",
4521
+ "allowNo": false,
4522
+ "type": "boolean"
4523
+ },
4663
4524
  "columns": {
4664
4525
  "description": "Only show provided columns (comma-separated)",
4665
4526
  "exclusive": [
@@ -4767,7 +4628,7 @@
4767
4628
  },
4768
4629
  "hasDynamicHelp": false,
4769
4630
  "hiddenAliases": [],
4770
- "id": "template:list",
4631
+ "id": "page:delete",
4771
4632
  "pluginAlias": "@catafal/notion-cli",
4772
4633
  "pluginName": "@catafal/notion-cli",
4773
4634
  "pluginType": "core",
@@ -4777,29 +4638,53 @@
4777
4638
  "relativePath": [
4778
4639
  "dist",
4779
4640
  "commands",
4780
- "template",
4781
- "list.js"
4641
+ "page",
4642
+ "delete.js"
4782
4643
  ]
4783
4644
  },
4784
- "template:remove": {
4645
+ "page:export": {
4785
4646
  "aliases": [
4786
- "tpl:rm"
4647
+ "page:e"
4787
4648
  ],
4788
4649
  "args": {
4789
- "name": {
4790
- "description": "Template name to remove",
4791
- "name": "name",
4650
+ "page_id": {
4651
+ "description": "Page ID or full Notion URL",
4652
+ "name": "page_id",
4792
4653
  "required": true
4793
4654
  }
4794
4655
  },
4795
- "description": "Remove a saved template",
4656
+ "description": "Export a Notion page to markdown or JSON",
4796
4657
  "examples": [
4797
4658
  {
4798
- "description": "Remove a template",
4799
- "command": "$ notion-cli template remove \"meeting\""
4659
+ "description": "Export page as markdown to stdout",
4660
+ "command": "$ notion-cli page export PAGE_ID"
4661
+ },
4662
+ {
4663
+ "description": "Export page as markdown to a file",
4664
+ "command": "$ notion-cli page export PAGE_ID -o notes.md"
4665
+ },
4666
+ {
4667
+ "description": "Export page as JSON to a file",
4668
+ "command": "$ notion-cli page export PAGE_ID --json -o page.json"
4669
+ },
4670
+ {
4671
+ "description": "Export using a Notion URL",
4672
+ "command": "$ notion-cli page export \"https://notion.so/My-Page-abc123\" -o notes.md"
4673
+ },
4674
+ {
4675
+ "description": "Pipe markdown to another command",
4676
+ "command": "$ notion-cli page export PAGE_ID | head -20"
4800
4677
  }
4801
4678
  ],
4802
4679
  "flags": {
4680
+ "output": {
4681
+ "char": "o",
4682
+ "description": "File path to write (omit for stdout)",
4683
+ "name": "output",
4684
+ "hasDynamicHelp": false,
4685
+ "multiple": false,
4686
+ "type": "option"
4687
+ },
4803
4688
  "json": {
4804
4689
  "char": "j",
4805
4690
  "description": "Output as JSON (recommended for automation)",
@@ -4852,7 +4737,7 @@
4852
4737
  },
4853
4738
  "hasDynamicHelp": false,
4854
4739
  "hiddenAliases": [],
4855
- "id": "template:remove",
4740
+ "id": "page:export",
4856
4741
  "pluginAlias": "@catafal/notion-cli",
4857
4742
  "pluginName": "@catafal/notion-cli",
4858
4743
  "pluginType": "core",
@@ -4862,160 +4747,195 @@
4862
4747
  "relativePath": [
4863
4748
  "dist",
4864
4749
  "commands",
4865
- "template",
4866
- "remove.js"
4750
+ "page",
4751
+ "export.js"
4867
4752
  ]
4868
4753
  },
4869
- "template:save": {
4754
+ "page:retrieve": {
4870
4755
  "aliases": [
4871
- "tpl:save"
4756
+ "page:r"
4872
4757
  ],
4873
4758
  "args": {
4874
- "name": {
4875
- "description": "Template name (e.g. \"meeting\", \"task\")",
4876
- "name": "name",
4759
+ "page_id": {
4760
+ "description": "Page ID or full Notion URL (e.g., https://notion.so/...)",
4761
+ "name": "page_id",
4877
4762
  "required": true
4878
4763
  }
4879
4764
  },
4880
- "description": "Save a reusable page template",
4765
+ "description": "Retrieve a page",
4881
4766
  "examples": [
4882
4767
  {
4883
- "description": "Save a template with properties",
4884
- "command": "$ notion-cli template save \"meeting\" --properties '{\"Status\": \"To Do\", \"Type\": \"Meeting\"}'"
4768
+ "description": "Retrieve a page with full data (recommended for AI assistants)",
4769
+ "command": "$ notion-cli page retrieve PAGE_ID -r"
4885
4770
  },
4886
4771
  {
4887
- "description": "Save with properties, body content, and icon",
4888
- "command": "$ notion-cli template save \"standup\" --properties '{\"Status\": \"In Progress\"}' --content \"# Standup\\n\\n## Done\\n\\n## Doing\\n\\n## Blockers\" --icon \"🧑‍💻\""
4772
+ "description": "Fast structure overview (90% faster than full fetch)",
4773
+ "command": "$ notion-cli page retrieve PAGE_ID --map"
4774
+ },
4775
+ {
4776
+ "description": "Fast structure overview with compact JSON",
4777
+ "command": "$ notion-cli page retrieve PAGE_ID --map --compact-json"
4778
+ },
4779
+ {
4780
+ "description": "Retrieve entire page tree with all nested content (35% token reduction)",
4781
+ "command": "$ notion-cli page retrieve PAGE_ID --recursive --compact-json"
4782
+ },
4783
+ {
4784
+ "description": "Retrieve page tree with custom depth limit",
4785
+ "command": "$ notion-cli page retrieve PAGE_ID -R --max-depth 5 --json"
4786
+ },
4787
+ {
4788
+ "description": "Retrieve a page and output table",
4789
+ "command": "$ notion-cli page retrieve PAGE_ID"
4790
+ },
4791
+ {
4792
+ "description": "Retrieve a page via URL",
4793
+ "command": "$ notion-cli page retrieve https://notion.so/PAGE_ID"
4794
+ },
4795
+ {
4796
+ "description": "Retrieve a page and output raw json",
4797
+ "command": "$ notion-cli page retrieve PAGE_ID -r"
4798
+ },
4799
+ {
4800
+ "description": "Retrieve a page and output markdown",
4801
+ "command": "$ notion-cli page retrieve PAGE_ID -m"
4802
+ },
4803
+ {
4804
+ "description": "Retrieve a page metadata and output as markdown table",
4805
+ "command": "$ notion-cli page retrieve PAGE_ID --markdown"
4806
+ },
4807
+ {
4808
+ "description": "Retrieve a page metadata and output as compact JSON",
4809
+ "command": "$ notion-cli page retrieve PAGE_ID --compact-json"
4810
+ },
4811
+ {
4812
+ "description": "Retrieve a page and output JSON for automation",
4813
+ "command": "$ notion-cli page retrieve PAGE_ID --json"
4889
4814
  }
4890
4815
  ],
4891
4816
  "flags": {
4892
- "properties": {
4893
- "char": "p",
4894
- "description": "Properties as JSON (simple format, e.g. '{\"Status\": \"To Do\"}')",
4895
- "name": "properties",
4896
- "hasDynamicHelp": false,
4897
- "multiple": false,
4898
- "type": "option"
4817
+ "raw": {
4818
+ "char": "r",
4819
+ "description": "output raw json (recommended for AI assistants - returns all fields)",
4820
+ "name": "raw",
4821
+ "allowNo": false,
4822
+ "type": "boolean"
4899
4823
  },
4900
- "content": {
4901
- "char": "c",
4902
- "description": "Markdown body content for the page",
4903
- "name": "content",
4824
+ "markdown": {
4825
+ "char": "m",
4826
+ "description": "Output as markdown table (GitHub-flavored)",
4827
+ "exclusive": [
4828
+ "compact-json",
4829
+ "pretty"
4830
+ ],
4831
+ "name": "markdown",
4832
+ "allowNo": false,
4833
+ "type": "boolean"
4834
+ },
4835
+ "map": {
4836
+ "description": "fast structure discovery (returns minimal info: titles, types, IDs)",
4837
+ "exclusive": [
4838
+ "raw",
4839
+ "markdown"
4840
+ ],
4841
+ "name": "map",
4842
+ "allowNo": false,
4843
+ "type": "boolean"
4844
+ },
4845
+ "recursive": {
4846
+ "char": "R",
4847
+ "description": "recursively fetch all blocks and nested pages (reduces API calls)",
4848
+ "name": "recursive",
4849
+ "allowNo": false,
4850
+ "type": "boolean"
4851
+ },
4852
+ "max-depth": {
4853
+ "dependsOn": [
4854
+ "recursive"
4855
+ ],
4856
+ "description": "maximum recursion depth for --recursive (default: 3)",
4857
+ "name": "max-depth",
4858
+ "default": 3,
4904
4859
  "hasDynamicHelp": false,
4905
4860
  "multiple": false,
4906
4861
  "type": "option"
4907
4862
  },
4908
- "icon": {
4909
- "description": "Emoji icon (e.g. \"📋\")",
4910
- "name": "icon",
4863
+ "columns": {
4864
+ "description": "Only show provided columns (comma-separated)",
4865
+ "exclusive": [
4866
+ "extended"
4867
+ ],
4868
+ "name": "columns",
4911
4869
  "hasDynamicHelp": false,
4912
4870
  "multiple": false,
4913
4871
  "type": "option"
4914
4872
  },
4915
- "json": {
4916
- "char": "j",
4917
- "description": "Output as JSON (recommended for automation)",
4918
- "name": "json",
4919
- "allowNo": false,
4920
- "type": "boolean"
4921
- },
4922
- "page-size": {
4923
- "description": "Items per page (1-100, default: 100 for automation)",
4924
- "name": "page-size",
4925
- "default": 100,
4873
+ "sort": {
4874
+ "description": "Property to sort by (prepend with - for descending)",
4875
+ "name": "sort",
4926
4876
  "hasDynamicHelp": false,
4927
4877
  "multiple": false,
4928
4878
  "type": "option"
4929
4879
  },
4930
- "retry": {
4931
- "description": "Auto-retry on rate limit (respects Retry-After header)",
4932
- "name": "retry",
4933
- "allowNo": false,
4934
- "type": "boolean"
4935
- },
4936
- "timeout": {
4937
- "description": "Request timeout in milliseconds",
4938
- "name": "timeout",
4939
- "default": 30000,
4880
+ "filter": {
4881
+ "description": "Filter property by substring match",
4882
+ "name": "filter",
4940
4883
  "hasDynamicHelp": false,
4941
4884
  "multiple": false,
4942
4885
  "type": "option"
4943
4886
  },
4944
- "no-cache": {
4945
- "description": "Bypass cache and force fresh API calls",
4946
- "name": "no-cache",
4887
+ "csv": {
4888
+ "description": "Output in CSV format",
4889
+ "exclusive": [
4890
+ "no-truncate"
4891
+ ],
4892
+ "name": "csv",
4893
+ "allowNo": false,
4894
+ "type": "boolean"
4895
+ },
4896
+ "extended": {
4897
+ "char": "x",
4898
+ "description": "Show extra columns",
4899
+ "name": "extended",
4947
4900
  "allowNo": false,
4948
4901
  "type": "boolean"
4949
4902
  },
4950
- "verbose": {
4951
- "char": "v",
4952
- "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
4953
- "env": "NOTION_CLI_VERBOSE",
4954
- "name": "verbose",
4903
+ "no-truncate": {
4904
+ "description": "Do not truncate output to fit screen",
4905
+ "exclusive": [
4906
+ "csv"
4907
+ ],
4908
+ "name": "no-truncate",
4955
4909
  "allowNo": false,
4956
4910
  "type": "boolean"
4957
4911
  },
4958
- "minimal": {
4959
- "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
4960
- "name": "minimal",
4912
+ "no-header": {
4913
+ "description": "Hide table header from output",
4914
+ "name": "no-header",
4961
4915
  "allowNo": false,
4962
4916
  "type": "boolean"
4963
- }
4964
- },
4965
- "hasDynamicHelp": false,
4966
- "hiddenAliases": [],
4967
- "id": "template:save",
4968
- "pluginAlias": "@catafal/notion-cli",
4969
- "pluginName": "@catafal/notion-cli",
4970
- "pluginType": "core",
4971
- "strict": true,
4972
- "enableJsonFlag": false,
4973
- "isESM": false,
4974
- "relativePath": [
4975
- "dist",
4976
- "commands",
4977
- "template",
4978
- "save.js"
4979
- ]
4980
- },
4981
- "template:use": {
4982
- "aliases": [
4983
- "tpl:use"
4984
- ],
4985
- "args": {
4986
- "name": {
4987
- "description": "Template name to use",
4988
- "name": "name",
4989
- "required": true
4990
- }
4991
- },
4992
- "description": "Create a page from a saved template",
4993
- "examples": [
4994
- {
4995
- "description": "Create a page from a template",
4996
- "command": "$ notion-cli template use \"meeting\" --to tasks --title \"Sprint Planning\""
4997
4917
  },
4998
- {
4999
- "description": "Use default bookmark as target",
5000
- "command": "$ notion-cli template use \"task\" --title \"Fix login bug\""
5001
- }
5002
- ],
5003
- "flags": {
5004
- "to": {
5005
- "description": "Target bookmark name, database name, or ID (defaults to default bookmark)",
5006
- "name": "to",
5007
- "hasDynamicHelp": false,
5008
- "multiple": false,
5009
- "type": "option"
4918
+ "compact-json": {
4919
+ "char": "c",
4920
+ "description": "Output as compact JSON (single-line, ideal for piping)",
4921
+ "exclusive": [
4922
+ "markdown",
4923
+ "pretty"
4924
+ ],
4925
+ "name": "compact-json",
4926
+ "allowNo": false,
4927
+ "type": "boolean"
5010
4928
  },
5011
- "title": {
5012
- "char": "t",
5013
- "description": "Page title (overrides any title in template properties)",
5014
- "name": "title",
5015
- "required": true,
5016
- "hasDynamicHelp": false,
5017
- "multiple": false,
5018
- "type": "option"
4929
+ "pretty": {
4930
+ "char": "P",
4931
+ "description": "Output as pretty table with borders",
4932
+ "exclusive": [
4933
+ "markdown",
4934
+ "compact-json"
4935
+ ],
4936
+ "name": "pretty",
4937
+ "allowNo": false,
4938
+ "type": "boolean"
5019
4939
  },
5020
4940
  "json": {
5021
4941
  "char": "j",
@@ -5069,7 +4989,7 @@
5069
4989
  },
5070
4990
  "hasDynamicHelp": false,
5071
4991
  "hiddenAliases": [],
5072
- "id": "template:use",
4992
+ "id": "page:retrieve",
5073
4993
  "pluginAlias": "@catafal/notion-cli",
5074
4994
  "pluginName": "@catafal/notion-cli",
5075
4995
  "pluginType": "core",
@@ -5079,97 +4999,85 @@
5079
4999
  "relativePath": [
5080
5000
  "dist",
5081
5001
  "commands",
5082
- "template",
5083
- "use.js"
5002
+ "page",
5003
+ "retrieve.js"
5084
5004
  ]
5085
5005
  },
5086
- "page:create": {
5006
+ "page:update": {
5087
5007
  "aliases": [
5088
- "page:c"
5008
+ "page:u"
5089
5009
  ],
5090
- "args": {},
5091
- "description": "Create a page",
5010
+ "args": {
5011
+ "page_id": {
5012
+ "description": "Page ID or full Notion URL (e.g., https://notion.so/...)",
5013
+ "name": "page_id",
5014
+ "required": true
5015
+ }
5016
+ },
5017
+ "description": "Update a page",
5092
5018
  "examples": [
5093
5019
  {
5094
- "description": "Create a page via interactive mode",
5095
- "command": "$ notion-cli page create"
5020
+ "description": "Update a page and output table",
5021
+ "command": "$ notion-cli page update PAGE_ID"
5096
5022
  },
5097
5023
  {
5098
- "description": "Create a page with a specific parent_page_id",
5099
- "command": "$ notion-cli page create -p PARENT_PAGE_ID"
5024
+ "description": "Update a page via URL",
5025
+ "command": "$ notion-cli page update https://notion.so/PAGE_ID -a"
5100
5026
  },
5101
5027
  {
5102
- "description": "Create a page with a parent page URL",
5103
- "command": "$ notion-cli page create -p https://notion.so/PARENT_PAGE_ID"
5028
+ "description": "Update page properties with simple format (recommended for AI agents)",
5029
+ "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Status\": \"Done\", \"Priority\": \"High\"}'"
5104
5030
  },
5105
5031
  {
5106
- "description": "Create a page with a specific parent_db_id",
5107
- "command": "$ notion-cli page create -d PARENT_DB_ID"
5032
+ "description": "Update page properties with relative date",
5033
+ "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Due Date\": \"tomorrow\", \"Status\": \"In Progress\"}'"
5108
5034
  },
5109
5035
  {
5110
- "description": "Create a page with simple properties (recommended for AI agents)",
5111
- "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"My Task\", \"Status\": \"In Progress\", \"Due Date\": \"2025-12-31\"}'"
5036
+ "description": "Update page with multi-select tags",
5037
+ "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Tags\": [\"urgent\", \"bug\"], \"Status\": \"Done\"}'"
5112
5038
  },
5113
5039
  {
5114
- "description": "Create a page with simple properties using relative dates",
5115
- "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"Review\", \"Due Date\": \"tomorrow\", \"Priority\": \"High\"}'"
5040
+ "description": "Update a page and output raw json",
5041
+ "command": "$ notion-cli page update PAGE_ID -r"
5116
5042
  },
5117
5043
  {
5118
- "description": "Create a page with simple properties and multi-select",
5119
- "command": "$ notion-cli page create -d DATA_SOURCE_ID -S --properties '{\"Name\": \"Bug Fix\", \"Tags\": [\"urgent\", \"bug\"], \"Status\": \"Done\"}'"
5044
+ "description": "Update a page and archive",
5045
+ "command": "$ notion-cli page update PAGE_ID -a"
5120
5046
  },
5121
5047
  {
5122
- "description": "Create a page with a specific source markdown file and parent_page_id",
5123
- "command": "$ notion-cli page create -f ./path/to/source.md -p PARENT_PAGE_ID"
5048
+ "description": "Update a page and unarchive",
5049
+ "command": "$ notion-cli page update PAGE_ID -u"
5124
5050
  },
5125
5051
  {
5126
- "description": "Create a page with a specific source markdown file and parent_db_id",
5127
- "command": "$ notion-cli page create -f ./path/to/source.md -d PARENT_DB_ID"
5052
+ "description": "Update a page and archive and output raw json",
5053
+ "command": "$ notion-cli page update PAGE_ID -a -r"
5128
5054
  },
5129
5055
  {
5130
- "description": "Create a page with a specific source markdown file and output raw json with parent_page_id",
5131
- "command": "$ notion-cli page create -f ./path/to/source.md -p PARENT_PAGE_ID -r"
5056
+ "description": "Update a page and unarchive and output raw json",
5057
+ "command": "$ notion-cli page update PAGE_ID -u -r"
5132
5058
  },
5133
5059
  {
5134
- "description": "Create a page and output JSON for automation",
5135
- "command": "$ notion-cli page create -p PARENT_PAGE_ID --json"
5060
+ "description": "Update a page and output JSON for automation",
5061
+ "command": "$ notion-cli page update PAGE_ID -a --json"
5136
5062
  }
5137
5063
  ],
5138
5064
  "flags": {
5139
- "parent_page_id": {
5140
- "char": "p",
5141
- "description": "Parent page ID or URL (to create a sub-page)",
5142
- "name": "parent_page_id",
5143
- "hasDynamicHelp": false,
5144
- "multiple": false,
5145
- "type": "option"
5146
- },
5147
- "parent_data_source_id": {
5148
- "char": "d",
5149
- "description": "Parent data source ID or URL (to create a page in a table)",
5150
- "name": "parent_data_source_id",
5151
- "hasDynamicHelp": false,
5152
- "multiple": false,
5153
- "type": "option"
5154
- },
5155
- "file_path": {
5156
- "char": "f",
5157
- "description": "Path to a source markdown file",
5158
- "name": "file_path",
5159
- "hasDynamicHelp": false,
5160
- "multiple": false,
5161
- "type": "option"
5065
+ "archived": {
5066
+ "char": "a",
5067
+ "description": "Archive the page",
5068
+ "name": "archived",
5069
+ "allowNo": false,
5070
+ "type": "boolean"
5162
5071
  },
5163
- "title_property": {
5164
- "char": "t",
5165
- "description": "Title property name (auto-detected: \"title\" for sub-pages, \"Name\" for databases)",
5166
- "name": "title_property",
5167
- "hasDynamicHelp": false,
5168
- "multiple": false,
5169
- "type": "option"
5072
+ "unarchive": {
5073
+ "char": "u",
5074
+ "description": "Unarchive the page",
5075
+ "name": "unarchive",
5076
+ "allowNo": false,
5077
+ "type": "boolean"
5170
5078
  },
5171
5079
  "properties": {
5172
- "description": "Page properties as JSON string",
5080
+ "description": "Page properties to update as JSON string",
5173
5081
  "name": "properties",
5174
5082
  "hasDynamicHelp": false,
5175
5083
  "multiple": false,
@@ -5229,21 +5137,106 @@
5229
5137
  "allowNo": false,
5230
5138
  "type": "boolean"
5231
5139
  },
5232
- "no-truncate": {
5233
- "description": "Do not truncate output to fit screen",
5234
- "exclusive": [
5235
- "csv"
5236
- ],
5237
- "name": "no-truncate",
5140
+ "no-truncate": {
5141
+ "description": "Do not truncate output to fit screen",
5142
+ "exclusive": [
5143
+ "csv"
5144
+ ],
5145
+ "name": "no-truncate",
5146
+ "allowNo": false,
5147
+ "type": "boolean"
5148
+ },
5149
+ "no-header": {
5150
+ "description": "Hide table header from output",
5151
+ "name": "no-header",
5152
+ "allowNo": false,
5153
+ "type": "boolean"
5154
+ },
5155
+ "json": {
5156
+ "char": "j",
5157
+ "description": "Output as JSON (recommended for automation)",
5158
+ "name": "json",
5159
+ "allowNo": false,
5160
+ "type": "boolean"
5161
+ },
5162
+ "page-size": {
5163
+ "description": "Items per page (1-100, default: 100 for automation)",
5164
+ "name": "page-size",
5165
+ "default": 100,
5166
+ "hasDynamicHelp": false,
5167
+ "multiple": false,
5168
+ "type": "option"
5169
+ },
5170
+ "retry": {
5171
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
5172
+ "name": "retry",
5173
+ "allowNo": false,
5174
+ "type": "boolean"
5175
+ },
5176
+ "timeout": {
5177
+ "description": "Request timeout in milliseconds",
5178
+ "name": "timeout",
5179
+ "default": 30000,
5180
+ "hasDynamicHelp": false,
5181
+ "multiple": false,
5182
+ "type": "option"
5183
+ },
5184
+ "no-cache": {
5185
+ "description": "Bypass cache and force fresh API calls",
5186
+ "name": "no-cache",
5187
+ "allowNo": false,
5188
+ "type": "boolean"
5189
+ },
5190
+ "verbose": {
5191
+ "char": "v",
5192
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
5193
+ "env": "NOTION_CLI_VERBOSE",
5194
+ "name": "verbose",
5238
5195
  "allowNo": false,
5239
5196
  "type": "boolean"
5240
5197
  },
5241
- "no-header": {
5242
- "description": "Hide table header from output",
5243
- "name": "no-header",
5198
+ "minimal": {
5199
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
5200
+ "name": "minimal",
5244
5201
  "allowNo": false,
5245
5202
  "type": "boolean"
5246
- },
5203
+ }
5204
+ },
5205
+ "hasDynamicHelp": false,
5206
+ "hiddenAliases": [],
5207
+ "id": "page:update",
5208
+ "pluginAlias": "@catafal/notion-cli",
5209
+ "pluginName": "@catafal/notion-cli",
5210
+ "pluginType": "core",
5211
+ "strict": true,
5212
+ "enableJsonFlag": false,
5213
+ "isESM": false,
5214
+ "relativePath": [
5215
+ "dist",
5216
+ "commands",
5217
+ "page",
5218
+ "update.js"
5219
+ ]
5220
+ },
5221
+ "template:get": {
5222
+ "aliases": [
5223
+ "tpl:get"
5224
+ ],
5225
+ "args": {
5226
+ "name": {
5227
+ "description": "Template name",
5228
+ "name": "name",
5229
+ "required": true
5230
+ }
5231
+ },
5232
+ "description": "View a saved template",
5233
+ "examples": [
5234
+ {
5235
+ "description": "View a template",
5236
+ "command": "$ notion-cli template get \"meeting\""
5237
+ }
5238
+ ],
5239
+ "flags": {
5247
5240
  "json": {
5248
5241
  "char": "j",
5249
5242
  "description": "Output as JSON (recommended for automation)",
@@ -5296,7 +5289,7 @@
5296
5289
  },
5297
5290
  "hasDynamicHelp": false,
5298
5291
  "hiddenAliases": [],
5299
- "id": "page:create",
5292
+ "id": "template:get",
5300
5293
  "pluginAlias": "@catafal/notion-cli",
5301
5294
  "pluginName": "@catafal/notion-cli",
5302
5295
  "pluginType": "core",
@@ -5306,44 +5299,23 @@
5306
5299
  "relativePath": [
5307
5300
  "dist",
5308
5301
  "commands",
5309
- "page",
5310
- "create.js"
5302
+ "template",
5303
+ "get.js"
5311
5304
  ]
5312
5305
  },
5313
- "page:delete": {
5306
+ "template:list": {
5314
5307
  "aliases": [
5315
- "page:d"
5308
+ "tpl:ls"
5316
5309
  ],
5317
- "args": {
5318
- "page_id": {
5319
- "description": "Page ID or full Notion URL",
5320
- "name": "page_id",
5321
- "required": true
5322
- }
5323
- },
5324
- "description": "Archive (soft-delete) a Notion page",
5310
+ "args": {},
5311
+ "description": "List all saved templates",
5325
5312
  "examples": [
5326
5313
  {
5327
- "description": "Delete (archive) a page by ID",
5328
- "command": "$ notion-cli page delete PAGE_ID"
5329
- },
5330
- {
5331
- "description": "Delete (archive) a page by URL",
5332
- "command": "$ notion-cli page delete https://notion.so/PAGE_ID"
5333
- },
5334
- {
5335
- "description": "Delete and output JSON for automation",
5336
- "command": "$ notion-cli page delete PAGE_ID --json"
5314
+ "description": "List all templates",
5315
+ "command": "$ notion-cli template list"
5337
5316
  }
5338
5317
  ],
5339
5318
  "flags": {
5340
- "raw": {
5341
- "char": "r",
5342
- "description": "Output raw JSON",
5343
- "name": "raw",
5344
- "allowNo": false,
5345
- "type": "boolean"
5346
- },
5347
5319
  "columns": {
5348
5320
  "description": "Only show provided columns (comma-separated)",
5349
5321
  "exclusive": [
@@ -5451,7 +5423,7 @@
5451
5423
  },
5452
5424
  "hasDynamicHelp": false,
5453
5425
  "hiddenAliases": [],
5454
- "id": "page:delete",
5426
+ "id": "template:list",
5455
5427
  "pluginAlias": "@catafal/notion-cli",
5456
5428
  "pluginName": "@catafal/notion-cli",
5457
5429
  "pluginType": "core",
@@ -5461,53 +5433,29 @@
5461
5433
  "relativePath": [
5462
5434
  "dist",
5463
5435
  "commands",
5464
- "page",
5465
- "delete.js"
5436
+ "template",
5437
+ "list.js"
5466
5438
  ]
5467
5439
  },
5468
- "page:export": {
5440
+ "template:remove": {
5469
5441
  "aliases": [
5470
- "page:e"
5442
+ "tpl:rm"
5471
5443
  ],
5472
5444
  "args": {
5473
- "page_id": {
5474
- "description": "Page ID or full Notion URL",
5475
- "name": "page_id",
5445
+ "name": {
5446
+ "description": "Template name to remove",
5447
+ "name": "name",
5476
5448
  "required": true
5477
5449
  }
5478
5450
  },
5479
- "description": "Export a Notion page to markdown or JSON",
5451
+ "description": "Remove a saved template",
5480
5452
  "examples": [
5481
5453
  {
5482
- "description": "Export page as markdown to stdout",
5483
- "command": "$ notion-cli page export PAGE_ID"
5484
- },
5485
- {
5486
- "description": "Export page as markdown to a file",
5487
- "command": "$ notion-cli page export PAGE_ID -o notes.md"
5488
- },
5489
- {
5490
- "description": "Export page as JSON to a file",
5491
- "command": "$ notion-cli page export PAGE_ID --json -o page.json"
5492
- },
5493
- {
5494
- "description": "Export using a Notion URL",
5495
- "command": "$ notion-cli page export \"https://notion.so/My-Page-abc123\" -o notes.md"
5496
- },
5497
- {
5498
- "description": "Pipe markdown to another command",
5499
- "command": "$ notion-cli page export PAGE_ID | head -20"
5454
+ "description": "Remove a template",
5455
+ "command": "$ notion-cli template remove \"meeting\""
5500
5456
  }
5501
5457
  ],
5502
5458
  "flags": {
5503
- "output": {
5504
- "char": "o",
5505
- "description": "File path to write (omit for stdout)",
5506
- "name": "output",
5507
- "hasDynamicHelp": false,
5508
- "multiple": false,
5509
- "type": "option"
5510
- },
5511
5459
  "json": {
5512
5460
  "char": "j",
5513
5461
  "description": "Output as JSON (recommended for automation)",
@@ -5560,7 +5508,7 @@
5560
5508
  },
5561
5509
  "hasDynamicHelp": false,
5562
5510
  "hiddenAliases": [],
5563
- "id": "page:export",
5511
+ "id": "template:remove",
5564
5512
  "pluginAlias": "@catafal/notion-cli",
5565
5513
  "pluginName": "@catafal/notion-cli",
5566
5514
  "pluginType": "core",
@@ -5570,196 +5518,56 @@
5570
5518
  "relativePath": [
5571
5519
  "dist",
5572
5520
  "commands",
5573
- "page",
5574
- "export.js"
5521
+ "template",
5522
+ "remove.js"
5575
5523
  ]
5576
5524
  },
5577
- "page:retrieve": {
5525
+ "template:save": {
5578
5526
  "aliases": [
5579
- "page:r"
5580
- ],
5581
- "args": {
5582
- "page_id": {
5583
- "description": "Page ID or full Notion URL (e.g., https://notion.so/...)",
5584
- "name": "page_id",
5585
- "required": true
5586
- }
5587
- },
5588
- "description": "Retrieve a page",
5589
- "examples": [
5590
- {
5591
- "description": "Retrieve a page with full data (recommended for AI assistants)",
5592
- "command": "$ notion-cli page retrieve PAGE_ID -r"
5593
- },
5594
- {
5595
- "description": "Fast structure overview (90% faster than full fetch)",
5596
- "command": "$ notion-cli page retrieve PAGE_ID --map"
5597
- },
5598
- {
5599
- "description": "Fast structure overview with compact JSON",
5600
- "command": "$ notion-cli page retrieve PAGE_ID --map --compact-json"
5601
- },
5602
- {
5603
- "description": "Retrieve entire page tree with all nested content (35% token reduction)",
5604
- "command": "$ notion-cli page retrieve PAGE_ID --recursive --compact-json"
5605
- },
5606
- {
5607
- "description": "Retrieve page tree with custom depth limit",
5608
- "command": "$ notion-cli page retrieve PAGE_ID -R --max-depth 5 --json"
5609
- },
5610
- {
5611
- "description": "Retrieve a page and output table",
5612
- "command": "$ notion-cli page retrieve PAGE_ID"
5613
- },
5614
- {
5615
- "description": "Retrieve a page via URL",
5616
- "command": "$ notion-cli page retrieve https://notion.so/PAGE_ID"
5617
- },
5618
- {
5619
- "description": "Retrieve a page and output raw json",
5620
- "command": "$ notion-cli page retrieve PAGE_ID -r"
5621
- },
5622
- {
5623
- "description": "Retrieve a page and output markdown",
5624
- "command": "$ notion-cli page retrieve PAGE_ID -m"
5625
- },
5626
- {
5627
- "description": "Retrieve a page metadata and output as markdown table",
5628
- "command": "$ notion-cli page retrieve PAGE_ID --markdown"
5629
- },
5630
- {
5631
- "description": "Retrieve a page metadata and output as compact JSON",
5632
- "command": "$ notion-cli page retrieve PAGE_ID --compact-json"
5633
- },
5634
- {
5635
- "description": "Retrieve a page and output JSON for automation",
5636
- "command": "$ notion-cli page retrieve PAGE_ID --json"
5637
- }
5638
- ],
5639
- "flags": {
5640
- "raw": {
5641
- "char": "r",
5642
- "description": "output raw json (recommended for AI assistants - returns all fields)",
5643
- "name": "raw",
5644
- "allowNo": false,
5645
- "type": "boolean"
5646
- },
5647
- "markdown": {
5648
- "char": "m",
5649
- "description": "Output as markdown table (GitHub-flavored)",
5650
- "exclusive": [
5651
- "compact-json",
5652
- "pretty"
5653
- ],
5654
- "name": "markdown",
5655
- "allowNo": false,
5656
- "type": "boolean"
5657
- },
5658
- "map": {
5659
- "description": "fast structure discovery (returns minimal info: titles, types, IDs)",
5660
- "exclusive": [
5661
- "raw",
5662
- "markdown"
5663
- ],
5664
- "name": "map",
5665
- "allowNo": false,
5666
- "type": "boolean"
5667
- },
5668
- "recursive": {
5669
- "char": "R",
5670
- "description": "recursively fetch all blocks and nested pages (reduces API calls)",
5671
- "name": "recursive",
5672
- "allowNo": false,
5673
- "type": "boolean"
5674
- },
5675
- "max-depth": {
5676
- "dependsOn": [
5677
- "recursive"
5678
- ],
5679
- "description": "maximum recursion depth for --recursive (default: 3)",
5680
- "name": "max-depth",
5681
- "default": 3,
5682
- "hasDynamicHelp": false,
5683
- "multiple": false,
5684
- "type": "option"
5527
+ "tpl:save"
5528
+ ],
5529
+ "args": {
5530
+ "name": {
5531
+ "description": "Template name (e.g. \"meeting\", \"task\")",
5532
+ "name": "name",
5533
+ "required": true
5534
+ }
5535
+ },
5536
+ "description": "Save a reusable page template",
5537
+ "examples": [
5538
+ {
5539
+ "description": "Save a template with properties",
5540
+ "command": "$ notion-cli template save \"meeting\" --properties '{\"Status\": \"To Do\", \"Type\": \"Meeting\"}'"
5685
5541
  },
5686
- "columns": {
5687
- "description": "Only show provided columns (comma-separated)",
5688
- "exclusive": [
5689
- "extended"
5690
- ],
5691
- "name": "columns",
5542
+ {
5543
+ "description": "Save with properties, body content, and icon",
5544
+ "command": "$ notion-cli template save \"standup\" --properties '{\"Status\": \"In Progress\"}' --content \"# Standup\\n\\n## Done\\n\\n## Doing\\n\\n## Blockers\" --icon \"🧑‍💻\""
5545
+ }
5546
+ ],
5547
+ "flags": {
5548
+ "properties": {
5549
+ "char": "p",
5550
+ "description": "Properties as JSON (simple format, e.g. '{\"Status\": \"To Do\"}')",
5551
+ "name": "properties",
5692
5552
  "hasDynamicHelp": false,
5693
5553
  "multiple": false,
5694
5554
  "type": "option"
5695
5555
  },
5696
- "sort": {
5697
- "description": "Property to sort by (prepend with - for descending)",
5698
- "name": "sort",
5556
+ "content": {
5557
+ "char": "c",
5558
+ "description": "Markdown body content for the page",
5559
+ "name": "content",
5699
5560
  "hasDynamicHelp": false,
5700
5561
  "multiple": false,
5701
5562
  "type": "option"
5702
5563
  },
5703
- "filter": {
5704
- "description": "Filter property by substring match",
5705
- "name": "filter",
5564
+ "icon": {
5565
+ "description": "Emoji icon (e.g. \"📋\")",
5566
+ "name": "icon",
5706
5567
  "hasDynamicHelp": false,
5707
5568
  "multiple": false,
5708
5569
  "type": "option"
5709
5570
  },
5710
- "csv": {
5711
- "description": "Output in CSV format",
5712
- "exclusive": [
5713
- "no-truncate"
5714
- ],
5715
- "name": "csv",
5716
- "allowNo": false,
5717
- "type": "boolean"
5718
- },
5719
- "extended": {
5720
- "char": "x",
5721
- "description": "Show extra columns",
5722
- "name": "extended",
5723
- "allowNo": false,
5724
- "type": "boolean"
5725
- },
5726
- "no-truncate": {
5727
- "description": "Do not truncate output to fit screen",
5728
- "exclusive": [
5729
- "csv"
5730
- ],
5731
- "name": "no-truncate",
5732
- "allowNo": false,
5733
- "type": "boolean"
5734
- },
5735
- "no-header": {
5736
- "description": "Hide table header from output",
5737
- "name": "no-header",
5738
- "allowNo": false,
5739
- "type": "boolean"
5740
- },
5741
- "compact-json": {
5742
- "char": "c",
5743
- "description": "Output as compact JSON (single-line, ideal for piping)",
5744
- "exclusive": [
5745
- "markdown",
5746
- "pretty"
5747
- ],
5748
- "name": "compact-json",
5749
- "allowNo": false,
5750
- "type": "boolean"
5751
- },
5752
- "pretty": {
5753
- "char": "P",
5754
- "description": "Output as pretty table with borders",
5755
- "exclusive": [
5756
- "markdown",
5757
- "compact-json"
5758
- ],
5759
- "name": "pretty",
5760
- "allowNo": false,
5761
- "type": "boolean"
5762
- },
5763
5571
  "json": {
5764
5572
  "char": "j",
5765
5573
  "description": "Output as JSON (recommended for automation)",
@@ -5812,7 +5620,7 @@
5812
5620
  },
5813
5621
  "hasDynamicHelp": false,
5814
5622
  "hiddenAliases": [],
5815
- "id": "page:retrieve",
5623
+ "id": "template:save",
5816
5624
  "pluginAlias": "@catafal/notion-cli",
5817
5625
  "pluginName": "@catafal/notion-cli",
5818
5626
  "pluginType": "core",
@@ -5822,97 +5630,136 @@
5822
5630
  "relativePath": [
5823
5631
  "dist",
5824
5632
  "commands",
5825
- "page",
5826
- "retrieve.js"
5633
+ "template",
5634
+ "save.js"
5827
5635
  ]
5828
5636
  },
5829
- "page:update": {
5637
+ "template:use": {
5830
5638
  "aliases": [
5831
- "page:u"
5639
+ "tpl:use"
5832
5640
  ],
5833
5641
  "args": {
5834
- "page_id": {
5835
- "description": "Page ID or full Notion URL (e.g., https://notion.so/...)",
5836
- "name": "page_id",
5642
+ "name": {
5643
+ "description": "Template name to use",
5644
+ "name": "name",
5837
5645
  "required": true
5838
5646
  }
5839
5647
  },
5840
- "description": "Update a page",
5648
+ "description": "Create a page from a saved template",
5841
5649
  "examples": [
5842
5650
  {
5843
- "description": "Update a page and output table",
5844
- "command": "$ notion-cli page update PAGE_ID"
5845
- },
5846
- {
5847
- "description": "Update a page via URL",
5848
- "command": "$ notion-cli page update https://notion.so/PAGE_ID -a"
5849
- },
5850
- {
5851
- "description": "Update page properties with simple format (recommended for AI agents)",
5852
- "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Status\": \"Done\", \"Priority\": \"High\"}'"
5853
- },
5854
- {
5855
- "description": "Update page properties with relative date",
5856
- "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Due Date\": \"tomorrow\", \"Status\": \"In Progress\"}'"
5857
- },
5858
- {
5859
- "description": "Update page with multi-select tags",
5860
- "command": "$ notion-cli page update PAGE_ID -S --properties '{\"Tags\": [\"urgent\", \"bug\"], \"Status\": \"Done\"}'"
5861
- },
5862
- {
5863
- "description": "Update a page and output raw json",
5864
- "command": "$ notion-cli page update PAGE_ID -r"
5865
- },
5866
- {
5867
- "description": "Update a page and archive",
5868
- "command": "$ notion-cli page update PAGE_ID -a"
5869
- },
5870
- {
5871
- "description": "Update a page and unarchive",
5872
- "command": "$ notion-cli page update PAGE_ID -u"
5873
- },
5874
- {
5875
- "description": "Update a page and archive and output raw json",
5876
- "command": "$ notion-cli page update PAGE_ID -a -r"
5877
- },
5878
- {
5879
- "description": "Update a page and unarchive and output raw json",
5880
- "command": "$ notion-cli page update PAGE_ID -u -r"
5651
+ "description": "Create a page from a template",
5652
+ "command": "$ notion-cli template use \"meeting\" --to tasks --title \"Sprint Planning\""
5881
5653
  },
5882
5654
  {
5883
- "description": "Update a page and output JSON for automation",
5884
- "command": "$ notion-cli page update PAGE_ID -a --json"
5655
+ "description": "Use default bookmark as target",
5656
+ "command": "$ notion-cli template use \"task\" --title \"Fix login bug\""
5885
5657
  }
5886
5658
  ],
5887
5659
  "flags": {
5888
- "archived": {
5889
- "char": "a",
5890
- "description": "Archive the page",
5891
- "name": "archived",
5660
+ "to": {
5661
+ "description": "Target bookmark name, database name, or ID (defaults to default bookmark)",
5662
+ "name": "to",
5663
+ "hasDynamicHelp": false,
5664
+ "multiple": false,
5665
+ "type": "option"
5666
+ },
5667
+ "title": {
5668
+ "char": "t",
5669
+ "description": "Page title (overrides any title in template properties)",
5670
+ "name": "title",
5671
+ "required": true,
5672
+ "hasDynamicHelp": false,
5673
+ "multiple": false,
5674
+ "type": "option"
5675
+ },
5676
+ "json": {
5677
+ "char": "j",
5678
+ "description": "Output as JSON (recommended for automation)",
5679
+ "name": "json",
5892
5680
  "allowNo": false,
5893
5681
  "type": "boolean"
5894
5682
  },
5895
- "unarchive": {
5896
- "char": "u",
5897
- "description": "Unarchive the page",
5898
- "name": "unarchive",
5683
+ "page-size": {
5684
+ "description": "Items per page (1-100, default: 100 for automation)",
5685
+ "name": "page-size",
5686
+ "default": 100,
5687
+ "hasDynamicHelp": false,
5688
+ "multiple": false,
5689
+ "type": "option"
5690
+ },
5691
+ "retry": {
5692
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
5693
+ "name": "retry",
5899
5694
  "allowNo": false,
5900
5695
  "type": "boolean"
5901
5696
  },
5902
- "properties": {
5903
- "description": "Page properties to update as JSON string",
5904
- "name": "properties",
5697
+ "timeout": {
5698
+ "description": "Request timeout in milliseconds",
5699
+ "name": "timeout",
5700
+ "default": 30000,
5905
5701
  "hasDynamicHelp": false,
5906
5702
  "multiple": false,
5907
5703
  "type": "option"
5908
5704
  },
5909
- "simple-properties": {
5910
- "char": "S",
5911
- "description": "Use simplified property format (flat key-value pairs, recommended for AI agents)",
5912
- "name": "simple-properties",
5705
+ "no-cache": {
5706
+ "description": "Bypass cache and force fresh API calls",
5707
+ "name": "no-cache",
5708
+ "allowNo": false,
5709
+ "type": "boolean"
5710
+ },
5711
+ "verbose": {
5712
+ "char": "v",
5713
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
5714
+ "env": "NOTION_CLI_VERBOSE",
5715
+ "name": "verbose",
5716
+ "allowNo": false,
5717
+ "type": "boolean"
5718
+ },
5719
+ "minimal": {
5720
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
5721
+ "name": "minimal",
5913
5722
  "allowNo": false,
5914
5723
  "type": "boolean"
5724
+ }
5725
+ },
5726
+ "hasDynamicHelp": false,
5727
+ "hiddenAliases": [],
5728
+ "id": "template:use",
5729
+ "pluginAlias": "@catafal/notion-cli",
5730
+ "pluginName": "@catafal/notion-cli",
5731
+ "pluginType": "core",
5732
+ "strict": true,
5733
+ "enableJsonFlag": false,
5734
+ "isESM": false,
5735
+ "relativePath": [
5736
+ "dist",
5737
+ "commands",
5738
+ "template",
5739
+ "use.js"
5740
+ ]
5741
+ },
5742
+ "user:list": {
5743
+ "aliases": [
5744
+ "user:l"
5745
+ ],
5746
+ "args": {},
5747
+ "description": "List all users",
5748
+ "examples": [
5749
+ {
5750
+ "description": "List all users",
5751
+ "command": "$ notion-cli user list"
5752
+ },
5753
+ {
5754
+ "description": "List all users and output raw json",
5755
+ "command": "$ notion-cli user list -r"
5915
5756
  },
5757
+ {
5758
+ "description": "List all users and output JSON for automation",
5759
+ "command": "$ notion-cli user list --json"
5760
+ }
5761
+ ],
5762
+ "flags": {
5916
5763
  "raw": {
5917
5764
  "char": "r",
5918
5765
  "description": "output raw json",
@@ -6027,7 +5874,7 @@
6027
5874
  },
6028
5875
  "hasDynamicHelp": false,
6029
5876
  "hiddenAliases": [],
6030
- "id": "page:update",
5877
+ "id": "user:list",
6031
5878
  "pluginAlias": "@catafal/notion-cli",
6032
5879
  "pluginName": "@catafal/notion-cli",
6033
5880
  "pluginType": "core",
@@ -6037,42 +5884,32 @@
6037
5884
  "relativePath": [
6038
5885
  "dist",
6039
5886
  "commands",
6040
- "page",
6041
- "update.js"
5887
+ "user",
5888
+ "list.js"
6042
5889
  ]
6043
5890
  },
6044
- "block:retrieve:children": {
5891
+ "user:retrieve": {
6045
5892
  "aliases": [
6046
- "block:r:c"
5893
+ "user:r"
6047
5894
  ],
6048
5895
  "args": {
6049
- "block_id": {
6050
- "description": "block_id or page_id",
6051
- "name": "block_id",
6052
- "required": true
5896
+ "user_id": {
5897
+ "name": "user_id"
6053
5898
  }
6054
5899
  },
6055
- "description": "Retrieve block children (supports database discovery via --show-databases)",
5900
+ "description": "Retrieve a user",
6056
5901
  "examples": [
6057
5902
  {
6058
- "description": "Retrieve block children",
6059
- "command": "$ notion-cli block retrieve:children BLOCK_ID"
6060
- },
6061
- {
6062
- "description": "Retrieve block children and output raw json",
6063
- "command": "$ notion-cli block retrieve:children BLOCK_ID -r"
6064
- },
6065
- {
6066
- "description": "Retrieve block children and output JSON for automation",
6067
- "command": "$ notion-cli block retrieve:children BLOCK_ID --json"
5903
+ "description": "Retrieve a user",
5904
+ "command": "$ notion-cli user retrieve USER_ID"
6068
5905
  },
6069
5906
  {
6070
- "description": "Discover databases on a page with queryable IDs",
6071
- "command": "$ notion-cli block retrieve:children PAGE_ID --show-databases"
5907
+ "description": "Retrieve a user and output raw json",
5908
+ "command": "$ notion-cli user retrieve USER_ID -r"
6072
5909
  },
6073
5910
  {
6074
- "description": "Get databases as JSON for automation",
6075
- "command": "$ notion-cli block retrieve:children PAGE_ID --show-databases --json"
5911
+ "description": "Retrieve a user and output JSON for automation",
5912
+ "command": "$ notion-cli user retrieve USER_ID --json"
6076
5913
  }
6077
5914
  ],
6078
5915
  "flags": {
@@ -6083,13 +5920,6 @@
6083
5920
  "allowNo": false,
6084
5921
  "type": "boolean"
6085
5922
  },
6086
- "show-databases": {
6087
- "char": "d",
6088
- "description": "show only child databases with their queryable IDs (data_source_id)",
6089
- "name": "show-databases",
6090
- "allowNo": false,
6091
- "type": "boolean"
6092
- },
6093
5923
  "columns": {
6094
5924
  "description": "Only show provided columns (comma-separated)",
6095
5925
  "exclusive": [
@@ -6197,7 +6027,7 @@
6197
6027
  },
6198
6028
  "hasDynamicHelp": false,
6199
6029
  "hiddenAliases": [],
6200
- "id": "block:retrieve:children",
6030
+ "id": "user:retrieve",
6201
6031
  "pluginAlias": "@catafal/notion-cli",
6202
6032
  "pluginName": "@catafal/notion-cli",
6203
6033
  "pluginType": "core",
@@ -6207,29 +6037,42 @@
6207
6037
  "relativePath": [
6208
6038
  "dist",
6209
6039
  "commands",
6210
- "block",
6211
- "retrieve",
6212
- "children.js"
6040
+ "user",
6041
+ "retrieve.js"
6213
6042
  ]
6214
6043
  },
6215
- "user:retrieve:bot": {
6044
+ "block:retrieve:children": {
6216
6045
  "aliases": [
6217
- "user:r:b"
6046
+ "block:r:c"
6218
6047
  ],
6219
- "args": {},
6220
- "description": "Retrieve a bot user",
6048
+ "args": {
6049
+ "block_id": {
6050
+ "description": "block_id or page_id",
6051
+ "name": "block_id",
6052
+ "required": true
6053
+ }
6054
+ },
6055
+ "description": "Retrieve block children (supports database discovery via --show-databases)",
6221
6056
  "examples": [
6222
6057
  {
6223
- "description": "Retrieve a bot user",
6224
- "command": "$ notion-cli user retrieve:bot"
6058
+ "description": "Retrieve block children",
6059
+ "command": "$ notion-cli block retrieve:children BLOCK_ID"
6225
6060
  },
6226
6061
  {
6227
- "description": "Retrieve a bot user and output raw json",
6228
- "command": "$ notion-cli user retrieve:bot -r"
6062
+ "description": "Retrieve block children and output raw json",
6063
+ "command": "$ notion-cli block retrieve:children BLOCK_ID -r"
6229
6064
  },
6230
6065
  {
6231
- "description": "Retrieve a bot user and output JSON for automation",
6232
- "command": "$ notion-cli user retrieve:bot --json"
6066
+ "description": "Retrieve block children and output JSON for automation",
6067
+ "command": "$ notion-cli block retrieve:children BLOCK_ID --json"
6068
+ },
6069
+ {
6070
+ "description": "Discover databases on a page with queryable IDs",
6071
+ "command": "$ notion-cli block retrieve:children PAGE_ID --show-databases"
6072
+ },
6073
+ {
6074
+ "description": "Get databases as JSON for automation",
6075
+ "command": "$ notion-cli block retrieve:children PAGE_ID --show-databases --json"
6233
6076
  }
6234
6077
  ],
6235
6078
  "flags": {
@@ -6240,6 +6083,13 @@
6240
6083
  "allowNo": false,
6241
6084
  "type": "boolean"
6242
6085
  },
6086
+ "show-databases": {
6087
+ "char": "d",
6088
+ "description": "show only child databases with their queryable IDs (data_source_id)",
6089
+ "name": "show-databases",
6090
+ "allowNo": false,
6091
+ "type": "boolean"
6092
+ },
6243
6093
  "columns": {
6244
6094
  "description": "Only show provided columns (comma-separated)",
6245
6095
  "exclusive": [
@@ -6347,7 +6197,7 @@
6347
6197
  },
6348
6198
  "hasDynamicHelp": false,
6349
6199
  "hiddenAliases": [],
6350
- "id": "user:retrieve:bot",
6200
+ "id": "block:retrieve:children",
6351
6201
  "pluginAlias": "@catafal/notion-cli",
6352
6202
  "pluginName": "@catafal/notion-cli",
6353
6203
  "pluginType": "core",
@@ -6357,9 +6207,9 @@
6357
6207
  "relativePath": [
6358
6208
  "dist",
6359
6209
  "commands",
6360
- "user",
6210
+ "block",
6361
6211
  "retrieve",
6362
- "bot.js"
6212
+ "children.js"
6363
6213
  ]
6364
6214
  },
6365
6215
  "page:retrieve:property_item": {
@@ -6465,7 +6315,157 @@
6465
6315
  "retrieve",
6466
6316
  "property_item.js"
6467
6317
  ]
6318
+ },
6319
+ "user:retrieve:bot": {
6320
+ "aliases": [
6321
+ "user:r:b"
6322
+ ],
6323
+ "args": {},
6324
+ "description": "Retrieve a bot user",
6325
+ "examples": [
6326
+ {
6327
+ "description": "Retrieve a bot user",
6328
+ "command": "$ notion-cli user retrieve:bot"
6329
+ },
6330
+ {
6331
+ "description": "Retrieve a bot user and output raw json",
6332
+ "command": "$ notion-cli user retrieve:bot -r"
6333
+ },
6334
+ {
6335
+ "description": "Retrieve a bot user and output JSON for automation",
6336
+ "command": "$ notion-cli user retrieve:bot --json"
6337
+ }
6338
+ ],
6339
+ "flags": {
6340
+ "raw": {
6341
+ "char": "r",
6342
+ "description": "output raw json",
6343
+ "name": "raw",
6344
+ "allowNo": false,
6345
+ "type": "boolean"
6346
+ },
6347
+ "columns": {
6348
+ "description": "Only show provided columns (comma-separated)",
6349
+ "exclusive": [
6350
+ "extended"
6351
+ ],
6352
+ "name": "columns",
6353
+ "hasDynamicHelp": false,
6354
+ "multiple": false,
6355
+ "type": "option"
6356
+ },
6357
+ "sort": {
6358
+ "description": "Property to sort by (prepend with - for descending)",
6359
+ "name": "sort",
6360
+ "hasDynamicHelp": false,
6361
+ "multiple": false,
6362
+ "type": "option"
6363
+ },
6364
+ "filter": {
6365
+ "description": "Filter property by substring match",
6366
+ "name": "filter",
6367
+ "hasDynamicHelp": false,
6368
+ "multiple": false,
6369
+ "type": "option"
6370
+ },
6371
+ "csv": {
6372
+ "description": "Output in CSV format",
6373
+ "exclusive": [
6374
+ "no-truncate"
6375
+ ],
6376
+ "name": "csv",
6377
+ "allowNo": false,
6378
+ "type": "boolean"
6379
+ },
6380
+ "extended": {
6381
+ "char": "x",
6382
+ "description": "Show extra columns",
6383
+ "name": "extended",
6384
+ "allowNo": false,
6385
+ "type": "boolean"
6386
+ },
6387
+ "no-truncate": {
6388
+ "description": "Do not truncate output to fit screen",
6389
+ "exclusive": [
6390
+ "csv"
6391
+ ],
6392
+ "name": "no-truncate",
6393
+ "allowNo": false,
6394
+ "type": "boolean"
6395
+ },
6396
+ "no-header": {
6397
+ "description": "Hide table header from output",
6398
+ "name": "no-header",
6399
+ "allowNo": false,
6400
+ "type": "boolean"
6401
+ },
6402
+ "json": {
6403
+ "char": "j",
6404
+ "description": "Output as JSON (recommended for automation)",
6405
+ "name": "json",
6406
+ "allowNo": false,
6407
+ "type": "boolean"
6408
+ },
6409
+ "page-size": {
6410
+ "description": "Items per page (1-100, default: 100 for automation)",
6411
+ "name": "page-size",
6412
+ "default": 100,
6413
+ "hasDynamicHelp": false,
6414
+ "multiple": false,
6415
+ "type": "option"
6416
+ },
6417
+ "retry": {
6418
+ "description": "Auto-retry on rate limit (respects Retry-After header)",
6419
+ "name": "retry",
6420
+ "allowNo": false,
6421
+ "type": "boolean"
6422
+ },
6423
+ "timeout": {
6424
+ "description": "Request timeout in milliseconds",
6425
+ "name": "timeout",
6426
+ "default": 30000,
6427
+ "hasDynamicHelp": false,
6428
+ "multiple": false,
6429
+ "type": "option"
6430
+ },
6431
+ "no-cache": {
6432
+ "description": "Bypass cache and force fresh API calls",
6433
+ "name": "no-cache",
6434
+ "allowNo": false,
6435
+ "type": "boolean"
6436
+ },
6437
+ "verbose": {
6438
+ "char": "v",
6439
+ "description": "Enable verbose logging to stderr (retry events, cache stats) - never pollutes stdout",
6440
+ "env": "NOTION_CLI_VERBOSE",
6441
+ "name": "verbose",
6442
+ "allowNo": false,
6443
+ "type": "boolean"
6444
+ },
6445
+ "minimal": {
6446
+ "description": "Strip unnecessary metadata (created_by, last_edited_by, object fields, request_id, etc.) - reduces response size by ~40%",
6447
+ "name": "minimal",
6448
+ "allowNo": false,
6449
+ "type": "boolean"
6450
+ }
6451
+ },
6452
+ "hasDynamicHelp": false,
6453
+ "hiddenAliases": [],
6454
+ "id": "user:retrieve:bot",
6455
+ "pluginAlias": "@catafal/notion-cli",
6456
+ "pluginName": "@catafal/notion-cli",
6457
+ "pluginType": "core",
6458
+ "strict": true,
6459
+ "enableJsonFlag": false,
6460
+ "isESM": false,
6461
+ "relativePath": [
6462
+ "dist",
6463
+ "commands",
6464
+ "user",
6465
+ "retrieve",
6466
+ "bot.js"
6467
+ ]
6468
6468
  }
6469
6469
  },
6470
- "version": "5.9.0"
6470
+ "version": "5.9.1"
6471
6471
  }