├── .github └── workflows │ └── ruby.yml ├── .gitignore ├── .rubocop.yml ├── .ruby-version ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── jekyll-notion.gemspec ├── lib ├── jekyll-notion.rb └── jekyll-notion │ ├── abstract_notion_resource.rb │ ├── cacheable.rb │ ├── document_without_a_file.rb │ ├── factories │ ├── database_factory.rb │ └── page_factory.rb │ ├── generator.rb │ ├── generators │ ├── abstract_generator.rb │ ├── collection_generator.rb │ ├── data_generator.rb │ └── page_generator.rb │ ├── notion_database.rb │ ├── notion_page.rb │ ├── page_without_a_file.rb │ └── version.rb ├── renovate.json └── spec ├── fixtures ├── my_site │ ├── _config.yml │ ├── _data │ │ └── dummy.yml │ └── _layouts │ │ └── post.html ├── my_site_2 │ ├── _config.yml │ ├── _layouts │ │ └── post.html │ └── _posts │ │ ├── 2022-01-01-my-post.md │ │ └── 2022-01-23-page-1.md └── vcr_cassettes │ ├── notion_database.yml │ └── notion_page.yml ├── jekyll-notion_spec.rb ├── spec_helper.rb └── support ├── collection.rb ├── data.rb ├── notion_token.rb ├── page.rb └── page_data.rb /.github/workflows/ruby.yml: -------------------------------------------------------------------------------- 1 | # This workflow uses actions that are not certified by GitHub. 2 | # They are provided by a third-party and are governed by 3 | # separate terms of service, privacy policy, and support 4 | # documentation. 5 | # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake 6 | # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby 7 | 8 | name: Ruby 9 | 10 | on: 11 | push: 12 | branches: [ "main", "v2.x.x" ] 13 | pull_request: 14 | branches: [ "main" ] 15 | 16 | permissions: 17 | contents: read 18 | 19 | jobs: 20 | test: 21 | 22 | runs-on: ubuntu-latest 23 | strategy: 24 | matrix: 25 | ruby-version: ['2.7', '3.0', '3.1', '3.2'] 26 | 27 | steps: 28 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 29 | - name: Set up Ruby 30 | uses: ruby/setup-ruby@v1 31 | with: 32 | ruby-version: ${{ matrix.ruby-version }} 33 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 34 | - name: Run tests 35 | run: NOTION_TOKEN=dummy_secret_token bundle exec rspec 36 | - name: Archive code coverage results 37 | uses: actions/upload-artifact@v4 38 | with: 39 | name: code-coverage-report-${{ matrix.ruby-version }} 40 | path: coverage-${{ matrix.ruby-version }} 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | /.config 4 | /coverage/ 5 | /InstalledFiles 6 | /pkg/ 7 | /spec/reports/ 8 | /spec/examples.txt 9 | /spec/dest/ 10 | /test/tmp/ 11 | /test/version_tmp/ 12 | /tmp/ 13 | 14 | # Used by dotenv library to load environment variables. 15 | .env 16 | 17 | # Ignore Byebug command history file. 18 | .byebug_history 19 | 20 | ## Specific to RubyMotion: 21 | .dat* 22 | .repl_history 23 | build/ 24 | *.bridgesupport 25 | build-iPhoneOS/ 26 | build-iPhoneSimulator/ 27 | 28 | ## Specific to RubyMotion (use of CocoaPods): 29 | # 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 33 | # 34 | # vendor/Pods/ 35 | 36 | ## Documentation cache and generated files: 37 | /.yardoc/ 38 | /_yardoc/ 39 | /doc/ 40 | /rdoc/ 41 | 42 | ## Environment normalization: 43 | /.bundle/ 44 | /vendor/bundle 45 | /lib/bundler/man/ 46 | 47 | # for a library or gem, you might want to ignore these files since the code is 48 | # intended to run in multiple environments; otherwise, check them in: 49 | # Gemfile.lock 50 | # .ruby-version 51 | # .ruby-gemset 52 | 53 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 54 | .rvmrc 55 | 56 | # Used by RuboCop. Remote config files pulled in from inherit_from directive. 57 | # .rubocop-https?--* 58 | 59 | .jekyll-cache 60 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | require: rubocop-jekyll 2 | inherit_gem: 3 | rubocop-jekyll: .rubocop.yml 4 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.7.8 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | gemspec 5 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | PATH 2 | remote: . 3 | specs: 4 | jekyll-notion (2.4.3) 5 | jekyll (>= 3.7, < 5.0) 6 | notion-ruby-client (~> 1.2.0) 7 | notion_to_md (~> 2.5.0) 8 | vcr (~> 6.3.1) 9 | 10 | GEM 11 | remote: https://rubygems.org/ 12 | specs: 13 | activesupport (7.1.5.1) 14 | base64 15 | benchmark (>= 0.3) 16 | bigdecimal 17 | concurrent-ruby (~> 1.0, >= 1.0.2) 18 | connection_pool (>= 2.2.5) 19 | drb 20 | i18n (>= 1.6, < 2) 21 | logger (>= 1.4.2) 22 | minitest (>= 5.1) 23 | mutex_m 24 | securerandom (>= 0.3) 25 | tzinfo (~> 2.0) 26 | addressable (2.8.7) 27 | public_suffix (>= 2.0.2, < 7.0) 28 | ast (2.4.3) 29 | base64 (0.2.0) 30 | benchmark (0.4.0) 31 | bigdecimal (3.1.9) 32 | callee (0.3.6) 33 | dry-initializer (>= 2.5) 34 | colorator (1.1.0) 35 | concurrent-ruby (1.3.5) 36 | connection_pool (2.5.1) 37 | csv (3.3.4) 38 | diff-lcs (1.6.1) 39 | docile (1.4.1) 40 | drb (2.2.1) 41 | dry-initializer (3.1.1) 42 | em-websocket (0.5.3) 43 | eventmachine (>= 0.12.9) 44 | http_parser.rb (~> 0) 45 | eventmachine (1.2.7) 46 | faraday (2.8.1) 47 | base64 48 | faraday-net_http (>= 2.0, < 3.1) 49 | ruby2_keywords (>= 0.0.4) 50 | faraday-mashify (1.0.0) 51 | faraday (~> 2.0) 52 | hashie 53 | faraday-multipart (1.1.0) 54 | multipart-post (~> 2.0) 55 | faraday-net_http (3.0.2) 56 | ffi (1.17.2) 57 | ffi (1.17.2-x86_64-darwin) 58 | forwardable-extended (2.6.0) 59 | google-protobuf (3.25.6) 60 | google-protobuf (3.25.6-x86_64-darwin) 61 | hashie (5.0.0) 62 | http_parser.rb (0.8.0) 63 | i18n (1.14.7) 64 | concurrent-ruby (~> 1.0) 65 | jekyll (4.4.1) 66 | addressable (~> 2.4) 67 | base64 (~> 0.2) 68 | colorator (~> 1.0) 69 | csv (~> 3.0) 70 | em-websocket (~> 0.5) 71 | i18n (~> 1.0) 72 | jekyll-sass-converter (>= 2.0, < 4.0) 73 | jekyll-watch (~> 2.0) 74 | json (~> 2.6) 75 | kramdown (~> 2.3, >= 2.3.1) 76 | kramdown-parser-gfm (~> 1.0) 77 | liquid (~> 4.0) 78 | mercenary (~> 0.3, >= 0.3.6) 79 | pathutil (~> 0.9) 80 | rouge (>= 3.0, < 5.0) 81 | safe_yaml (~> 1.0) 82 | terminal-table (>= 1.8, < 4.0) 83 | webrick (~> 1.7) 84 | jekyll-sass-converter (3.0.0) 85 | sass-embedded (~> 1.54) 86 | jekyll-watch (2.2.1) 87 | listen (~> 3.0) 88 | json (2.10.2) 89 | kramdown (2.5.1) 90 | rexml (>= 3.3.9) 91 | kramdown-parser-gfm (1.1.0) 92 | kramdown (~> 2.0) 93 | language_server-protocol (3.17.0.4) 94 | liquid (4.0.4) 95 | listen (3.9.0) 96 | rb-fsevent (~> 0.10, >= 0.10.3) 97 | rb-inotify (~> 0.9, >= 0.9.10) 98 | logger (1.7.0) 99 | mercenary (0.4.0) 100 | minitest (5.25.5) 101 | multipart-post (2.4.1) 102 | mutex_m (0.3.0) 103 | notion-ruby-client (1.2.2) 104 | faraday (>= 2.0) 105 | faraday-mashify (>= 0.1.1) 106 | faraday-multipart (>= 1.0.4) 107 | hashie (~> 5) 108 | notion_to_md (2.5.1) 109 | activesupport (~> 7) 110 | callee (~> 0.3.6) 111 | notion-ruby-client (~> 1) 112 | parallel (1.27.0) 113 | parser (3.3.8.0) 114 | ast (~> 2.4.1) 115 | racc 116 | pathutil (0.16.2) 117 | forwardable-extended (~> 2.6) 118 | prism (1.4.0) 119 | public_suffix (5.1.1) 120 | racc (1.8.1) 121 | rainbow (3.1.1) 122 | rake (13.2.1) 123 | rb-fsevent (0.11.2) 124 | rb-inotify (0.11.1) 125 | ffi (~> 1.0) 126 | regexp_parser (2.10.0) 127 | rexml (3.4.1) 128 | rouge (4.5.1) 129 | rspec (3.13.0) 130 | rspec-core (~> 3.13.0) 131 | rspec-expectations (~> 3.13.0) 132 | rspec-mocks (~> 3.13.0) 133 | rspec-core (3.13.3) 134 | rspec-support (~> 3.13.0) 135 | rspec-expectations (3.13.3) 136 | diff-lcs (>= 1.2.0, < 2.0) 137 | rspec-support (~> 3.13.0) 138 | rspec-mocks (3.13.2) 139 | diff-lcs (>= 1.2.0, < 2.0) 140 | rspec-support (~> 3.13.0) 141 | rspec-support (3.13.2) 142 | rubocop (1.57.2) 143 | json (~> 2.3) 144 | language_server-protocol (>= 3.17.0) 145 | parallel (~> 1.10) 146 | parser (>= 3.2.2.4) 147 | rainbow (>= 2.2.2, < 4.0) 148 | regexp_parser (>= 1.8, < 3.0) 149 | rexml (>= 3.2.5, < 4.0) 150 | rubocop-ast (>= 1.28.1, < 2.0) 151 | ruby-progressbar (~> 1.7) 152 | unicode-display_width (>= 2.4.0, < 3.0) 153 | rubocop-ast (1.44.1) 154 | parser (>= 3.3.7.2) 155 | prism (~> 1.4) 156 | rubocop-jekyll (0.14.0) 157 | rubocop (~> 1.57.0) 158 | rubocop-performance (~> 1.2) 159 | rubocop-performance (1.23.1) 160 | rubocop (>= 1.48.1, < 2.0) 161 | rubocop-ast (>= 1.31.1, < 2.0) 162 | ruby-progressbar (1.13.0) 163 | ruby2_keywords (0.0.5) 164 | safe_yaml (1.0.5) 165 | sass-embedded (1.63.6) 166 | google-protobuf (~> 3.23) 167 | rake (>= 13.0.0) 168 | sass-embedded (1.63.6-x86_64-darwin) 169 | google-protobuf (~> 3.23) 170 | securerandom (0.3.2) 171 | simplecov (0.22.0) 172 | docile (~> 1.1) 173 | simplecov-html (~> 0.11) 174 | simplecov_json_formatter (~> 0.1) 175 | simplecov-html (0.13.1) 176 | simplecov_json_formatter (0.1.4) 177 | terminal-table (3.0.2) 178 | unicode-display_width (>= 1.1.1, < 3) 179 | tzinfo (2.0.6) 180 | concurrent-ruby (~> 1.0) 181 | unicode-display_width (2.6.0) 182 | vcr (6.3.1) 183 | base64 184 | webrick (1.9.1) 185 | 186 | PLATFORMS 187 | ruby 188 | x86_64-darwin-19 189 | 190 | DEPENDENCIES 191 | bundler (~> 2) 192 | jekyll-notion! 193 | rspec (~> 3.0) 194 | rubocop-jekyll (~> 0.12) 195 | simplecov (~> 0.21) 196 | 197 | BUNDLED WITH 198 | 2.4.20 199 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Enrique Arias 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jekyll-notion 2 | 3 | Import notion pages to jekyll. 4 | 5 | You can learn more about how to use jekyll-notion with the following links: 6 | 7 | * [Load notion pages in jekyll](https://enrq.me/dev/2022/03/20/load-notion-pages-in-jekyll/) 8 | * [Managing Jekyll posts in Notion](https://enrq.me/dev/2022/03/24/managing-jekyll-posts-in-notion/) 9 | * [Embedding videos with jekyll-notion](https://enrq.me/dev/2023/03/31/embedding-videos-with-jekyll-notion/) 10 | 11 | ## Installation 12 | 13 | Use gem to install. 14 | ```bash 15 | $ gem install 'jekyll-notion' 16 | ``` 17 | 18 | Or add it to the `Gemfile`. 19 | ```ruby 20 | # Gemfile 21 | gem 'jekyll-notion' 22 | ``` 23 | 24 | > [!IMPORTANT] 25 | > When using jekyll-archives, make sure that jekyll-notion is placed before jekyll-archives in the gemfile. Otherwise pages imported by jekyll-notion won't be collected by jekyll-archives. More info [here](https://github.com/emoriarty/jekyll-notion/issues/95#issuecomment-2732112458). 26 | 27 | And update your jekyll plugins property in `_config.yml`. 28 | 29 | ```yml 30 | plugins: 31 | - jekyll-notion 32 | ``` 33 | 34 | ## Usage 35 | 36 | Before using the gem, create an integration and generate a secret token. For more in-depth instructions, refer to the Notion "Getting Started" [guide](https://developers.notion.com/docs/getting-started). 37 | 38 | Once you have your secret token, make sure to export it into an environment variable named `NOTION_TOKEN`. 39 | 40 | ```bash 41 | $ export NOTION_TOKEN= 42 | ``` 43 | 44 | ### Databases 45 | 46 | Once the [notion database](https://developers.notion.com/docs/working-with-databases) has been shared, specify the database `id` in the `_config.yml` file as follows. 47 | 48 | ```yml 49 | notion: 50 | databases: 51 | - id: 5cfed4de3bdc4f43ae8ba653a7a2219b 52 | ``` 53 | 54 | By default, the notion pages in the database will be loaded into the `posts` collection. 55 | 56 | We can also define __multiple databases__ as follows. 57 | 58 | ```yml 59 | collections: 60 | - recipes 61 | - films 62 | 63 | notion: 64 | databases: 65 | - id: b0e688e199af4295ae80b67eb52f2e2f 66 | - id: 2190450d4cb34739a5c8340c4110fe21 67 | collection: recipes 68 | - id: e42383cd49754897b967ce453760499f 69 | collection: films 70 | ``` 71 | 72 | After running `jekyll build` (or `serve`) command, the `posts`, `recipes` and `films` collections will be loaded with pages from the notion databases. 73 | 74 | #### Database options 75 | 76 | Each dabatase support the following options. 77 | 78 | * `id`: the notion database unique identifier, 79 | * `collection`: the collection each page belongs to (posts by default), 80 | * `filter`: the database [filter property](https://developers.notion.com/reference/post-database-query-filter), 81 | * `sorts`: the database [sorts criteria](https://developers.notion.com/reference/post-database-query-sort), 82 | 83 | ```yml 84 | notion: 85 | databases: 86 | - id: e42383cd49754897b967ce453760499f 87 | collection: posts 88 | filter: { "property": "Published", "checkbox": { "equals": true } } 89 | sorts: [{ "timestamp": "created_time", "direction": "ascending" }] 90 | ``` 91 | 92 | #### Posts date 93 | 94 | The `created_time` property of a notion page is used to set the date in the post filename. This is the date used for the `date` variable of the [predefined variables for posts](https://jekyllrb.com/docs/front-matter/#predefined-variables-for-posts). 95 | 96 | It's important to note that the `created_time` cannot be modifed. However, if you wish to change the date of a post, you can create a new page property named "date" (or "Date"). This way, the posts collection will use the `date` property for the post date variable instead of the `created_time`. 97 | 98 | ### Pages 99 | 100 | Individual Notion pages can also be loaded into Jekyll. Just define the `page` property as follows. 101 | 102 | ```yml 103 | notion: 104 | pages: 105 | - id: 5cfed4de3bdc4f43ae8ba653a7a2219b 106 | ``` 107 | 108 | As databases, we can set up multiple pages. 109 | 110 | ```yaml 111 | notion: 112 | pages: 113 | - id: e42383cd49754897b967ce453760499f 114 | - id: b0e688e199af4295ae80b67eb52f2e2f 115 | - id: 2190450d4cb34739a5c8340c4110fe21 116 | ``` 117 | 118 | The filename of the generated page is the notion page title. Check [below](#page-filename) for more info. 119 | 120 | All properties assigned to a notion page will be interpreted by jekyll as front matter. For example, if the [permalink](https://jekyllrb.com/docs/permalinks/#front-matter) property is set to `/about/` in the notion page, jekyll will use it to create the corresponding path at the output directory at `/about/index.html`. 121 | 122 | ### Data 123 | 124 | Instead of storing the notion pages in a collection or in the pages list, you can assign them to the data object.Just declare the `data` property next to the page or database id. 125 | 126 | ```yml 127 | notion: 128 | databases: 129 | - id: b0e688e199af4295ae80b67eb52f2e2f 130 | - id: e42383cd49754897b967ce453760499f 131 | data: films 132 | pages: 133 | - id: e42383cd49754897b967ce453760499f 134 | - id: b0e688e199af4295ae80b67eb52f2e2f 135 | data: about 136 | ``` 137 | 138 | Page properties and body of the notion page are stored as a hash object. 139 | 140 | Data objects can be accessed as follows. 141 | 142 | ```html 143 | 148 | ``` 149 | 150 | Notice, the page body is stored in the key `content`. 151 | 152 | ```html 153 | {{ site.data.about.content }} 154 | ``` 155 | 156 | The rest of properties are mapped as expected. For more info go to [notion properties](#notion-properties). 157 | 158 | ### Watch (Deprecated) 159 | 160 | _Use the cache mechanism instead._ 161 | 162 | By default, databases are only requested during the first build. Subsequent builds use the results from the cache. 163 | 164 | Set `fetch_on_watch` to true to allow request on each rebuild. 165 | 166 | ```yml 167 | notion: 168 | fetch_on_watch: true 169 | databases: 170 | - id: e42383cd49754897b967ce453760499f 171 | ``` 172 | 173 | And that's all. Each page in the notion database will be included in the selected collection. 174 | 175 | ### Cache 176 | 177 | Starting from version 2.4.0, every request to Notion is cached locally. The cache enables the retrieval of Notion resources only during the first request. Subsequent requests are fetched from the cache, which can significantly reduce build times. 178 | 179 | The cache mechanism is based on the [vcr](https://github.com/vcr/vcr) gem, which records HTTP requests. Every Notion resource, whether it is a database or page, is stored in an independent file using the document ID as the filename. For example, a database ID e42383cd49754897b967ce453760499f will be stored in the following path: 180 | 181 | ```bash 182 | .cache/jekyll-notion/vcr_cassetes/e42383cd49754897b967ce453760499f.yml 183 | ``` 184 | 185 | **Note: The `cache` option invalidates the fetch_on_watch feature.** 186 | 187 | #### Cache folder 188 | 189 | By default, the cache folder is `.cache/jekyll-notion/vcr_cassetes`, but you can change this folder by setting the `cache_dir` property in the `_config.yml` file as follows. 190 | 191 | ```yaml 192 | notion: 193 | cache_dir: another/folder 194 | ``` 195 | 196 | The path must be relative to the working folder. 197 | 198 | #### Cleaning cache 199 | 200 | To clear the cache, delete the cache folder. If you want to remove a specific cache file, locate the file that matches the Notion resource ID and delete it. 201 | 202 | #### Disabling cache 203 | 204 | If you're not interested in the cache or you just want to disable it, set the ˋcache` option to false. 205 | 206 | ```yaml 207 | notion: 208 | cache: false 209 | ``` 210 | 211 | ## Notion properties 212 | 213 | Notion page properties are set for each document in the front matter. 214 | 215 | Please, refer to the [notion_to_md](https://github.com/emoriarty/notion_to_md/) gem to learn more. 216 | 217 | ## Page filename 218 | 219 | There are two kinds of documents in Jekyll: posts and others. 220 | 221 | When the document is a post, the filename format contains the `created_time` property plus the page title as specified in [jekyll docs](https://jekyllrb.com/docs/posts/#creating-posts). 222 | 223 | ``` 224 | YEAR-MONTH-DAY-title.MARKUP 225 | ``` 226 | 227 | The filename for any other document is the page title. 228 | -------------------------------------------------------------------------------- /jekyll-notion.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative "lib/jekyll-notion/version" 4 | 5 | Gem::Specification.new do |spec| 6 | spec.name = "jekyll-notion" 7 | spec.version = JekyllNotion::VERSION 8 | spec.authors = ["Enrique Arias"] 9 | spec.email = ["emoriarty81@gmail.com"] 10 | spec.summary = "A Jekyll plugin to generate pages from Notion" 11 | spec.homepage = "https://github.com/emoriarty/jekyll-notion" 12 | spec.license = "MIT" 13 | 14 | spec.files = Dir["lib/**/*", "README.md"] 15 | spec.extra_rdoc_files = Dir["README.md", "LICENSE.txt"] 16 | # spec.test_files = spec.files.grep(%r!^spec/!) 17 | spec.require_paths = ["lib"] 18 | 19 | spec.required_ruby_version = ">= 2.7.0" 20 | 21 | spec.add_dependency "jekyll", ">= 3.7", "< 5.0" 22 | spec.add_dependency "notion-ruby-client", "~> 1.2.0" 23 | spec.add_dependency "notion_to_md", "~> 2.5.0" 24 | spec.add_dependency "vcr", "~> 6.3.1" 25 | 26 | spec.add_development_dependency "bundler", "~> 2" 27 | spec.add_development_dependency "rspec", "~> 3.0" 28 | spec.add_development_dependency "rubocop-jekyll", "~> 0.12" 29 | spec.add_development_dependency "simplecov", "~> 0.21" 30 | end 31 | -------------------------------------------------------------------------------- /lib/jekyll-notion.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "jekyll" 4 | require "notion" 5 | require "notion_to_md" 6 | require "logger" 7 | require "jekyll-notion/generator" 8 | require "vcr" 9 | 10 | NotionToMd::Logger.level = Logger::ERROR 11 | 12 | Notion.configure do |config| 13 | config.token = ENV.fetch("NOTION_TOKEN", nil) 14 | end 15 | 16 | module JekyllNotion 17 | autoload :DatabaseFactory, "jekyll-notion/factories/database_factory" 18 | autoload :PageFactory, "jekyll-notion/factories/page_factory" 19 | autoload :AbstractGenerator, "jekyll-notion/generators/abstract_generator" 20 | autoload :DataGenerator, "jekyll-notion/generators/data_generator" 21 | autoload :PageGenerator, "jekyll-notion/generators/page_generator" 22 | autoload :CollectionGenerator, "jekyll-notion/generators/collection_generator" 23 | autoload :DocumentWithoutAFile, "jekyll-notion/document_without_a_file" 24 | autoload :PageWithoutAFile, "jekyll-notion/page_without_a_file" 25 | autoload :AbstractNotionResource, "jekyll-notion/abstract_notion_resource" 26 | autoload :NotionDatabase, "jekyll-notion/notion_database" 27 | autoload :NotionPage, "jekyll-notion/notion_page" 28 | autoload :Cacheable, "jekyll-notion/cacheable" 29 | end 30 | -------------------------------------------------------------------------------- /lib/jekyll-notion/abstract_notion_resource.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class AbstractNotionResource 5 | def initialize(config:) 6 | @notion = Notion::Client.new 7 | @config = config 8 | end 9 | 10 | def config 11 | @config || {} 12 | end 13 | 14 | def id 15 | config["id"] 16 | end 17 | 18 | def fetch 19 | raise "Do not use the AbstractNotionResource class. Implement the fetch method in a subclass." 20 | end 21 | 22 | def collection_name 23 | raise "Do not use the AbstractGenerator class. Implement the collection_name method in a subclass." 24 | end 25 | 26 | def data_name 27 | raise "Do not use the AbstractGenerator class. Implement the data_name method in a subclass." 28 | end 29 | 30 | protected 31 | 32 | def id? 33 | if id.nil? || id.empty? 34 | Jekyll.logger.warn("Jekyll Notion:", 35 | "Database or page id is not provided. Cannot read from Notion.") 36 | return false 37 | end 38 | true 39 | end 40 | 41 | def build_blocks(block_id) 42 | NotionToMd::Blocks.build(:block_id => block_id) do |nested_id| 43 | @notion.block_children({ :block_id => nested_id }) 44 | end 45 | end 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /lib/jekyll-notion/cacheable.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # 4 | 5 | module JekyllNotion 6 | module Cacheable 7 | def self.setup(cache_dir) 8 | # Using VCR to record and playback Notion API responses for caching 9 | VCR.configure do |config| 10 | config.cassette_library_dir = cache_path(cache_dir) 11 | config.hook_into :faraday # Faraday is used by notion-ruby-client gem 12 | config.filter_sensitive_data("") { ENV.fetch("NOTION_TOKEN", nil) } 13 | config.allow_http_connections_when_no_cassette = true 14 | config.default_cassette_options = { 15 | :allow_playback_repeats => true, 16 | :record => :new_episodes, 17 | } 18 | end 19 | end 20 | 21 | def self.cache_path(path = nil) 22 | if path.nil? 23 | File.join(Dir.getwd, ".cache", "jekyll-notion", "vcr_cassettes") 24 | else 25 | File.join(Dir.getwd, path) 26 | end 27 | end 28 | 29 | def generate(*args) 30 | VCR.use_cassette(resource_id) { super(*args) } 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /lib/jekyll-notion/document_without_a_file.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class DocumentWithoutAFile < Jekyll::Document 5 | def read_content(**_opts) 6 | if content =~ YAML_FRONT_MATTER_REGEXP 7 | self.content = Regexp.last_match.post_match 8 | data_file = SafeYAML.load(Regexp.last_match(1)) 9 | merge_data!(data_file, :source => "YAML front matter") if data_file 10 | end 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/jekyll-notion/factories/database_factory.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class DatabaseFactory 5 | def self.for(notion_resource:, site:, plugin:) 6 | if notion_resource.data_name.nil? 7 | CollectionGenerator.new(:notion_resource => notion_resource, :site => site, 8 | :plugin => plugin) 9 | else 10 | DataGenerator.new(:notion_resource => notion_resource, :site => site, :plugin => plugin) 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/jekyll-notion/factories/page_factory.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class PageFactory 5 | def self.for(notion_resource:, site:, plugin:) 6 | if notion_resource.data_name.nil? 7 | PageGenerator.new(:notion_resource => notion_resource, :site => site, 8 | :plugin => plugin) 9 | else 10 | DataGenerator.new(:notion_resource => notion_resource, :site => site, :plugin => plugin) 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/jekyll-notion/generator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class Generator < Jekyll::Generator 5 | attr_reader :current_page, :current_db 6 | 7 | def generate(site) 8 | @site = site 9 | 10 | return unless notion_token? && config? 11 | 12 | setup 13 | 14 | if fetch_on_watch? || cache_empty? 15 | read_notion_databases 16 | read_notion_pages 17 | else 18 | collections.each_pair { |key, val| @site.collections[key] = val } 19 | data.each_pair { |key, val| @site.data[key] = val } 20 | pages.each { |page| @site.pages << page } 21 | end 22 | end 23 | 24 | def config_databases 25 | if config["database"] 26 | Jekyll.logger.warn("Jekyll Notion:", 27 | "database property is deprecated, use databases instead.") 28 | end 29 | 30 | config["databases"] || [] 31 | end 32 | 33 | def config_pages 34 | if config["page"] 35 | Jekyll.logger.warn("Jekyll Notion:", 36 | "page property is deprecated, use pages instead.") 37 | end 38 | config["pages"] || [] 39 | end 40 | 41 | def collections 42 | @collections ||= {} 43 | end 44 | 45 | def data 46 | @data ||= {} 47 | end 48 | 49 | def pages 50 | @pages ||= [] 51 | end 52 | 53 | protected 54 | 55 | def cache_empty? 56 | collections.empty? && pages.empty? && data.empty? 57 | end 58 | 59 | def read_notion_databases 60 | config_databases.each do |db_config| 61 | db = NotionDatabase.new(:config => db_config) 62 | DatabaseFactory.for(:notion_resource => db, :site => @site, :plugin => self).generate 63 | end 64 | end 65 | 66 | def read_notion_pages 67 | config_pages.each do |page_config| 68 | page = NotionPage.new(:config => page_config) 69 | PageFactory.for(:notion_resource => page, :site => @site, :plugin => self).generate 70 | end 71 | end 72 | 73 | def config 74 | @config ||= @site.config["notion"] || {} 75 | end 76 | 77 | def fetch_on_watch? 78 | Jekyll.logger.warn("Jekyll Notion:", 79 | "[Warning] The fetch_on_watch feature is deprecated in preference to the cache mechanism. It will be removed in the next major release.") 80 | 81 | config["fetch_on_watch"] == true 82 | end 83 | 84 | def notion_token? 85 | if ENV["NOTION_TOKEN"].nil? || ENV["NOTION_TOKEN"].empty? 86 | Jekyll.logger.warn("Jekyll Notion:", 87 | "Cannot read from Notion becuase NOTION_TOKEN was not provided") 88 | return false 89 | end 90 | true 91 | end 92 | 93 | def config? 94 | if config.empty? 95 | Jekyll.logger.warn("Jekyll Notion:", "No configuration provided") 96 | return false 97 | end 98 | true 99 | end 100 | 101 | def setup 102 | # Cache Notion API responses 103 | if ENV["JEKYLL_ENV"] != "test" && cache? 104 | JekyllNotion::Cacheable.setup(config["cache_dir"]) 105 | JekyllNotion::CollectionGenerator.prepend(JekyllNotion::Cacheable) 106 | JekyllNotion::PageGenerator.prepend(JekyllNotion::Cacheable) 107 | JekyllNotion::DataGenerator.prepend(JekyllNotion::Cacheable) 108 | end 109 | end 110 | 111 | def cache? 112 | return true if config["cache"].nil? 113 | 114 | config["cache"] == true.to_s 115 | end 116 | end 117 | end 118 | -------------------------------------------------------------------------------- /lib/jekyll-notion/generators/abstract_generator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class AbstractGenerator 5 | def initialize(notion_resource:, site:, plugin:) 6 | @notion_resource = notion_resource 7 | @site = site 8 | @plugin = plugin 9 | end 10 | 11 | def generate 12 | raise "Do not use the AbstractGenerator class. Implement the generate method in a subclass." 13 | end 14 | 15 | def resource_id 16 | @notion_resource.id 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /lib/jekyll-notion/generators/collection_generator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class CollectionGenerator < AbstractGenerator 5 | def generate 6 | @notion_resource.fetch.each do |page| 7 | next if file_exists?(make_path(page)) 8 | 9 | collection.docs << make_doc(page) 10 | log_new_page(page) 11 | end 12 | # Caching current collection 13 | @plugin.collections[@notion_resource.collection_name] = collection 14 | end 15 | 16 | def collection 17 | @site.collections[@notion_resource.collection_name] 18 | end 19 | 20 | private 21 | 22 | # Checks if a file already exists in the site source 23 | def file_exists?(file_path) 24 | File.exist? @site.in_source_dir(file_path) 25 | end 26 | 27 | def make_doc(page) 28 | new_post = DocumentWithoutAFile.new( 29 | make_path(page), 30 | { :site => @site, :collection => collection } 31 | ) 32 | new_post.content = make_md(page) 33 | new_post.read 34 | new_post 35 | end 36 | 37 | def make_path(page) 38 | "_#{@notion_resource.collection_name}/#{make_filename(page)}" 39 | end 40 | 41 | def make_filename(page) 42 | if @notion_resource.collection_name == "posts" 43 | "#{date_for(page)}-#{Jekyll::Utils.slugify(page.title, :mode => "latin")}.md" 44 | else 45 | "#{Jekyll::Utils.slugify(page.title, :mode => "latin")}.md" 46 | end 47 | end 48 | 49 | def make_md(page) 50 | NotionToMd::Converter.new(:page_id => page.id).convert(:frontmatter => true) 51 | end 52 | 53 | def log_new_page(page) 54 | Jekyll.logger.info("Jekyll Notion:", "Page => #{page.title}") 55 | if @site.config.dig( 56 | "collections", @notion_resource.collection_name, "output" 57 | ) 58 | Jekyll.logger.info("", 59 | "URL => #{collection.docs.last.url}") 60 | end 61 | Jekyll.logger.debug("", "Props => #{collection.docs.last.data.keys.inspect}") 62 | end 63 | 64 | def date_for(page) 65 | # The "date" property overwrites the Jekyll::Document#data["date"] key 66 | # which is the date used by Jekyll to set the post date. 67 | Time.parse(page.props["date"]).to_date 68 | rescue TypeError, NoMethodError 69 | # Because the "date" property is not required, 70 | # it fallbacks to the created_time which is always present. 71 | Time.parse(page.created_time).to_date 72 | end 73 | end 74 | end 75 | -------------------------------------------------------------------------------- /lib/jekyll-notion/generators/data_generator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class DataGenerator < AbstractGenerator 5 | def generate 6 | unless data.nil? 7 | @site.data[@notion_resource.data_name] = data 8 | # Caching current data in Generator instance (plugin) 9 | @plugin.data[@notion_resource.data_name] = data 10 | log_pages 11 | end 12 | end 13 | 14 | private 15 | 16 | def data 17 | @data ||= if @notion_resource.is_a?(NotionDatabase) 18 | pages = @notion_resource.fetch 19 | pages.map { |page| page.props.merge({ "content" => convert(page) }) } 20 | else 21 | page = @notion_resource.fetch 22 | page&.props&.merge({ "content" => convert(page) }) 23 | end 24 | end 25 | 26 | # Convert the notion page body using the site.converters. 27 | # 28 | # Returns String the converted content. 29 | def convert(page) 30 | converters.reduce(page.body) do |output, converter| 31 | converter.convert(output) 32 | rescue StandardError => e 33 | Jekyll.logger.error "Conversion error:", 34 | "#{converter.class} encountered an error while " \ 35 | "converting notion page '#{page.title}':" 36 | Jekyll.logger.error("", e.to_s) 37 | raise e 38 | end 39 | end 40 | 41 | def converters 42 | @converters ||= @site.converters.select { |c| c.matches(".md") }.tap(&:sort!) 43 | end 44 | 45 | def log_pages 46 | if data.is_a?(Array) 47 | data.each { |page| log_page(page, Array.to_s) } 48 | else 49 | log_page(data, Hash.to_s) 50 | end 51 | end 52 | 53 | def log_page(page, type) 54 | Jekyll.logger.info("Jekyll Notion:", "Page => #{page["title"]}") 55 | Jekyll.logger.info("", "#{type} => site.data.#{@notion_resource.data_name}") 56 | Jekyll.logger.debug("", "Props => #{page.keys.inspect}") 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /lib/jekyll-notion/generators/page_generator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class PageGenerator < AbstractGenerator 5 | def generate 6 | notion_page = @notion_resource.fetch 7 | unless notion_page.nil? 8 | page = make_page(notion_page) 9 | @site.pages << page 10 | log_page(notion_page) 11 | @plugin.pages << page 12 | end 13 | end 14 | 15 | def make_page(notion_page) 16 | JekyllNotion::PageWithoutAFile.new(@site, @site.source, "", "#{notion_page.title}.md", 17 | make_md) 18 | end 19 | 20 | def log_page(notion_page) 21 | Jekyll.logger.info("Jekyll Notion:", "Page => #{notion_page.title}") 22 | Jekyll.logger.info("", "URL => #{@site.pages.last.url}") 23 | Jekyll.logger.debug("", "Props => #{notion_page.props.keys.inspect}") 24 | end 25 | 26 | def make_md 27 | NotionToMd::Converter.new(:page_id => @notion_resource.id).convert(:frontmatter => true) 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /lib/jekyll-notion/notion_database.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class NotionDatabase < AbstractNotionResource 5 | # Returns an empty array or a NotionToMd:Page array 6 | def fetch 7 | return [] unless id? 8 | 9 | @fetch ||= @notion.database_query(query)[:results].map do |page| 10 | NotionToMd::Page.new(:page => page, :blocks => build_blocks(page.id)) 11 | end 12 | end 13 | 14 | def filter 15 | config["filter"] 16 | end 17 | 18 | def sorts 19 | if config["sort"] 20 | Jekyll.logger.warn("Jekyll Notion:", "sort property is deprecated, use sorts instead") 21 | end 22 | config["sorts"] 23 | end 24 | 25 | def collection_name 26 | config["collection"] || "posts" 27 | end 28 | 29 | def data_name 30 | config["data"] 31 | end 32 | 33 | private 34 | 35 | def query 36 | { :database_id => id, :filter => filter, :sorts => sorts }.compact 37 | end 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /lib/jekyll-notion/notion_page.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class NotionPage < AbstractNotionResource 5 | # Returns the nil or a NotionToMd::Page instance 6 | def fetch 7 | return nil unless id? 8 | 9 | @fetch ||= NotionToMd::Page.new(:page => @notion.page({ :page_id => id }), 10 | :blocks => build_blocks(id)) 11 | end 12 | 13 | def data_name 14 | config["data"] 15 | end 16 | 17 | def collection_name 18 | nil 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /lib/jekyll-notion/page_without_a_file.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | class PageWithoutAFile < Jekyll::Page 5 | def initialize(site, base, dir, name, new_content) 6 | self.content = new_content 7 | super(site, base, dir, name) 8 | end 9 | 10 | def read_yaml(base, name, _opts = {}) 11 | filename = @path || site.in_source_dir(base, name) 12 | Jekyll.logger.debug "Reading:", relative_path 13 | 14 | begin 15 | if content =~ Jekyll::Document::YAML_FRONT_MATTER_REGEXP 16 | self.content = Regexp.last_match.post_match 17 | self.data = SafeYAML.load(Regexp.last_match(1)) 18 | end 19 | rescue Psych::SyntaxError => e 20 | Jekyll.logger.warn "YAML Exception reading page #{name}: #{e.message}" 21 | raise e if site.config["strict_front_matter"] 22 | end 23 | 24 | self.data ||= {} 25 | 26 | validate_data! filename 27 | validate_permalink! filename 28 | 29 | self.data 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /lib/jekyll-notion/version.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module JekyllNotion 4 | VERSION = "2.4.3" 5 | end 6 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /spec/fixtures/my_site/_config.yml: -------------------------------------------------------------------------------- 1 | defaults: 2 | - 3 | scope: 4 | path: "" 5 | type: pages 6 | values: 7 | layout: some_default 8 | -------------------------------------------------------------------------------- /spec/fixtures/my_site/_data/dummy.yml: -------------------------------------------------------------------------------- 1 | - alpha: one 2 | beta: two 3 | gamma: three 4 | -------------------------------------------------------------------------------- /spec/fixtures/my_site/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | My site 6 | 7 | 8 | POST LAYOUT 9 | {{ content }} 10 | 11 | 12 | -------------------------------------------------------------------------------- /spec/fixtures/my_site_2/_config.yml: -------------------------------------------------------------------------------- 1 | defaults: 2 | - 3 | scope: 4 | path: "" 5 | type: pages 6 | values: 7 | layout: some_default 8 | -------------------------------------------------------------------------------- /spec/fixtures/my_site_2/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | My site 6 | 7 | 8 | POST LAYOUT 9 | {{ content }} 10 | 11 | 12 | -------------------------------------------------------------------------------- /spec/fixtures/my_site_2/_posts/2022-01-01-my-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: My Post 3 | --- 4 | Wow, what an amazing article! 5 | -------------------------------------------------------------------------------- /spec/fixtures/my_site_2/_posts/2022-01-23-page-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Page 1 3 | --- 4 | This post is a clone from the notion database 5 | -------------------------------------------------------------------------------- /spec/fixtures/vcr_cassettes/notion_page.yml: -------------------------------------------------------------------------------- 1 | --- 2 | http_interactions: 3 | - request: 4 | method: get 5 | uri: https://api.notion.com/v1/pages/9dc17c9c-9d2e-469d-bbf0-f9648f3288d3 6 | body: 7 | encoding: US-ASCII 8 | string: '' 9 | headers: 10 | Accept: 11 | - application/json; charset=utf-8 12 | User-Agent: 13 | - Notion Ruby Client/1.2.2 14 | Authorization: 15 | - "" 16 | Notion-Version: 17 | - '2022-02-22' 18 | response: 19 | status: 20 | code: 200 21 | message: OK 22 | headers: 23 | date: 24 | - Sun, 03 Dec 2023 06:50:50 GMT 25 | content-type: 26 | - application/json; charset=utf-8 27 | transfer-encoding: 28 | - chunked 29 | connection: 30 | - keep-alive 31 | x-powered-by: 32 | - Express 33 | x-notion-request-id: 34 | - 28173243-0c94-4a8a-86a6-2183b7d3fac5 35 | etag: 36 | - W/"107c-1S27W3rr32lJIEMAx8ms2ZzbO5U" 37 | vary: 38 | - Accept-Encoding 39 | content-encoding: 40 | - gzip 41 | cf-cache-status: 42 | - DYNAMIC 43 | set-cookie: 44 | - __cf_bm=tqc3fNsYSZ_Od7Nvd0DnPr2bL81aBFPkURFu6zuTUkc-1701586250-0-AbCPJcalBa13x/ir1xV4USyqONVdwDS73Cr86zmjsXJoXpl2P2EP9lWMvkfGKm8Fk6ug9dsBTREoU1PFi1T24rY=; 45 | path=/; expires=Sun, 03-Dec-23 07:20:50 GMT; domain=.notion.com; HttpOnly; 46 | Secure; SameSite=None 47 | server: 48 | - cloudflare 49 | cf-ray: 50 | - 82f9e0b04a4d2a25-CDG 51 | body: 52 | encoding: UTF-8 53 | string: "{\"object\":\"page\",\"id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\",\"created_time\":\"2022-01-23T12:31:00.000Z\",\"last_edited_time\":\"2023-12-02T22:09:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"cover\":{\"type\":\"external\",\"external\":{\"url\":\"https://www.notion.so/images/page-cover/met_canaletto_1720.jpg\"}},\"icon\":{\"type\":\"emoji\",\"emoji\":\"\U0001F4A5\"},\"parent\":{\"type\":\"database_id\",\"database_id\":\"1ae33dd5-f331-4402-9480-69517fa40ae2\"},\"archived\":false,\"properties\":{\"empty 54 | date\":{\"id\":\"%3A%7BfH\",\"type\":\"date\",\"date\":null},\"Multi Select\":{\"id\":\"%3C%7Bn%7B\",\"type\":\"multi_select\",\"multi_select\":[{\"id\":\"ddf5e30e-fde6-4023-98a4-864674e8ae87\",\"name\":\"mselect1\",\"color\":\"gray\"},{\"id\":\"1be80fca-a275-4384-8268-6bb2f6a21616\",\"name\":\"mselect2\",\"color\":\"pink\"},{\"id\":\"32e731fc-3fee-41d8-83f5-398b2981f1ac\",\"name\":\"mselect3\",\"color\":\"blue\"}]},\"Select\":{\"id\":\"%3EzjF\",\"type\":\"select\",\"select\":{\"id\":\"fa788fbc-176b-49cb-be2e-552cc985cf7c\",\"name\":\"select1\",\"color\":\"yellow\"}},\"date 55 | with time\":{\"id\":\"CUEj\",\"type\":\"date\",\"date\":{\"start\":\"2023-12-02T00:00:00.000+01:00\",\"end\":null,\"time_zone\":null}},\"Person\":{\"id\":\"TFSp\",\"type\":\"people\",\"people\":[{\"object\":\"user\",\"id\":\"a4e89628-577b-404f-b62b-36abe7f65fc7\",\"name\":\"Armando 56 | Broncas\",\"avatar_url\":\"https://s3-us-west-2.amazonaws.com/public.notion-static.com/3e0bf8de-83a5-4579-8088-5a35021ab9cc/Foto_Perfil_Slack.jpg\",\"type\":\"person\",\"person\":{\"email\":\"gjulia20@gmail.com\"}}]},\"Date\":{\"id\":\"T~YB\",\"type\":\"date\",\"date\":{\"start\":\"2021-12-30\",\"end\":null,\"time_zone\":null}},\"Tags\":{\"id\":\"UT%3Fx\",\"type\":\"multi_select\",\"multi_select\":[{\"id\":\"be6ae2f6-5ae4-496b-b413-f5e7dbeff2a8\",\"name\":\"tag1\",\"color\":\"green\"}]},\"Numbers\":{\"id\":\"a~dg\",\"type\":\"number\",\"number\":12},\"Rich 57 | Text\":{\"id\":\"jJWo\",\"type\":\"rich_text\",\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This 58 | is a \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"This 59 | is a \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"rich_text\",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"rich_text\",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\" 60 | property. With \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\" 61 | property. With \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"Italics\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Italics\",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\".\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\".\",\"href\":null}]},\"Phone\":{\"id\":\"k%5DEi\",\"type\":\"phone_number\",\"phone_number\":\"983788379\"},\"File\":{\"id\":\"x%60rF\",\"type\":\"files\",\"files\":[{\"name\":\"me.jpeg\",\"type\":\"file\",\"file\":{\"url\":\"https://prod-files-secure.s3.us-west-2.amazonaws.com/4783548e-2442-4bf3-bb3d-ed4ddd2dcdf0/23e8b74e-86d1-4b3a-bd9a-dd0415a954e4/me.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20231203%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20231203T065050Z&X-Amz-Expires=3600&X-Amz-Signature=c0b4d6da2da758e947be9abec351edebc1fdb115805aec69b85835954b0a597a&X-Amz-SignedHeaders=host&x-id=GetObject\",\"expiry_time\":\"2023-12-03T07:50:50.406Z\"}}]},\"empty 62 | rich text\":{\"id\":\"xtDO\",\"type\":\"rich_text\",\"rich_text\":[]},\"Email\":{\"id\":\"x%7Bcw\",\"type\":\"email\",\"email\":\"hola@test.com\"},\"Checkbox\":{\"id\":\"%7CMPu\",\"type\":\"checkbox\",\"checkbox\":false},\"empty_select\":{\"id\":\"%7DSr%3F\",\"type\":\"select\",\"select\":null},\"Name\":{\"id\":\"title\",\"type\":\"title\",\"title\":[{\"type\":\"text\",\"text\":{\"content\":\"Page 63 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Page 64 | 1\",\"href\":null}]}},\"url\":\"https://www.notion.so/Page-1-9dc17c9c9d2e469dbbf0f9648f3288d3\",\"public_url\":null,\"request_id\":\"28173243-0c94-4a8a-86a6-2183b7d3fac5\"}" 65 | recorded_at: Sun, 03 Dec 2023 06:50:50 GMT 66 | - request: 67 | method: get 68 | uri: https://api.notion.com/v1/blocks/9dc17c9c-9d2e-469d-bbf0-f9648f3288d3/children 69 | body: 70 | encoding: US-ASCII 71 | string: '' 72 | headers: 73 | Accept: 74 | - application/json; charset=utf-8 75 | User-Agent: 76 | - Notion Ruby Client/1.2.2 77 | Authorization: 78 | - "" 79 | Notion-Version: 80 | - '2022-02-22' 81 | response: 82 | status: 83 | code: 200 84 | message: OK 85 | headers: 86 | date: 87 | - Sun, 03 Dec 2023 06:50:51 GMT 88 | content-type: 89 | - application/json; charset=utf-8 90 | transfer-encoding: 91 | - chunked 92 | connection: 93 | - keep-alive 94 | x-powered-by: 95 | - Express 96 | x-notion-request-id: 97 | - 45da68e4-4780-43b7-8d0c-799ecb10ba3a 98 | etag: 99 | - W/"9639-CL+wD4uaB2WA9wkrd0qkQHg7bJ4" 100 | vary: 101 | - Accept-Encoding 102 | content-encoding: 103 | - gzip 104 | cf-cache-status: 105 | - DYNAMIC 106 | set-cookie: 107 | - __cf_bm=CmzN4XXlBshqsXF2OiFGqLI2AAq6y5qSY181DDuYWlY-1701586251-0-AfXYXAtK2H+En9n3rOdsQ8oWKgWnUILmKZylS8yEG7nvbU8ZxGwOUPfJVI90XszJRpqSRKo8V6WmILYpfNCd/lc=; 108 | path=/; expires=Sun, 03-Dec-23 07:20:51 GMT; domain=.notion.com; HttpOnly; 109 | Secure; SameSite=None 110 | server: 111 | - cloudflare 112 | cf-ray: 113 | - 82f9e0b21b0a2a2c-CDG 114 | body: 115 | encoding: UTF-8 116 | string: "{\"object\":\"list\",\"results\":[{\"object\":\"block\",\"id\":\"2c3c3f04-448f-4921-aed9-880094afe981\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"image\",\"image\":{\"caption\":[{\"type\":\"text\",\"text\":{\"content\":\"John 117 | Rambo having a coffee.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"John 118 | Rambo having a coffee.\",\"href\":null}],\"type\":\"external\",\"external\":{\"url\":\"https://media.gqmagazine.fr/photos/5bb5a42b46d32e001186b6b5/16:9/w_1280,c_limit/Rambo_Fist_blood_-_017photo1.jpg\"}}},{\"object\":\"block\",\"id\":\"9a95bfa9-9ae0-4df9-9edc-7071be3b5e9b\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_1\",\"heading_1\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 119 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 120 | 1\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"8531af87-084f-44ad-9765-8e3a95949e21\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 121 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 122 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 123 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 124 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 125 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 126 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 127 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 128 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 129 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 130 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 131 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 132 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 133 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 134 | tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"c0464dfa-79df-4900-b951-08bca090927a\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_2\",\"heading_2\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 135 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 136 | 2\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"3c508c22-3236-45e6-a87f-e0a56df99ba0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 137 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 138 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 139 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 140 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 141 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 142 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 143 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 144 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 145 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 146 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 147 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 148 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 149 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 150 | tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"a14768af-7278-4412-a72a-3774127d5f66\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 151 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 152 | 3\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"ffad3032-bd23-49a1-bab7-2e379bdef4ef\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 153 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 154 | lobortis \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 155 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 156 | lobortis \",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"0a05c609-f785-458f-b9cd-923fe2bc2899\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lists\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lists\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"4650c82e-5809-40d8-bac0-025b181ae96d\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 157 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 158 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"104fbf5a-71e2-4850-964b-6c674f154c2f\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 159 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 160 | 2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"d1aebea3-32d2-49e4-9cba-3ebed2f0dcf7\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 161 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 162 | 3\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"441edb5a-6dff-4eb0-9cd9-21ee9b787db2\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 163 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 164 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"c940676d-5bd3-4a72-aad6-4a7bae270b64\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 165 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 166 | 2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"df1b3a3b-5d79-44df-af34-711f31fdee09\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 167 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 168 | 3\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"afe10ac3-04cf-4c79-8523-db40cdba0ade\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Nested 169 | Lists\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Nested 170 | Lists\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5db39f27-3de4-4469-94b8-3cf512f812e8\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 171 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 172 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"49fcc456-2bec-43af-81ba-962dc4cf9465\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 173 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 174 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"05427342-2a4c-4051-9345-01ba8eb26887\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Quotes\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Quotes\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"8839f961-85d0-49f4-b365-7abce7e537ad\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"quote\",\"quote\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Blablabla. 175 | This is a very large quote. Lorem ipsum dolor sit amet, consectetur adipiscing 176 | elit. Nulla quis neque vel odio lobortis posuere nec sit amet erat. Morbi 177 | congue velit quis ante accumsan volutpat. Nam ornare enim eu metus consectetur 178 | facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque 179 | ut convallis erat, eget egestas magna. Nunc non orci at ante placerat pretium 180 | in id justo. Morbi a mattis lacus. Nulla tempus, massa a cursus porta, risus 181 | leo varius urna, euismod tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Blablabla. 182 | This is a very large quote. Lorem ipsum dolor sit amet, consectetur adipiscing 183 | elit. Nulla quis neque vel odio lobortis posuere nec sit amet erat. Morbi 184 | congue velit quis ante accumsan volutpat. Nam ornare enim eu metus consectetur 185 | facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque 186 | ut convallis erat, eget egestas magna. Nunc non orci at ante placerat pretium 187 | in id justo. Morbi a mattis lacus. Nulla tempus, massa a cursus porta, risus 188 | leo varius urna, euismod tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"4e428819-9685-46b2-acad-33a609cc8710\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Callout\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Callout\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"eb470ab1-fa8a-42cb-816a-389b39d881db\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"callout\",\"callout\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Callout. 189 | \ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque 190 | vel odio lobortis posuere nec sit amet erat. Morbi congue velit quis ante 191 | accumsan volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum 192 | dolor sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget 193 | egestas magna. Nunc non orci at ante placerat pretium in id justo. Morbi a 194 | mattis lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 195 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Callout. 196 | \ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque 197 | vel odio lobortis posuere nec sit amet erat. Morbi congue velit quis ante 198 | accumsan volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum 199 | dolor sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget 200 | egestas magna. Nunc non orci at ante placerat pretium in id justo. Morbi a 201 | mattis lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 202 | tristique ante metus vitae lacus.\",\"href\":null}],\"icon\":{\"type\":\"emoji\",\"emoji\":\"\U0001F4A1\"},\"color\":\"gray_background\"}},{\"object\":\"block\",\"id\":\"40db4303-300c-46e2-ab21-e6eb5382d0f6\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Embed\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Embed\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5c631365-f7cd-4506-8699-8495fe054ba3\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"embed\",\"embed\":{\"caption\":[],\"url\":\"https://www.google.com/maps/place/Guadalajara,+Jal.,+M%C3%A9xico/@20.6737883,-103.3704326,13z/data=!3m1!4b1!4m5!3m4!1s0x8428b18cb52fd39b:0xd63d9302bf865750!8m2!3d20.6596988!4d-103.3496092\"}},{\"object\":\"block\",\"id\":\"c481f321-7cbc-47a0-beba-333021de2fb1\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Bookmark\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Bookmark\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"f84879f3-2670-4a6b-b1fd-e8fc3da09f88\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bookmark\",\"bookmark\":{\"caption\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla\",\"href\":null}],\"url\":\"https://enriq.me\"}},{\"object\":\"block\",\"id\":\"dca2c1e0-95fa-41a2-8eb3-62d814c7191c\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"divider\",\"divider\":{}},{\"object\":\"block\",\"id\":\"96950caf-66bf-4db7-809a-f0fb0076493c\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"equation\",\"equation\":{\"expression\":\"E=mc^2\"},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"E=mc^2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"511d0765-ca1f-4b35-aa8c-8d3f6fbd0860\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Links\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Links\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"131bd7c8-418a-45fa-a53a-980c9df402c0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 203 | ipsum dolor sit amet\",\"link\":{\"url\":\"https://google.fr/\"}},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 204 | ipsum dolor sit amet\",\"href\":\"https://google.fr/\"},{\"type\":\"text\",\"text\":{\"content\":\", 205 | consectetur adipiscing elit. Nulla quis neque vel odio lobortis posuere nec 206 | sit amet erat. Morbi congue velit quis ante accumsan volutpat. Nam ornare 207 | enim eu metus consectetur facilisis. Lorem ipsum dolor sit amet, consectetur 208 | adipiscing elit. Quisque ut convallis erat, eget egestas magna. Nunc non orci 209 | at ante placerat pretium in id justo. Morbi a mattis lacus. \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\", 210 | consectetur adipiscing elit. Nulla quis neque vel odio lobortis posuere nec 211 | sit amet erat. Morbi congue velit quis ante accumsan volutpat. Nam ornare 212 | enim eu metus consectetur facilisis. Lorem ipsum dolor sit amet, consectetur 213 | adipiscing elit. Quisque ut convallis erat, eget egestas magna. Nunc non orci 214 | at ante placerat pretium in id justo. Morbi a mattis lacus. \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"Nulla 215 | tempus, massa a cursus porta, risus leo varius urna, euismod tristique ante 216 | metus vitae lacus\",\"link\":{\"url\":\"https://swile.co/\"}},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Nulla 217 | tempus, massa a cursus porta, risus leo varius urna, euismod tristique ante 218 | metus vitae lacus\",\"href\":\"https://swile.co/\"},{\"type\":\"text\",\"text\":{\"content\":\".\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\".\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5f3b0190-111a-4c9f-bee1-0fd733d004bf\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Code\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Code\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"624e9289-dab7-4980-b266-636f57a7b8c0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"code\",\"code\":{\"caption\":[],\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"function 219 | fn(a) {\\n\\treturn a;\\n}\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"function 220 | fn(a) {\\n\\treturn a;\\n}\",\"href\":null}],\"language\":\"javascript\"}},{\"object\":\"block\",\"id\":\"ac0beca3-f45e-4e38-9c34-cf1f6fad46f9\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-08-03T12:36:00.000Z\",\"last_edited_time\":\"2022-08-03T12:37:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"code\",\"code\":{\"caption\":[],\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This 221 | is a plain text\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"This 222 | is a plain text\",\"href\":null}],\"language\":\"plain text\"}},{\"object\":\"block\",\"id\":\"afd5ba80-2c56-4a15-8e3e-ed4cd65660fa\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-08-03T12:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"To 223 | do\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"To 224 | do\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5ec52bf9-8923-4f9d-92d7-b4220016c1de\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 225 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 226 | 1\",\"href\":null}],\"checked\":true,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"f6e03735-cd6b-40e5-ace1-fc8ce5124628\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 227 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 228 | 2\",\"href\":null}],\"checked\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"9c7cbdbc-04e6-4df6-b89c-f9b726c4f68e\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 229 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 230 | 3\",\"href\":null}],\"checked\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fe4cc13c-4a33-4df3-b4e7-f20560e04986\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"04395ba7-5858-4cdf-bcca-6e0656de3667\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:15:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"italic 231 | \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"italic 232 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"bold \",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"bold 233 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"strike \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":true,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"strike 234 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"inline-code \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":true,\"color\":\"default\"},\"plain_text\":\"inline-code 235 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"underline\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":true,\"code\":false,\"color\":\"default\"},\"plain_text\":\"underline\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fe993569-504e-49b6-8252-00120b69253b\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"6c48a070-7a58-4a73-a971-6cc72bed0860\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"italic\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"italic\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"173c6135-47dc-4341-933e-4ee39aa020d8\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"bold\",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"bold\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"120525d0-794f-413c-9c6e-78a57ed50a5d\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"strike-trough\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":true,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"strike-trough\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"524e6f1f-6461-4858-a6e0-be80d1c55847\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"underline\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":true,\"code\":false,\"color\":\"default\"},\"plain_text\":\"underline\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"6f903eac-0704-4f2f-958d-402d4612c369\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-10-04T20:23:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"inline-code\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":true,\"color\":\"default\"},\"plain_text\":\"inline-code\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"bc6fa4ec-7edf-468b-b436-59d9379f0b41\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-16T03:45:00.000Z\",\"last_edited_time\":\"2022-09-16T16:14:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Tables\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Tables\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fffe8b14-de13-420e-af3b-c000cc73fb89\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-16T03:46:00.000Z\",\"last_edited_time\":\"2022-10-04T20:23:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"table\",\"table\":{\"table_width\":3,\"has_column_header\":true,\"has_row_header\":false}}],\"next_cursor\":null,\"has_more\":false,\"type\":\"block\",\"block\":{},\"request_id\":\"45da68e4-4780-43b7-8d0c-799ecb10ba3a\"}" 236 | recorded_at: Sun, 03 Dec 2023 06:50:51 GMT 237 | - request: 238 | method: get 239 | uri: https://api.notion.com/v1/blocks/5db39f27-3de4-4469-94b8-3cf512f812e8/children 240 | body: 241 | encoding: US-ASCII 242 | string: '' 243 | headers: 244 | Accept: 245 | - application/json; charset=utf-8 246 | User-Agent: 247 | - Notion Ruby Client/1.2.2 248 | Authorization: 249 | - "" 250 | Notion-Version: 251 | - '2022-02-22' 252 | response: 253 | status: 254 | code: 200 255 | message: OK 256 | headers: 257 | date: 258 | - Sun, 03 Dec 2023 06:50:51 GMT 259 | content-type: 260 | - application/json; charset=utf-8 261 | transfer-encoding: 262 | - chunked 263 | connection: 264 | - keep-alive 265 | x-powered-by: 266 | - Express 267 | x-notion-request-id: 268 | - 1f022040-4ebf-4f2b-8491-c37778530597 269 | etag: 270 | - W/"61a-12/atS3QuS6myqOmPd6dmcYoHyo" 271 | vary: 272 | - Accept-Encoding 273 | content-encoding: 274 | - gzip 275 | cf-cache-status: 276 | - DYNAMIC 277 | set-cookie: 278 | - __cf_bm=YPK3OxiD6wnM3Ewq08uw.0vwSvUP_8DBcCfLgQVINlY-1701586251-0-ActP1lzXmDemVAZ7oRon3Mq055I4Dxnc+KWMLEGTTs7DOh0F+bXgSsiwHHENz72vaudwTNE/8BmBIBStP0O8q7w=; 279 | path=/; expires=Sun, 03-Dec-23 07:20:51 GMT; domain=.notion.com; HttpOnly; 280 | Secure; SameSite=None 281 | server: 282 | - cloudflare 283 | cf-ray: 284 | - 82f9e0b71bb7d5d1-CDG 285 | body: 286 | encoding: UTF-8 287 | string: '{"object":"list","results":[{"object":"block","id":"a7084141-6cc5-42a4-add6-f29f8b74d8e8","parent":{"type":"block_id","block_id":"5db39f27-3de4-4469-94b8-3cf512f812e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":true,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 288 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 289 | 2","href":null}],"color":"default"}},{"object":"block","id":"b9f715d0-9b99-4519-8e55-72d099e3f455","parent":{"type":"block_id","block_id":"5db39f27-3de4-4469-94b8-3cf512f812e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 290 | 4","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 291 | 4","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"1f022040-4ebf-4f2b-8491-c37778530597"}' 292 | recorded_at: Sun, 03 Dec 2023 06:50:51 GMT 293 | - request: 294 | method: get 295 | uri: https://api.notion.com/v1/blocks/a7084141-6cc5-42a4-add6-f29f8b74d8e8/children 296 | body: 297 | encoding: US-ASCII 298 | string: '' 299 | headers: 300 | Accept: 301 | - application/json; charset=utf-8 302 | User-Agent: 303 | - Notion Ruby Client/1.2.2 304 | Authorization: 305 | - "" 306 | Notion-Version: 307 | - '2022-02-22' 308 | response: 309 | status: 310 | code: 200 311 | message: OK 312 | headers: 313 | date: 314 | - Sun, 03 Dec 2023 06:50:51 GMT 315 | content-type: 316 | - application/json; charset=utf-8 317 | transfer-encoding: 318 | - chunked 319 | connection: 320 | - keep-alive 321 | x-powered-by: 322 | - Express 323 | x-notion-request-id: 324 | - 2c09294a-87a5-4146-b456-d9e365fcfa47 325 | etag: 326 | - W/"355-MoHyvkSajtaIi4wk6EgFFAXjHzM" 327 | vary: 328 | - Accept-Encoding 329 | cf-cache-status: 330 | - DYNAMIC 331 | set-cookie: 332 | - __cf_bm=eGnnUuCilVKvwiFkfQlXdwGujbCeP2GnvTLURypx54I-1701586251-0-AcAUAgEPOP/uBprMMSrN6+cV4qxgiBvsBMommVu9HEO6VMh8/osh/WyMApI/CmuupYJ51+LQyaLPvKcPks1koog=; 333 | path=/; expires=Sun, 03-Dec-23 07:20:51 GMT; domain=.notion.com; HttpOnly; 334 | Secure; SameSite=None 335 | server: 336 | - cloudflare 337 | cf-ray: 338 | - 82f9e0b8fefd02af-CDG 339 | content-encoding: 340 | - gzip 341 | body: 342 | encoding: UTF-8 343 | string: '{"object":"list","results":[{"object":"block","id":"540bd8c0-200e-4630-b87a-7827bcd311b0","parent":{"type":"block_id","block_id":"a7084141-6cc5-42a4-add6-f29f8b74d8e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 344 | 3","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 345 | 3","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"2c09294a-87a5-4146-b456-d9e365fcfa47"}' 346 | recorded_at: Sun, 03 Dec 2023 06:50:51 GMT 347 | - request: 348 | method: get 349 | uri: https://api.notion.com/v1/blocks/49fcc456-2bec-43af-81ba-962dc4cf9465/children 350 | body: 351 | encoding: US-ASCII 352 | string: '' 353 | headers: 354 | Accept: 355 | - application/json; charset=utf-8 356 | User-Agent: 357 | - Notion Ruby Client/1.2.2 358 | Authorization: 359 | - "" 360 | Notion-Version: 361 | - '2022-02-22' 362 | response: 363 | status: 364 | code: 200 365 | message: OK 366 | headers: 367 | date: 368 | - Sun, 03 Dec 2023 06:50:52 GMT 369 | content-type: 370 | - application/json; charset=utf-8 371 | transfer-encoding: 372 | - chunked 373 | connection: 374 | - keep-alive 375 | x-powered-by: 376 | - Express 377 | x-notion-request-id: 378 | - 4b284c35-1822-41e0-93c6-f5b9d1a965aa 379 | etag: 380 | - W/"61a-DHlkCIyusBNtKNPbo2VbyKAXPDo" 381 | vary: 382 | - Accept-Encoding 383 | content-encoding: 384 | - gzip 385 | cf-cache-status: 386 | - DYNAMIC 387 | set-cookie: 388 | - __cf_bm=mUuA1SmcvyYTCrcmprDbjl1s79N_v_RjA7nji7vJAcI-1701586252-0-AbmiScJpamghsNMqaHKALvSpNnP5b7zGhF48Pdg1Ro2O14xQ1cQ5zWC613M36lWTj8v6/fHkOYCDjRxck2DJqL8=; 389 | path=/; expires=Sun, 03-Dec-23 07:20:52 GMT; domain=.notion.com; HttpOnly; 390 | Secure; SameSite=None 391 | server: 392 | - cloudflare 393 | cf-ray: 394 | - 82f9e0bb1bbbd3af-CDG 395 | body: 396 | encoding: UTF-8 397 | string: '{"object":"list","results":[{"object":"block","id":"9134a99f-b20a-4ba0-adfb-253a4da8ae10","parent":{"type":"block_id","block_id":"49fcc456-2bec-43af-81ba-962dc4cf9465"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":true,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 398 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 399 | 2","href":null}],"color":"default"}},{"object":"block","id":"a2e61f44-22d9-4454-aba9-0b34dc5d8b73","parent":{"type":"block_id","block_id":"49fcc456-2bec-43af-81ba-962dc4cf9465"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 400 | 4","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 401 | 4","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"4b284c35-1822-41e0-93c6-f5b9d1a965aa"}' 402 | recorded_at: Sun, 03 Dec 2023 06:50:52 GMT 403 | - request: 404 | method: get 405 | uri: https://api.notion.com/v1/blocks/9134a99f-b20a-4ba0-adfb-253a4da8ae10/children 406 | body: 407 | encoding: US-ASCII 408 | string: '' 409 | headers: 410 | Accept: 411 | - application/json; charset=utf-8 412 | User-Agent: 413 | - Notion Ruby Client/1.2.2 414 | Authorization: 415 | - "" 416 | Notion-Version: 417 | - '2022-02-22' 418 | response: 419 | status: 420 | code: 200 421 | message: OK 422 | headers: 423 | date: 424 | - Sun, 03 Dec 2023 06:50:53 GMT 425 | content-type: 426 | - application/json; charset=utf-8 427 | transfer-encoding: 428 | - chunked 429 | connection: 430 | - keep-alive 431 | x-powered-by: 432 | - Express 433 | x-notion-request-id: 434 | - ac8e078a-74d1-4743-994d-34da4c57f1df 435 | etag: 436 | - W/"355-U3frlb5jstf6zE1Zp87AwR0HxwI" 437 | vary: 438 | - Accept-Encoding 439 | cf-cache-status: 440 | - DYNAMIC 441 | set-cookie: 442 | - __cf_bm=IYXKyCvUs89WBgXP_rNhcjxTnUw27qsRByIsmZC7z7U-1701586253-0-AR/yR2EtuIQWytVs93zZMhjwaSfiaVePaoqkQkrw0jeJcn1fyzbbr+ySnJHoAos+y7zPY8FEI5CdJAE1JlKB/NQ=; 443 | path=/; expires=Sun, 03-Dec-23 07:20:53 GMT; domain=.notion.com; HttpOnly; 444 | Secure; SameSite=None 445 | server: 446 | - cloudflare 447 | cf-ray: 448 | - 82f9e0bff9f2d3fc-CDG 449 | content-encoding: 450 | - gzip 451 | body: 452 | encoding: UTF-8 453 | string: '{"object":"list","results":[{"object":"block","id":"32a9f186-d1ae-496c-98f6-f56df912ec18","parent":{"type":"block_id","block_id":"9134a99f-b20a-4ba0-adfb-253a4da8ae10"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 454 | 3","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 455 | 3","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"ac8e078a-74d1-4743-994d-34da4c57f1df"}' 456 | recorded_at: Sun, 03 Dec 2023 06:50:53 GMT 457 | - request: 458 | method: get 459 | uri: https://api.notion.com/v1/blocks/fffe8b14-de13-420e-af3b-c000cc73fb89/children 460 | body: 461 | encoding: US-ASCII 462 | string: '' 463 | headers: 464 | Accept: 465 | - application/json; charset=utf-8 466 | User-Agent: 467 | - Notion Ruby Client/1.2.2 468 | Authorization: 469 | - "" 470 | Notion-Version: 471 | - '2022-02-22' 472 | response: 473 | status: 474 | code: 200 475 | message: OK 476 | headers: 477 | date: 478 | - Sun, 03 Dec 2023 06:50:53 GMT 479 | content-type: 480 | - application/json; charset=utf-8 481 | transfer-encoding: 482 | - chunked 483 | connection: 484 | - keep-alive 485 | x-powered-by: 486 | - Express 487 | x-notion-request-id: 488 | - 863ac1c6-1c7c-46be-8d4c-a79ff109c066 489 | etag: 490 | - W/"c85-AzD3FsXJohBBdlwCprffZN2KGNo" 491 | vary: 492 | - Accept-Encoding 493 | content-encoding: 494 | - gzip 495 | cf-cache-status: 496 | - DYNAMIC 497 | set-cookie: 498 | - __cf_bm=W6rwFqpJ1TzKVqwxufspSr4uqp9ZxCdh823lWX1JU7g-1701586253-0-AaDlguZR0AHHHjUPtbP2LjpwzmaCm47d6m1CFtoQWWp31D7sGVkEaQVy7CVHLTwM0dRYqd4+wlD6AMaf3+jP/gc=; 499 | path=/; expires=Sun, 03-Dec-23 07:20:53 GMT; domain=.notion.com; HttpOnly; 500 | Secure; SameSite=None 501 | server: 502 | - cloudflare 503 | cf-ray: 504 | - 82f9e0c23a2e04aa-CDG 505 | body: 506 | encoding: UTF-8 507 | string: '{"object":"list","results":[{"object":"block","id":"9446a67d-ec5e-4738-85e7-7f3f028c5f4e","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[],[{"type":"text","text":{"content":"Column 508 | 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Column 509 | 1","href":null}],[{"type":"text","text":{"content":"Column 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Column 510 | 1","href":null}]]}},{"object":"block","id":"5db51bf0-5dbf-4c6c-9231-46ea9d1ecc2a","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[{"type":"text","text":{"content":"Row 511 | 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Row 512 | 1","href":null}],[{"type":"text","text":{"content":"ñaña","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"ñaña","href":null}],[{"type":"text","text":{"content":"blabla","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"blabla","href":null}]]}},{"object":"block","id":"5f0644ce-d674-476d-8182-b2985abc8a87","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[{"type":"text","text":{"content":"Row 513 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Row 514 | 2","href":null}],[{"type":"text","text":{"content":"prupru","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"prupru","href":null}],[{"type":"text","text":{"content":"tinonino","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"tinonino","href":null}]]}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"863ac1c6-1c7c-46be-8d4c-a79ff109c066"}' 515 | recorded_at: Sun, 03 Dec 2023 06:50:53 GMT 516 | - request: 517 | method: get 518 | uri: https://api.notion.com/v1/pages/9dc17c9c-9d2e-469d-bbf0-f9648f3288d3 519 | body: 520 | encoding: US-ASCII 521 | string: '' 522 | headers: 523 | Accept: 524 | - application/json; charset=utf-8 525 | User-Agent: 526 | - Notion Ruby Client/1.2.2 527 | Authorization: 528 | - "" 529 | Notion-Version: 530 | - '2022-02-22' 531 | response: 532 | status: 533 | code: 200 534 | message: OK 535 | headers: 536 | date: 537 | - Sun, 03 Dec 2023 06:50:54 GMT 538 | content-type: 539 | - application/json; charset=utf-8 540 | transfer-encoding: 541 | - chunked 542 | connection: 543 | - keep-alive 544 | x-powered-by: 545 | - Express 546 | x-notion-request-id: 547 | - 6a3704da-b620-424b-abad-048cd8e66fe7 548 | etag: 549 | - W/"107c-JFmroVm9mZ1IxIia5ljSGLWORxo" 550 | vary: 551 | - Accept-Encoding 552 | content-encoding: 553 | - gzip 554 | cf-cache-status: 555 | - DYNAMIC 556 | set-cookie: 557 | - __cf_bm=dx_3hRJ8fFVNQUNGA.kW2JWHgsYIb_ksea1qFNM0x2g-1701586254-0-Aer/egB0zNUT3LSm9kP+2t/Mm7gPNNKMxikJ3YYdbXh/afMRJqjmJrY2ptZD2WR5LT+k5TR8c35EDFPp8Sf/BU8=; 558 | path=/; expires=Sun, 03-Dec-23 07:20:54 GMT; domain=.notion.com; HttpOnly; 559 | Secure; SameSite=None 560 | server: 561 | - cloudflare 562 | cf-ray: 563 | - 82f9e0c6d8b32a29-CDG 564 | body: 565 | encoding: UTF-8 566 | string: "{\"object\":\"page\",\"id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\",\"created_time\":\"2022-01-23T12:31:00.000Z\",\"last_edited_time\":\"2023-12-02T22:09:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"cover\":{\"type\":\"external\",\"external\":{\"url\":\"https://www.notion.so/images/page-cover/met_canaletto_1720.jpg\"}},\"icon\":{\"type\":\"emoji\",\"emoji\":\"\U0001F4A5\"},\"parent\":{\"type\":\"database_id\",\"database_id\":\"1ae33dd5-f331-4402-9480-69517fa40ae2\"},\"archived\":false,\"properties\":{\"empty 567 | date\":{\"id\":\"%3A%7BfH\",\"type\":\"date\",\"date\":null},\"Multi Select\":{\"id\":\"%3C%7Bn%7B\",\"type\":\"multi_select\",\"multi_select\":[{\"id\":\"ddf5e30e-fde6-4023-98a4-864674e8ae87\",\"name\":\"mselect1\",\"color\":\"gray\"},{\"id\":\"1be80fca-a275-4384-8268-6bb2f6a21616\",\"name\":\"mselect2\",\"color\":\"pink\"},{\"id\":\"32e731fc-3fee-41d8-83f5-398b2981f1ac\",\"name\":\"mselect3\",\"color\":\"blue\"}]},\"Select\":{\"id\":\"%3EzjF\",\"type\":\"select\",\"select\":{\"id\":\"fa788fbc-176b-49cb-be2e-552cc985cf7c\",\"name\":\"select1\",\"color\":\"yellow\"}},\"date 568 | with time\":{\"id\":\"CUEj\",\"type\":\"date\",\"date\":{\"start\":\"2023-12-02T00:00:00.000+01:00\",\"end\":null,\"time_zone\":null}},\"Person\":{\"id\":\"TFSp\",\"type\":\"people\",\"people\":[{\"object\":\"user\",\"id\":\"a4e89628-577b-404f-b62b-36abe7f65fc7\",\"name\":\"Armando 569 | Broncas\",\"avatar_url\":\"https://s3-us-west-2.amazonaws.com/public.notion-static.com/3e0bf8de-83a5-4579-8088-5a35021ab9cc/Foto_Perfil_Slack.jpg\",\"type\":\"person\",\"person\":{\"email\":\"gjulia20@gmail.com\"}}]},\"Date\":{\"id\":\"T~YB\",\"type\":\"date\",\"date\":{\"start\":\"2021-12-30\",\"end\":null,\"time_zone\":null}},\"Tags\":{\"id\":\"UT%3Fx\",\"type\":\"multi_select\",\"multi_select\":[{\"id\":\"be6ae2f6-5ae4-496b-b413-f5e7dbeff2a8\",\"name\":\"tag1\",\"color\":\"green\"}]},\"Numbers\":{\"id\":\"a~dg\",\"type\":\"number\",\"number\":12},\"Rich 570 | Text\":{\"id\":\"jJWo\",\"type\":\"rich_text\",\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This 571 | is a \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"This 572 | is a \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"rich_text\",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"rich_text\",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\" 573 | property. With \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\" 574 | property. With \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"Italics\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Italics\",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\".\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\".\",\"href\":null}]},\"Phone\":{\"id\":\"k%5DEi\",\"type\":\"phone_number\",\"phone_number\":\"983788379\"},\"File\":{\"id\":\"x%60rF\",\"type\":\"files\",\"files\":[{\"name\":\"me.jpeg\",\"type\":\"file\",\"file\":{\"url\":\"https://prod-files-secure.s3.us-west-2.amazonaws.com/4783548e-2442-4bf3-bb3d-ed4ddd2dcdf0/23e8b74e-86d1-4b3a-bd9a-dd0415a954e4/me.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20231203%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20231203T065054Z&X-Amz-Expires=3600&X-Amz-Signature=f141e8d63e2155c14c08a6787b2a1ede1c528a189c49179e972c914a76b0a272&X-Amz-SignedHeaders=host&x-id=GetObject\",\"expiry_time\":\"2023-12-03T07:50:54.004Z\"}}]},\"empty 575 | rich text\":{\"id\":\"xtDO\",\"type\":\"rich_text\",\"rich_text\":[]},\"Email\":{\"id\":\"x%7Bcw\",\"type\":\"email\",\"email\":\"hola@test.com\"},\"Checkbox\":{\"id\":\"%7CMPu\",\"type\":\"checkbox\",\"checkbox\":false},\"empty_select\":{\"id\":\"%7DSr%3F\",\"type\":\"select\",\"select\":null},\"Name\":{\"id\":\"title\",\"type\":\"title\",\"title\":[{\"type\":\"text\",\"text\":{\"content\":\"Page 576 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Page 577 | 1\",\"href\":null}]}},\"url\":\"https://www.notion.so/Page-1-9dc17c9c9d2e469dbbf0f9648f3288d3\",\"public_url\":null,\"request_id\":\"6a3704da-b620-424b-abad-048cd8e66fe7\"}" 578 | recorded_at: Sun, 03 Dec 2023 06:50:54 GMT 579 | - request: 580 | method: get 581 | uri: https://api.notion.com/v1/blocks/9dc17c9c-9d2e-469d-bbf0-f9648f3288d3/children 582 | body: 583 | encoding: US-ASCII 584 | string: '' 585 | headers: 586 | Accept: 587 | - application/json; charset=utf-8 588 | User-Agent: 589 | - Notion Ruby Client/1.2.2 590 | Authorization: 591 | - "" 592 | Notion-Version: 593 | - '2022-02-22' 594 | response: 595 | status: 596 | code: 200 597 | message: OK 598 | headers: 599 | date: 600 | - Sun, 03 Dec 2023 06:50:54 GMT 601 | content-type: 602 | - application/json; charset=utf-8 603 | transfer-encoding: 604 | - chunked 605 | connection: 606 | - keep-alive 607 | x-powered-by: 608 | - Express 609 | x-notion-request-id: 610 | - 33796b0d-7868-4a89-b3f9-8afc2fee46a1 611 | etag: 612 | - W/"9639-ekNMVrAhhY8CUHyFJ3w5gB2GkSY" 613 | vary: 614 | - Accept-Encoding 615 | content-encoding: 616 | - gzip 617 | cf-cache-status: 618 | - DYNAMIC 619 | set-cookie: 620 | - __cf_bm=7YpKXlhw2jsjc6ZaA...3a7Ec7JUQee0mWu2Go_zzck-1701586254-0-ARQBNUmiUBzdtV8YRv9cI2khUB7Xk01+BK5T5Q7iYyHWS06ZZRDKq97F8pkhtKk8Alxlh7/8NRxDrmrVkOaiEoE=; 621 | path=/; expires=Sun, 03-Dec-23 07:20:54 GMT; domain=.notion.com; HttpOnly; 622 | Secure; SameSite=None 623 | server: 624 | - cloudflare 625 | cf-ray: 626 | - 82f9e0c88c7a6f39-CDG 627 | body: 628 | encoding: UTF-8 629 | string: "{\"object\":\"list\",\"results\":[{\"object\":\"block\",\"id\":\"2c3c3f04-448f-4921-aed9-880094afe981\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"image\",\"image\":{\"caption\":[{\"type\":\"text\",\"text\":{\"content\":\"John 630 | Rambo having a coffee.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"John 631 | Rambo having a coffee.\",\"href\":null}],\"type\":\"external\",\"external\":{\"url\":\"https://media.gqmagazine.fr/photos/5bb5a42b46d32e001186b6b5/16:9/w_1280,c_limit/Rambo_Fist_blood_-_017photo1.jpg\"}}},{\"object\":\"block\",\"id\":\"9a95bfa9-9ae0-4df9-9edc-7071be3b5e9b\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_1\",\"heading_1\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 632 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 633 | 1\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"8531af87-084f-44ad-9765-8e3a95949e21\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 634 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 635 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 636 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 637 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 638 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 639 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 640 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 641 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 642 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 643 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 644 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 645 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 646 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 647 | tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"c0464dfa-79df-4900-b951-08bca090927a\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_2\",\"heading_2\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 648 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 649 | 2\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"3c508c22-3236-45e6-a87f-e0a56df99ba0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 650 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 651 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 652 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 653 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 654 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 655 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 656 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 657 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 658 | lobortis posuere nec sit amet erat. Morbi congue velit quis ante accumsan 659 | volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum dolor 660 | sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget egestas 661 | magna. Nunc non orci at ante placerat pretium in id justo. Morbi a mattis 662 | lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 663 | tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"a14768af-7278-4412-a72a-3774127d5f66\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T22:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Heading 664 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Heading 665 | 3\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"ffad3032-bd23-49a1-bab7-2e379bdef4ef\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 666 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 667 | lobortis \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 668 | ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque vel odio 669 | lobortis \",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"0a05c609-f785-458f-b9cd-923fe2bc2899\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lists\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lists\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"4650c82e-5809-40d8-bac0-025b181ae96d\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 670 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 671 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"104fbf5a-71e2-4850-964b-6c674f154c2f\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 672 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 673 | 2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"d1aebea3-32d2-49e4-9cba-3ebed2f0dcf7\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 674 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 675 | 3\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"441edb5a-6dff-4eb0-9cd9-21ee9b787db2\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 676 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 677 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"c940676d-5bd3-4a72-aad6-4a7bae270b64\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 678 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 679 | 2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"df1b3a3b-5d79-44df-af34-711f31fdee09\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 680 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 681 | 3\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"afe10ac3-04cf-4c79-8523-db40cdba0ade\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Nested 682 | Lists\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Nested 683 | Lists\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5db39f27-3de4-4469-94b8-3cf512f812e8\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 684 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 685 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"49fcc456-2bec-43af-81ba-962dc4cf9465\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-03T12:45:00.000Z\",\"last_edited_time\":\"2022-09-03T12:45:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"numbered_list_item\",\"numbered_list_item\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"item 686 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"item 687 | 1\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"05427342-2a4c-4051-9345-01ba8eb26887\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Quotes\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Quotes\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"8839f961-85d0-49f4-b365-7abce7e537ad\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"quote\",\"quote\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Blablabla. 688 | This is a very large quote. Lorem ipsum dolor sit amet, consectetur adipiscing 689 | elit. Nulla quis neque vel odio lobortis posuere nec sit amet erat. Morbi 690 | congue velit quis ante accumsan volutpat. Nam ornare enim eu metus consectetur 691 | facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque 692 | ut convallis erat, eget egestas magna. Nunc non orci at ante placerat pretium 693 | in id justo. Morbi a mattis lacus. Nulla tempus, massa a cursus porta, risus 694 | leo varius urna, euismod tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Blablabla. 695 | This is a very large quote. Lorem ipsum dolor sit amet, consectetur adipiscing 696 | elit. Nulla quis neque vel odio lobortis posuere nec sit amet erat. Morbi 697 | congue velit quis ante accumsan volutpat. Nam ornare enim eu metus consectetur 698 | facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque 699 | ut convallis erat, eget egestas magna. Nunc non orci at ante placerat pretium 700 | in id justo. Morbi a mattis lacus. Nulla tempus, massa a cursus porta, risus 701 | leo varius urna, euismod tristique ante metus vitae lacus.\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"4e428819-9685-46b2-acad-33a609cc8710\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Callout\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Callout\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"eb470ab1-fa8a-42cb-816a-389b39d881db\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"callout\",\"callout\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Callout. 702 | \ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque 703 | vel odio lobortis posuere nec sit amet erat. Morbi congue velit quis ante 704 | accumsan volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum 705 | dolor sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget 706 | egestas magna. Nunc non orci at ante placerat pretium in id justo. Morbi a 707 | mattis lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 708 | tristique ante metus vitae lacus.\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Callout. 709 | \ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quis neque 710 | vel odio lobortis posuere nec sit amet erat. Morbi congue velit quis ante 711 | accumsan volutpat. Nam ornare enim eu metus consectetur facilisis. Lorem ipsum 712 | dolor sit amet, consectetur adipiscing elit. Quisque ut convallis erat, eget 713 | egestas magna. Nunc non orci at ante placerat pretium in id justo. Morbi a 714 | mattis lacus. Nulla tempus, massa a cursus porta, risus leo varius urna, euismod 715 | tristique ante metus vitae lacus.\",\"href\":null}],\"icon\":{\"type\":\"emoji\",\"emoji\":\"\U0001F4A1\"},\"color\":\"gray_background\"}},{\"object\":\"block\",\"id\":\"40db4303-300c-46e2-ab21-e6eb5382d0f6\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Embed\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Embed\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5c631365-f7cd-4506-8699-8495fe054ba3\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"embed\",\"embed\":{\"caption\":[],\"url\":\"https://www.google.com/maps/place/Guadalajara,+Jal.,+M%C3%A9xico/@20.6737883,-103.3704326,13z/data=!3m1!4b1!4m5!3m4!1s0x8428b18cb52fd39b:0xd63d9302bf865750!8m2!3d20.6596988!4d-103.3496092\"}},{\"object\":\"block\",\"id\":\"c481f321-7cbc-47a0-beba-333021de2fb1\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Bookmark\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Bookmark\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"f84879f3-2670-4a6b-b1fd-e8fc3da09f88\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"bookmark\",\"bookmark\":{\"caption\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla\",\"href\":null}],\"url\":\"https://enriq.me\"}},{\"object\":\"block\",\"id\":\"dca2c1e0-95fa-41a2-8eb3-62d814c7191c\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"divider\",\"divider\":{}},{\"object\":\"block\",\"id\":\"96950caf-66bf-4db7-809a-f0fb0076493c\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"equation\",\"equation\":{\"expression\":\"E=mc^2\"},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"E=mc^2\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"511d0765-ca1f-4b35-aa8c-8d3f6fbd0860\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Links\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Links\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"131bd7c8-418a-45fa-a53a-980c9df402c0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Lorem 716 | ipsum dolor sit amet\",\"link\":{\"url\":\"https://google.fr/\"}},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Lorem 717 | ipsum dolor sit amet\",\"href\":\"https://google.fr/\"},{\"type\":\"text\",\"text\":{\"content\":\", 718 | consectetur adipiscing elit. Nulla quis neque vel odio lobortis posuere nec 719 | sit amet erat. Morbi congue velit quis ante accumsan volutpat. Nam ornare 720 | enim eu metus consectetur facilisis. Lorem ipsum dolor sit amet, consectetur 721 | adipiscing elit. Quisque ut convallis erat, eget egestas magna. Nunc non orci 722 | at ante placerat pretium in id justo. Morbi a mattis lacus. \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\", 723 | consectetur adipiscing elit. Nulla quis neque vel odio lobortis posuere nec 724 | sit amet erat. Morbi congue velit quis ante accumsan volutpat. Nam ornare 725 | enim eu metus consectetur facilisis. Lorem ipsum dolor sit amet, consectetur 726 | adipiscing elit. Quisque ut convallis erat, eget egestas magna. Nunc non orci 727 | at ante placerat pretium in id justo. Morbi a mattis lacus. \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"Nulla 728 | tempus, massa a cursus porta, risus leo varius urna, euismod tristique ante 729 | metus vitae lacus\",\"link\":{\"url\":\"https://swile.co/\"}},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Nulla 730 | tempus, massa a cursus porta, risus leo varius urna, euismod tristique ante 731 | metus vitae lacus\",\"href\":\"https://swile.co/\"},{\"type\":\"text\",\"text\":{\"content\":\".\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\".\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5f3b0190-111a-4c9f-bee1-0fd733d004bf\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Code\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Code\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"624e9289-dab7-4980-b266-636f57a7b8c0\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"code\",\"code\":{\"caption\":[],\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"function 732 | fn(a) {\\n\\treturn a;\\n}\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"function 733 | fn(a) {\\n\\treturn a;\\n}\",\"href\":null}],\"language\":\"javascript\"}},{\"object\":\"block\",\"id\":\"ac0beca3-f45e-4e38-9c34-cf1f6fad46f9\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-08-03T12:36:00.000Z\",\"last_edited_time\":\"2022-08-03T12:37:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"code\",\"code\":{\"caption\":[],\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This 734 | is a plain text\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"This 735 | is a plain text\",\"href\":null}],\"language\":\"plain text\"}},{\"object\":\"block\",\"id\":\"afd5ba80-2c56-4a15-8e3e-ed4cd65660fa\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-08-03T12:36:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"To 736 | do\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"To 737 | do\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"5ec52bf9-8923-4f9d-92d7-b4220016c1de\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 738 | 1\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 739 | 1\",\"href\":null}],\"checked\":true,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"f6e03735-cd6b-40e5-ace1-fc8ce5124628\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-02-13T14:12:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 740 | 2\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 741 | 2\",\"href\":null}],\"checked\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"9c7cbdbc-04e6-4df6-b89c-f9b726c4f68e\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-02-13T14:12:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"to_do\",\"to_do\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"blabla 742 | 3\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"blabla 743 | 3\",\"href\":null}],\"checked\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fe4cc13c-4a33-4df3-b4e7-f20560e04986\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"04395ba7-5858-4cdf-bcca-6e0656de3667\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:15:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"italic 744 | \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"italic 745 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"bold \",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"bold 746 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"strike \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":true,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"strike 747 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"inline-code \",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":true,\"color\":\"default\"},\"plain_text\":\"inline-code 748 | \",\"href\":null},{\"type\":\"text\",\"text\":{\"content\":\"underline\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":true,\"code\":false,\"color\":\"default\"},\"plain_text\":\"underline\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fe993569-504e-49b6-8252-00120b69253b\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"6c48a070-7a58-4a73-a971-6cc72bed0860\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"italic\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":true,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"italic\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"173c6135-47dc-4341-933e-4ee39aa020d8\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"bold\",\"link\":null},\"annotations\":{\"bold\":true,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"bold\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"120525d0-794f-413c-9c6e-78a57ed50a5d\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"strike-trough\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":true,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"strike-trough\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"524e6f1f-6461-4858-a6e0-be80d1c55847\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-03-18T10:13:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"underline\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":true,\"code\":false,\"color\":\"default\"},\"plain_text\":\"underline\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"6f903eac-0704-4f2f-958d-402d4612c369\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-03-18T10:13:00.000Z\",\"last_edited_time\":\"2022-10-04T20:23:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"inline-code\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":true,\"color\":\"default\"},\"plain_text\":\"inline-code\",\"href\":null}],\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"bc6fa4ec-7edf-468b-b436-59d9379f0b41\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-16T03:45:00.000Z\",\"last_edited_time\":\"2022-09-16T16:14:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":false,\"archived\":false,\"type\":\"heading_3\",\"heading_3\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Tables\",\"link\":null},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"},\"plain_text\":\"Tables\",\"href\":null}],\"is_toggleable\":false,\"color\":\"default\"}},{\"object\":\"block\",\"id\":\"fffe8b14-de13-420e-af3b-c000cc73fb89\",\"parent\":{\"type\":\"page_id\",\"page_id\":\"9dc17c9c-9d2e-469d-bbf0-f9648f3288d3\"},\"created_time\":\"2022-09-16T03:46:00.000Z\",\"last_edited_time\":\"2022-10-04T20:23:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"last_edited_by\":{\"object\":\"user\",\"id\":\"db313571-0280-411f-a6de-70e826421d12\"},\"has_children\":true,\"archived\":false,\"type\":\"table\",\"table\":{\"table_width\":3,\"has_column_header\":true,\"has_row_header\":false}}],\"next_cursor\":null,\"has_more\":false,\"type\":\"block\",\"block\":{},\"request_id\":\"33796b0d-7868-4a89-b3f9-8afc2fee46a1\"}" 749 | recorded_at: Sun, 03 Dec 2023 06:50:54 GMT 750 | - request: 751 | method: get 752 | uri: https://api.notion.com/v1/blocks/5db39f27-3de4-4469-94b8-3cf512f812e8/children 753 | body: 754 | encoding: US-ASCII 755 | string: '' 756 | headers: 757 | Accept: 758 | - application/json; charset=utf-8 759 | User-Agent: 760 | - Notion Ruby Client/1.2.2 761 | Authorization: 762 | - "" 763 | Notion-Version: 764 | - '2022-02-22' 765 | response: 766 | status: 767 | code: 200 768 | message: OK 769 | headers: 770 | date: 771 | - Sun, 03 Dec 2023 06:50:55 GMT 772 | content-type: 773 | - application/json; charset=utf-8 774 | transfer-encoding: 775 | - chunked 776 | connection: 777 | - keep-alive 778 | x-powered-by: 779 | - Express 780 | x-notion-request-id: 781 | - 5e634cc5-69ec-40f6-a017-320afc92f7b8 782 | etag: 783 | - W/"61a-RtAmVM+PjuCAh8spLDsJF3p5lDQ" 784 | vary: 785 | - Accept-Encoding 786 | content-encoding: 787 | - gzip 788 | cf-cache-status: 789 | - DYNAMIC 790 | set-cookie: 791 | - __cf_bm=H_T3jOeDH4g2Z7n.i8UzHg4xzD_tMzH_zbJkDO_AUf8-1701586255-0-AdEqA4Qomfe8i0omX5c1EvVpAdiy/BvB4ZThI6RaUqYAujicpQvINdM7E4i3agmQqn7knPrbN2IYFMpxi/RvQII=; 792 | path=/; expires=Sun, 03-Dec-23 07:20:55 GMT; domain=.notion.com; HttpOnly; 793 | Secure; SameSite=None 794 | server: 795 | - cloudflare 796 | cf-ray: 797 | - 82f9e0caf8666988-CDG 798 | body: 799 | encoding: UTF-8 800 | string: '{"object":"list","results":[{"object":"block","id":"a7084141-6cc5-42a4-add6-f29f8b74d8e8","parent":{"type":"block_id","block_id":"5db39f27-3de4-4469-94b8-3cf512f812e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":true,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 801 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 802 | 2","href":null}],"color":"default"}},{"object":"block","id":"b9f715d0-9b99-4519-8e55-72d099e3f455","parent":{"type":"block_id","block_id":"5db39f27-3de4-4469-94b8-3cf512f812e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 803 | 4","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 804 | 4","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"5e634cc5-69ec-40f6-a017-320afc92f7b8"}' 805 | recorded_at: Sun, 03 Dec 2023 06:50:55 GMT 806 | - request: 807 | method: get 808 | uri: https://api.notion.com/v1/blocks/a7084141-6cc5-42a4-add6-f29f8b74d8e8/children 809 | body: 810 | encoding: US-ASCII 811 | string: '' 812 | headers: 813 | Accept: 814 | - application/json; charset=utf-8 815 | User-Agent: 816 | - Notion Ruby Client/1.2.2 817 | Authorization: 818 | - "" 819 | Notion-Version: 820 | - '2022-02-22' 821 | response: 822 | status: 823 | code: 200 824 | message: OK 825 | headers: 826 | date: 827 | - Sun, 03 Dec 2023 06:50:55 GMT 828 | content-type: 829 | - application/json; charset=utf-8 830 | transfer-encoding: 831 | - chunked 832 | connection: 833 | - keep-alive 834 | x-powered-by: 835 | - Express 836 | x-notion-request-id: 837 | - 91cdecda-b949-4a4c-b725-0041e1e0541b 838 | etag: 839 | - W/"355-uAx86duMd0kDIBSqbX5ixOONf2k" 840 | vary: 841 | - Accept-Encoding 842 | cf-cache-status: 843 | - DYNAMIC 844 | set-cookie: 845 | - __cf_bm=1JQI4pDHOviWt7hDmDZgkjCuMD2m.T95uhv0dSw9EyA-1701586255-0-AYiPbG8gNimUlZmtLy+D0CdttmR8MsywpQHEJ82RF5hWOdx5kiwrlZoldvQWhQGBY9OYCI2BpdmMSii+PUtBe0c=; 846 | path=/; expires=Sun, 03-Dec-23 07:20:55 GMT; domain=.notion.com; HttpOnly; 847 | Secure; SameSite=None 848 | server: 849 | - cloudflare 850 | cf-ray: 851 | - 82f9e0cfcf1700a0-CDG 852 | content-encoding: 853 | - gzip 854 | body: 855 | encoding: UTF-8 856 | string: '{"object":"list","results":[{"object":"block","id":"540bd8c0-200e-4630-b87a-7827bcd311b0","parent":{"type":"block_id","block_id":"a7084141-6cc5-42a4-add6-f29f8b74d8e8"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":"item 857 | 3","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 858 | 3","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"91cdecda-b949-4a4c-b725-0041e1e0541b"}' 859 | recorded_at: Sun, 03 Dec 2023 06:50:55 GMT 860 | - request: 861 | method: get 862 | uri: https://api.notion.com/v1/blocks/49fcc456-2bec-43af-81ba-962dc4cf9465/children 863 | body: 864 | encoding: US-ASCII 865 | string: '' 866 | headers: 867 | Accept: 868 | - application/json; charset=utf-8 869 | User-Agent: 870 | - Notion Ruby Client/1.2.2 871 | Authorization: 872 | - "" 873 | Notion-Version: 874 | - '2022-02-22' 875 | response: 876 | status: 877 | code: 200 878 | message: OK 879 | headers: 880 | date: 881 | - Sun, 03 Dec 2023 06:50:55 GMT 882 | content-type: 883 | - application/json; charset=utf-8 884 | transfer-encoding: 885 | - chunked 886 | connection: 887 | - keep-alive 888 | x-powered-by: 889 | - Express 890 | x-notion-request-id: 891 | - 637021bd-4d26-41be-8d67-a5b7840f7b30 892 | etag: 893 | - W/"61a-4ShKxvADzrl5XKB8RSB7tOUxmpo" 894 | vary: 895 | - Accept-Encoding 896 | content-encoding: 897 | - gzip 898 | cf-cache-status: 899 | - DYNAMIC 900 | set-cookie: 901 | - __cf_bm=lnym_zbXEF4bOPHDRU1RjXqaMQuQcx9mn.ysRwLt0Ds-1701586255-0-AdDrBeo6JVOj7qfnPGIo0h0bdCaF1CkVA5ZF5C1rhBrd/94ZFEypVX7VUmD4H2sWOcTi4+g8kC/TVt4uqNO1nd8=; 902 | path=/; expires=Sun, 03-Dec-23 07:20:55 GMT; domain=.notion.com; HttpOnly; 903 | Secure; SameSite=None 904 | server: 905 | - cloudflare 906 | cf-ray: 907 | - 82f9e0d15dd3d584-CDG 908 | body: 909 | encoding: UTF-8 910 | string: '{"object":"list","results":[{"object":"block","id":"9134a99f-b20a-4ba0-adfb-253a4da8ae10","parent":{"type":"block_id","block_id":"49fcc456-2bec-43af-81ba-962dc4cf9465"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2022-09-03T12:45:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":true,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 911 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 912 | 2","href":null}],"color":"default"}},{"object":"block","id":"a2e61f44-22d9-4454-aba9-0b34dc5d8b73","parent":{"type":"block_id","block_id":"49fcc456-2bec-43af-81ba-962dc4cf9465"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 913 | 4","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 914 | 4","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"637021bd-4d26-41be-8d67-a5b7840f7b30"}' 915 | recorded_at: Sun, 03 Dec 2023 06:50:55 GMT 916 | - request: 917 | method: get 918 | uri: https://api.notion.com/v1/blocks/9134a99f-b20a-4ba0-adfb-253a4da8ae10/children 919 | body: 920 | encoding: US-ASCII 921 | string: '' 922 | headers: 923 | Accept: 924 | - application/json; charset=utf-8 925 | User-Agent: 926 | - Notion Ruby Client/1.2.2 927 | Authorization: 928 | - "" 929 | Notion-Version: 930 | - '2022-02-22' 931 | response: 932 | status: 933 | code: 200 934 | message: OK 935 | headers: 936 | date: 937 | - Sun, 03 Dec 2023 06:50:56 GMT 938 | content-type: 939 | - application/json; charset=utf-8 940 | transfer-encoding: 941 | - chunked 942 | connection: 943 | - keep-alive 944 | x-powered-by: 945 | - Express 946 | x-notion-request-id: 947 | - 59cf3f7b-0e62-4ded-a4a5-6a80a9f9cf89 948 | etag: 949 | - W/"355-UqqHWG06bmdTzZtzje9cxJKwN/k" 950 | vary: 951 | - Accept-Encoding 952 | cf-cache-status: 953 | - DYNAMIC 954 | set-cookie: 955 | - __cf_bm=Z8PvczsaXCXgS.NIKA8YNwNW_Oxu_uo4uAa.yJSPERk-1701586256-0-AdTm41/K4EmsTKdSmOM1Lsmu7P69XGJxotxHPRK2pRAkMfZ8Y8EaklyhHvte1ozHBc2MWYKy8XLrQNEK+b3MVl8=; 956 | path=/; expires=Sun, 03-Dec-23 07:20:56 GMT; domain=.notion.com; HttpOnly; 957 | Secure; SameSite=None 958 | server: 959 | - cloudflare 960 | cf-ray: 961 | - 82f9e0d30e10d6aa-CDG 962 | content-encoding: 963 | - gzip 964 | body: 965 | encoding: UTF-8 966 | string: '{"object":"list","results":[{"object":"block","id":"32a9f186-d1ae-496c-98f6-f56df912ec18","parent":{"type":"block_id","block_id":"9134a99f-b20a-4ba0-adfb-253a4da8ae10"},"created_time":"2022-09-03T12:45:00.000Z","last_edited_time":"2023-11-22T06:30:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"numbered_list_item","numbered_list_item":{"rich_text":[{"type":"text","text":{"content":"item 967 | 3","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"item 968 | 3","href":null}],"color":"default"}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"59cf3f7b-0e62-4ded-a4a5-6a80a9f9cf89"}' 969 | recorded_at: Sun, 03 Dec 2023 06:50:55 GMT 970 | - request: 971 | method: get 972 | uri: https://api.notion.com/v1/blocks/fffe8b14-de13-420e-af3b-c000cc73fb89/children 973 | body: 974 | encoding: US-ASCII 975 | string: '' 976 | headers: 977 | Accept: 978 | - application/json; charset=utf-8 979 | User-Agent: 980 | - Notion Ruby Client/1.2.2 981 | Authorization: 982 | - "" 983 | Notion-Version: 984 | - '2022-02-22' 985 | response: 986 | status: 987 | code: 200 988 | message: OK 989 | headers: 990 | date: 991 | - Sun, 03 Dec 2023 06:50:56 GMT 992 | content-type: 993 | - application/json; charset=utf-8 994 | transfer-encoding: 995 | - chunked 996 | connection: 997 | - keep-alive 998 | x-powered-by: 999 | - Express 1000 | x-notion-request-id: 1001 | - 5add9acf-2c35-460e-87dd-74e65aaef00f 1002 | etag: 1003 | - W/"c85-tlOGr8pqE+MZhk++6RCK/J0/qXQ" 1004 | vary: 1005 | - Accept-Encoding 1006 | content-encoding: 1007 | - gzip 1008 | cf-cache-status: 1009 | - DYNAMIC 1010 | set-cookie: 1011 | - __cf_bm=9K7PYDEo4x5iDvguAuELJf5Cr2Bu1fAx9NjEu2gc5so-1701586256-0-AS1GSIdOsS5ecYJesPnosB8l7yWSgcv5RkCfsCXs1Tx+3lpZ/ToAywLhaR0EA6aQjidKXHjkA7cTL0tFjLYmMUs=; 1012 | path=/; expires=Sun, 03-Dec-23 07:20:56 GMT; domain=.notion.com; HttpOnly; 1013 | Secure; SameSite=None 1014 | server: 1015 | - cloudflare 1016 | cf-ray: 1017 | - 82f9e0d49bf4d626-CDG 1018 | body: 1019 | encoding: UTF-8 1020 | string: '{"object":"list","results":[{"object":"block","id":"9446a67d-ec5e-4738-85e7-7f3f028c5f4e","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[],[{"type":"text","text":{"content":"Column 1021 | 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Column 1022 | 1","href":null}],[{"type":"text","text":{"content":"Column 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Column 1023 | 1","href":null}]]}},{"object":"block","id":"5db51bf0-5dbf-4c6c-9231-46ea9d1ecc2a","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[{"type":"text","text":{"content":"Row 1024 | 1","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Row 1025 | 1","href":null}],[{"type":"text","text":{"content":"ñaña","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"ñaña","href":null}],[{"type":"text","text":{"content":"blabla","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"blabla","href":null}]]}},{"object":"block","id":"5f0644ce-d674-476d-8182-b2985abc8a87","parent":{"type":"block_id","block_id":"fffe8b14-de13-420e-af3b-c000cc73fb89"},"created_time":"2022-09-16T03:46:00.000Z","last_edited_time":"2022-09-16T03:47:00.000Z","created_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"last_edited_by":{"object":"user","id":"db313571-0280-411f-a6de-70e826421d12"},"has_children":false,"archived":false,"type":"table_row","table_row":{"cells":[[{"type":"text","text":{"content":"Row 1026 | 2","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"Row 1027 | 2","href":null}],[{"type":"text","text":{"content":"prupru","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"prupru","href":null}],[{"type":"text","text":{"content":"tinonino","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"tinonino","href":null}]]}}],"next_cursor":null,"has_more":false,"type":"block","block":{},"request_id":"5add9acf-2c35-460e-87dd-74e65aaef00f"}' 1028 | recorded_at: Sun, 03 Dec 2023 06:50:56 GMT 1029 | recorded_with: VCR 6.2.0 1030 | -------------------------------------------------------------------------------- /spec/jekyll-notion_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "spec_helper" 4 | require "support/page" 5 | require "support/page_data" 6 | require "support/collection" 7 | require "support/notion_token" 8 | 9 | describe(JekyllNotion) do 10 | let(:source_dir) { SOURCE_DIR } 11 | let(:config) do 12 | Jekyll.configuration({ 13 | "full_rebuild" => true, 14 | "source" => source_dir, 15 | "destination" => dest_dir, 16 | "show_drafts" => false, 17 | "url" => "http://example.org", 18 | "name" => "My site", 19 | "author" => { 20 | "name" => "Professor Moriarty", 21 | }, 22 | "collections" => collections, 23 | "notion" => notion_config, 24 | }) 25 | end 26 | let(:collections) { nil } 27 | let(:notion_config) { nil } 28 | let(:site) { Jekyll::Site.new(config) } 29 | 30 | before do 31 | allow(Jekyll.logger).to receive(:info) 32 | allow(Jekyll.logger).to receive(:warn) 33 | end 34 | 35 | describe "configuration" do 36 | before do 37 | allow(Notion::Client).to receive(:new).and_call_original 38 | end 39 | 40 | context "when no configuration is provided" do 41 | it "logs a warning" do 42 | VCR.use_cassette("notion_page") { site.process } 43 | 44 | expect(Jekyll.logger).to have_received(:warn).with("Jekyll Notion:", 45 | "No configuration provided") 46 | end 47 | 48 | it "does not create an instance of Notion::Client" do 49 | expect(Notion::Client).not_to have_received(:new) 50 | end 51 | end 52 | 53 | context "when NOTION_TOKEN is not present" do 54 | it_behaves_like "NOTION_TOKEN is not provided", nil 55 | end 56 | 57 | context "when NOTION_TOKEN is empty" do 58 | it_behaves_like "NOTION_TOKEN is not provided", "" 59 | end 60 | 61 | context "when the databases property is nil" do 62 | let(:notion_config) { { "databases" => nil } } 63 | 64 | it "does not create a collection" do 65 | expect_any_instance_of(Notion::Client).not_to receive(:database_query) 66 | 67 | VCR.use_cassette("notion_database_empty") { site.process } 68 | end 69 | end 70 | 71 | context "when the databases property id is nil" do 72 | let(:notion_config) { { "databases" => [{ "id" => nil }] } } 73 | 74 | it "does not create a collection" do 75 | expect_any_instance_of(Notion::Client).not_to receive(:database_query) 76 | 77 | VCR.use_cassette("notion_database_empty") { site.process } 78 | end 79 | end 80 | end 81 | 82 | context "when declaring a notion page" do 83 | before do 84 | VCR.use_cassette("notion_page") { site.process } 85 | end 86 | 87 | let(:notion_config) do 88 | { 89 | "pages" => [{ 90 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 91 | }], 92 | } 93 | end 94 | 95 | it_behaves_like "a jekyll page" 96 | 97 | context "when site is processed a second time" do 98 | before do 99 | VCR.use_cassette("notion_page") { site.process } 100 | end 101 | 102 | it "pages is not empty" do 103 | expect(site.pages).not_to be_empty 104 | end 105 | end 106 | 107 | context "when the data option is set" do 108 | let(:notion_config) do 109 | { 110 | "pages" => [{ 111 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 112 | "data" => "page", 113 | }], 114 | } 115 | end 116 | 117 | it_behaves_like "a jekyll data object", "page" 118 | end 119 | end 120 | 121 | context "when multiple pages are declared" do 122 | before do 123 | VCR.use_cassette("notion_page") { site.process } 124 | end 125 | 126 | let(:notion_config) do 127 | { 128 | "pages" => [{ 129 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 130 | }, { 131 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 132 | },], 133 | } 134 | end 135 | 136 | it_behaves_like "a jekyll page" 137 | end 138 | 139 | context "when a notion database is declared" do 140 | before do 141 | VCR.use_cassette("notion_database") { site.process } 142 | end 143 | 144 | context "with the default collection" do 145 | let(:notion_config) do 146 | { 147 | "databases" => [{ 148 | "id" => "1ae33dd5f3314402948069517fa40ae2", 149 | }], 150 | } 151 | end 152 | 153 | it_behaves_like "a jekyll collection", "posts" 154 | 155 | it "matches the YYYY-MM-DD-title.md format for each post" do 156 | site.posts.each do |post| 157 | expect(post.path).to match(%r!_posts/\d{4}-\d{2}-\d{2}-.*.md$!) 158 | end 159 | end 160 | end 161 | 162 | context "with a custom collection" do 163 | let(:collections) { { "articles" => { "output" => true } } } 164 | let(:notion_config) do 165 | { 166 | "databases" => [{ 167 | "id" => "1ae33dd5f3314402948069517fa40ae2", 168 | "collection" => "articles", 169 | }], 170 | } 171 | end 172 | 173 | it_behaves_like "a jekyll collection", "articles" 174 | end 175 | end 176 | 177 | context "when filter is set" do 178 | let(:filter) { { :property => "blabla", :checkbox => { :equals => true } } } 179 | let(:notion_config) do 180 | { 181 | "databases" => [{ 182 | "id" => "1ae33dd5f3314402948069517fa40ae2", 183 | "filter" => filter, 184 | }], 185 | } 186 | end 187 | 188 | it do 189 | expect_any_instance_of(Notion::Client).to receive(:database_query) 190 | .with(hash_including(:filter => filter)).and_call_original 191 | 192 | VCR.use_cassette("notion_database") { site.process } 193 | end 194 | end 195 | 196 | context "when sort is set" do 197 | let(:sorts) { [{ :timestamp => "created_time", :direction => "ascending" }] } 198 | let(:notion_config) do 199 | { 200 | "databases" => [{ 201 | "id" => "1ae33dd5f3314402948069517fa40ae2", 202 | "sorts" => sorts, 203 | }], 204 | } 205 | end 206 | 207 | it do 208 | expect_any_instance_of(Notion::Client).to receive(:database_query) 209 | .with(hash_including(:sorts => sorts)).and_call_original 210 | 211 | VCR.use_cassette("notion_database") { site.process } 212 | end 213 | end 214 | 215 | context "when the site is rebuilt in watch mode" do 216 | let(:notion_config) do 217 | { 218 | "pages" => [{ 219 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 220 | }], 221 | "databases" => [{ 222 | "id" => "1ae33dd5f3314402948069517fa40ae2", 223 | }], 224 | } 225 | end 226 | let(:notion_client) { instance_double(Notion::Client) } 227 | 228 | before do 229 | allow(NotionToMd::Blocks).to receive(:build) 230 | allow(NotionToMd::Page).to receive(:new) 231 | allow(Notion::Client).to receive(:new).and_return(notion_client) 232 | allow(notion_client).to receive(:page).and_return({}) 233 | allow(notion_client).to receive(:database_query).and_return({ :results => [] }) 234 | allow(notion_client).to receive(:block_children).and_return([]) 235 | 236 | site.process 237 | site.process 238 | end 239 | 240 | it "queries notion database once" do 241 | expect(notion_client).to have_received(:database_query).once 242 | end 243 | 244 | it "queries the notion page once" do 245 | expect(notion_client).to have_received(:page).once 246 | end 247 | 248 | context "when fetch_on_watch is set" do 249 | let(:notion_config) do 250 | { 251 | "fetch_on_watch" => true, 252 | "pages" => [{ 253 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 254 | }], 255 | "databases" => [{ 256 | "id" => "1ae33dd5f3314402948069517fa40ae2", 257 | }], 258 | } 259 | end 260 | 261 | it "queries notion database as many times as the site rebuild" do 262 | expect(notion_client).to have_received(:database_query).twice 263 | end 264 | 265 | it "queries the notion page as many times as the site rebuild" do 266 | expect(notion_client).to have_received(:page).twice 267 | end 268 | end 269 | end 270 | 271 | context "when multiple databases" do 272 | let(:collections) { { "articles" => { "output" => true } } } 273 | let(:notion_config) do 274 | { 275 | "databases" => [{ 276 | "id" => "1ae33dd5f3314402948069517fa40ae2", 277 | }, { 278 | "id" => "1ae33dd5f3314402948069517fa40ae2", 279 | "collection" => "articles", 280 | },], 281 | } 282 | end 283 | 284 | before do 285 | VCR.use_cassette("notion_database") { site.process } 286 | end 287 | 288 | it_behaves_like "a jekyll collection", "posts" 289 | it_behaves_like "a jekyll collection", "articles" 290 | end 291 | 292 | context "when there is a post present in source dir" do 293 | let(:source_dir) { SOURCE_DIR_2 } 294 | let(:notion_config) do 295 | { 296 | "databases" => [{ 297 | "id" => "1ae33dd5f3314402948069517fa40ae2", 298 | }], 299 | } 300 | end 301 | 302 | before do 303 | VCR.use_cassette("notion_database") { site.process } 304 | end 305 | 306 | it "adds the document to the posts collection" do 307 | expect(site.posts.size).to be == 7 308 | end 309 | 310 | it "keeps local posts" do 311 | # Files present in the source dir are added to the posts collection as Jekyll::Document instances 312 | post_1 = site.posts.find { |p| p.path.end_with?("2022-01-23-page-1.md") } 313 | post_2 = site.posts.find { |p| p.path.end_with?("2022-01-01-my-post.md") } 314 | expect(post_1).to be_an_instance_of(Jekyll::Document) 315 | expect(post_2).to be_an_instance_of(Jekyll::Document) 316 | end 317 | end 318 | 319 | context "when the date property is declared in a notion page" do 320 | # There's only one document in the database with the "Date" property set to "2021-12-30" 321 | # 322 | let(:date) { "2022-01-23" } 323 | let(:notion_config) do 324 | { 325 | "databases" => [{ 326 | "id" => "1ae33dd5f3314402948069517fa40ae2", 327 | }], 328 | } 329 | end 330 | 331 | before do 332 | VCR.use_cassette("notion_database") { site.process } 333 | end 334 | 335 | it "sets the post date" do 336 | expect(site.posts.find { |p| p.data["date"] == Time.parse(date) }).not_to be_nil 337 | end 338 | 339 | it "sets the date in the filename" do 340 | expect(site.posts.find { |p| p.path.end_with?("#{date}-page-1.md") }).not_to be_nil 341 | end 342 | end 343 | 344 | context "when the date property is not declared in a notion page" do 345 | # There's only one document in the database with the "created_time" property set to "2022-09-17" 346 | # 347 | let(:created_time) { "2022-09-17" } 348 | let(:notion_config) do 349 | { 350 | "databases" => [{ 351 | "id" => "1ae33dd5f3314402948069517fa40ae2", 352 | }], 353 | } 354 | end 355 | 356 | before do 357 | VCR.use_cassette("notion_database") { site.process } 358 | end 359 | 360 | it "sets the post from the created_time" do 361 | expect(site.posts.find { |p| p.data["date"] == Time.parse(created_time) }).not_to be_nil 362 | end 363 | 364 | it "sets the date from created_time in the filename" do 365 | expect(site.posts.find { |p| p.path.end_with?("#{created_time}-tables.md") }).not_to be_nil 366 | end 367 | end 368 | end 369 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "jekyll" 4 | require File.expand_path("../lib/jekyll-notion", __dir__) 5 | require "simplecov" 6 | require "vcr" 7 | 8 | SimpleCov.start do 9 | enable_coverage :branch 10 | end 11 | 12 | ENV["JEKYLL_ENV"] = "test" 13 | 14 | Jekyll.logger.log_level = :error 15 | 16 | VCR.configure do |config| 17 | config.cassette_library_dir = "spec/fixtures/vcr_cassettes" 18 | config.hook_into :faraday 19 | 20 | # Redact the Notion token from the VCR cassettes 21 | config.before_record do |interaction| 22 | to_be_redacted = interaction.request.headers["Authorization"] 23 | 24 | to_be_redacted.each do |redacted_text| 25 | interaction.filter!(redacted_text, "") 26 | end 27 | 28 | sensitive_values = (ENV["NOTION_SENSITIVE_VALUES"] || "").split("|") 29 | replacement_values = (ENV["NOTION_SENSITIVE_REPLACEMENTS"] || "").split("|") 30 | sensitive_values.each_with_index do |sensitive_value, index| 31 | interaction.filter!(sensitive_value, replacement_values[index]) 32 | end 33 | end 34 | 35 | config.default_cassette_options = { 36 | :allow_playback_repeats => true, 37 | :record => :new_episodes, 38 | } 39 | end 40 | 41 | RSpec.configure do |config| 42 | config.run_all_when_everything_filtered = true 43 | config.filter_run :focus 44 | 45 | SOURCE_DIR = File.expand_path("fixtures/my_site", __dir__) 46 | SOURCE_DIR_2 = File.expand_path("fixtures/my_site_2", __dir__) 47 | DEST_DIR = File.expand_path("dest", __dir__) 48 | 49 | def dest_dir(*files) 50 | File.join(DEST_DIR, *files) 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /spec/support/collection.rb: -------------------------------------------------------------------------------- 1 | RSpec.shared_examples "a jekyll collection" do |collection_name| 2 | it "page is stored in destination directory" do 3 | expected_path = site.collections[collection_name].first.destination(".") 4 | expect(File).to exist(expected_path) 5 | end 6 | 7 | it "stores every page title in the collection" do 8 | site.collections[collection_name].each do |page| 9 | expect(["Page 1", "Page 2", "Page 3", "lists", "tables", "Title: with “double quotes” and ‘single quotes’ and :colons:"]).to be_include(page.title) 10 | end 11 | end 12 | 13 | context "when site is processed a second time" do 14 | before(:each) do 15 | VCR.use_cassette("notion_database") { site.process } 16 | end 17 | 18 | it "keeps the collection with the same length" do 19 | expect(site.collections[collection_name].size).to be(6) 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /spec/support/data.rb: -------------------------------------------------------------------------------- 1 | RSpec.shared_examples "a jekyll data object" do 2 | it "creates a the declared key in data object" do 3 | expect(site.data).to have_key(data_name) 4 | end 5 | 6 | it "contains the same size as the returned list" do 7 | expect(site.data[data_name].size).to be == size 8 | end 9 | 10 | context "when site is processed a second time" do 11 | before(:each) do 12 | site.process 13 | end 14 | 15 | it "the data object is not nil" do 16 | expect(site.data[data_name]).not_to be_nil 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/support/notion_token.rb: -------------------------------------------------------------------------------- 1 | RSpec.shared_examples "NOTION_TOKEN is not provided" do |notion_token| 2 | before do 3 | allow(ENV).to receive(:[]).with("NOTION_TOKEN").and_return(notion_token) 4 | 5 | VCR.use_cassette("notion_page") { site.process } 6 | end 7 | 8 | let(:notion_config) do 9 | { 10 | "pages" => [{ 11 | "id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3", 12 | }], 13 | } 14 | end 15 | 16 | it "does not create an instance of Notion::Client" do 17 | expect(Notion::Client).not_to have_received(:new) 18 | end 19 | 20 | it "logs a warning" do 21 | expect(Jekyll.logger).to have_received(:warn).with("Jekyll Notion:", 22 | "Cannot read from Notion becuase NOTION_TOKEN was not provided") 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /spec/support/page.rb: -------------------------------------------------------------------------------- 1 | RSpec.shared_examples "a jekyll page" do 2 | it "stores id into page data" do 3 | expect(site.pages.first.data).to include("id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3") 4 | end 5 | 6 | it "stores created_time into page data" do 7 | expect(site.pages.first.data).to include("created_time" => Time.parse("2022-01-23 12:31:00.000000000 +0000")) 8 | end 9 | 10 | it "stores last_edited_time into page data" do 11 | expect(site.pages.first.data).to include("last_edited_time" => Time.parse("2023-12-02 22:09:00 +0000")) 12 | end 13 | 14 | it "stores cover into page data" do 15 | expect(site.pages.first.data).to include("cover" => "https://www.notion.so/images/page-cover/met_canaletto_1720.jpg") 16 | end 17 | 18 | it "stores icon into page data" do 19 | expect(site.pages.first.data).to include("icon" => "💥") 20 | end 21 | 22 | it "stores archived into page data" do 23 | expect(site.pages.first.data).to include("archived" => false) 24 | end 25 | 26 | it "stores multi_select into page data" do 27 | expected_value = %w(mselect1 mselect2 mselect3) 28 | expect(site.pages.first.data).to include("multi_select" => expected_value) 29 | end 30 | 31 | it "stores select into page data" do 32 | expect(site.pages.first.data).to include("select" => "select1") 33 | end 34 | 35 | it "stores people into page data" do 36 | expect(site.pages.first.data).to include("person" => ["Armando Broncas"]) 37 | end 38 | 39 | it "stores number into page data" do 40 | expect(site.pages.first.data).to include("numbers" => 12) 41 | end 42 | 43 | it "stores phone_number into page data" do 44 | expect(site.pages.first.data).to include("phone" => 983_788_379) 45 | end 46 | 47 | it "stores files into page data" do 48 | expect(site.pages.first.data).to include("file" => ["https://prod-files-secure.s3.us-west-2.amazonaws.com/4783548e-2442-4bf3-bb3d-ed4ddd2dcdf0/23e8b74e-86d1-4b3a-bd9a-dd0415a954e4/me.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20231203%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20231203T065054Z&X-Amz-Expires=3600&X-Amz-Signature=f141e8d63e2155c14c08a6787b2a1ede1c528a189c49179e972c914a76b0a272&X-Amz-SignedHeaders=host&x-id=GetObject"]) 49 | end 50 | 51 | it "stores email into page data" do 52 | expect(site.pages.first.data).to include("email" => "hola@test.com") 53 | end 54 | 55 | it "stores checkbox into page data" do 56 | expect(site.pages.first.data).to include("checkbox" => false) 57 | end 58 | 59 | it "stores title into page data" do 60 | expect(site.pages.first.data).to include("title" => "Page 1") 61 | end 62 | 63 | it "stores date into page data" do 64 | expect(site.pages.first.data).to include("date" => Time.parse("2021-12-30")) 65 | end 66 | 67 | it "page is stored in destination directory" do 68 | expect(File).to exist(site.pages.first.destination(".")) 69 | end 70 | end 71 | -------------------------------------------------------------------------------- /spec/support/page_data.rb: -------------------------------------------------------------------------------- 1 | RSpec.shared_examples "a jekyll data object" do |data_name| 2 | it "stores id into the data object" do 3 | expect(site.data[data_name]).to include("id" => "9dc17c9c-9d2e-469d-bbf0-f9648f3288d3") 4 | end 5 | 6 | it "stores created_time into the data object" do 7 | expect(site.data[data_name]).to include("created_time" => "2022-01-23T12:31:00.000Z") 8 | end 9 | 10 | it "stores last_edited_time into the data object" do 11 | expect(site.data[data_name]).to include("last_edited_time" => "2023-12-02T22:09:00.000Z") 12 | end 13 | 14 | it "stores cover into the data object" do 15 | expect(site.data[data_name]).to include("cover" => "https://www.notion.so/images/page-cover/met_canaletto_1720.jpg") 16 | end 17 | 18 | it "stores icon into the data object" do 19 | expect(site.data[data_name]).to include("icon" => "💥") 20 | end 21 | 22 | it "stores archived into the data object" do 23 | expect(site.data[data_name]).to include("archived" => false) 24 | end 25 | 26 | it "stores multi_select into the data object" do 27 | expected_value = %w(mselect1 mselect2 mselect3) 28 | expect(site.data[data_name]).to include("multi_select" => expected_value) 29 | end 30 | 31 | it "stores select into the data object" do 32 | expect(site.data[data_name]).to include("select" => "select1") 33 | end 34 | 35 | it "stores people into the data object" do 36 | expect(site.data[data_name]).to include("person" => ["Armando Broncas"]) 37 | end 38 | 39 | it "stores number into the data object" do 40 | expect(site.data[data_name]).to include("numbers" => 12) 41 | end 42 | 43 | it "stores phone_number into the data object" do 44 | expect(site.data[data_name]).to include("phone" => "983788379") 45 | end 46 | 47 | it "stores files into the data object" do 48 | expect(site.data[data_name]).to include("file" => ["https://prod-files-secure.s3.us-west-2.amazonaws.com/4783548e-2442-4bf3-bb3d-ed4ddd2dcdf0/23e8b74e-86d1-4b3a-bd9a-dd0415a954e4/me.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20231203%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20231203T065050Z&X-Amz-Expires=3600&X-Amz-Signature=c0b4d6da2da758e947be9abec351edebc1fdb115805aec69b85835954b0a597a&X-Amz-SignedHeaders=host&x-id=GetObject"]) 49 | end 50 | 51 | it "stores email into the data object" do 52 | expect(site.data[data_name]).to include("email" => "hola@test.com") 53 | end 54 | 55 | it "stores checkbox into the data object" do 56 | expect(site.data[data_name]).to include("checkbox" => "false") 57 | end 58 | 59 | it "stores title into the data object" do 60 | expect(site.data[data_name]).to include("title" => "Page 1") 61 | end 62 | 63 | it "stores date into the data object" do 64 | expect(site.data[data_name]).to include("date" => Time.parse("2021-12-30")) 65 | end 66 | 67 | it "contains the content property" do 68 | expect(site.data[data_name]).to have_key("content") 69 | end 70 | 71 | it "stores the page body into the content property" do 72 | expect(site.data[data_name]["content"]).to include("Lorem ipsum") 73 | end 74 | end 75 | --------------------------------------------------------------------------------