notion-client-ruby 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.env.example +8 -0
- data/LICENSE.txt +21 -0
- data/README.md +95 -0
- data/Rakefile +120 -0
- data/benchmark/load.rb +9 -0
- data/benchmark/objects.rb +14 -0
- data/codegen/generator.rb +277 -0
- data/codegen/naming.yml +61 -0
- data/codegen/openapi.json +47206 -0
- data/codegen/openapi.lock +1 -0
- data/codegen/overrides.yml +14 -0
- data/docs/design.md +7 -0
- data/docs/recipes/csv-import.md +14 -0
- data/docs/recipes/oauth.md +9 -0
- data/docs/recipes/page-sync.md +10 -0
- data/docs/recipes/pagination.md +9 -0
- data/docs/recipes/uploads.md +9 -0
- data/docs/recipes/webhooks.md +28 -0
- data/lib/generators/notion/install_generator.rb +15 -0
- data/lib/generators/notion/templates/notion.rb +5 -0
- data/lib/notion/batch.rb +45 -0
- data/lib/notion/blocks/builder.rb +57 -0
- data/lib/notion/blocks/chunker.rb +70 -0
- data/lib/notion/blocks.rb +4 -0
- data/lib/notion/client.rb +138 -0
- data/lib/notion/compat/legacy.rb +47 -0
- data/lib/notion/compat.rb +94 -0
- data/lib/notion/config.rb +88 -0
- data/lib/notion/endpoints/async_tasks.rb +26 -0
- data/lib/notion/endpoints/base.rb +107 -0
- data/lib/notion/endpoints/blocks.rb +39 -0
- data/lib/notion/endpoints/data_sources.rb +30 -0
- data/lib/notion/endpoints/file_uploads.rb +35 -0
- data/lib/notion/endpoints/pages.rb +56 -0
- data/lib/notion/endpoints/views.rb +16 -0
- data/lib/notion/errors.rb +111 -0
- data/lib/notion/experimental.rb +12 -0
- data/lib/notion/file_uploader.rb +142 -0
- data/lib/notion/generated/endpoints/agents.rb +64 -0
- data/lib/notion/generated/endpoints/async_tasks.rb +20 -0
- data/lib/notion/generated/endpoints/blocks.rb +49 -0
- data/lib/notion/generated/endpoints/comments.rb +48 -0
- data/lib/notion/generated/endpoints/custom_emojis.rb +20 -0
- data/lib/notion/generated/endpoints/data_sources.rb +49 -0
- data/lib/notion/generated/endpoints/databases.rb +34 -0
- data/lib/notion/generated/endpoints/file_uploads.rb +51 -0
- data/lib/notion/generated/endpoints/meeting_notes.rb +27 -0
- data/lib/notion/generated/endpoints/oauth.rb +34 -0
- data/lib/notion/generated/endpoints/pages.rb +65 -0
- data/lib/notion/generated/endpoints/search.rb +20 -0
- data/lib/notion/generated/endpoints/sessions.rb +48 -0
- data/lib/notion/generated/endpoints/users.rb +34 -0
- data/lib/notion/generated/endpoints/views.rb +73 -0
- data/lib/notion/generated.rb +41 -0
- data/lib/notion/id.rb +14 -0
- data/lib/notion/markdown/local_converter.rb +34 -0
- data/lib/notion/middleware/api_version.rb +18 -0
- data/lib/notion/middleware/authentication.rb +52 -0
- data/lib/notion/middleware/compatibility.rb +17 -0
- data/lib/notion/middleware/instrumentation.rb +63 -0
- data/lib/notion/middleware/json_codec.rb +37 -0
- data/lib/notion/middleware/logging.rb +36 -0
- data/lib/notion/middleware/rate_limiter.rb +78 -0
- data/lib/notion/middleware/retry.rb +45 -0
- data/lib/notion/middleware/stack.rb +20 -0
- data/lib/notion/middleware.rb +11 -0
- data/lib/notion/multipart.rb +39 -0
- data/lib/notion/oauth.rb +91 -0
- data/lib/notion/object_factory.rb +39 -0
- data/lib/notion/objects/base.rb +62 -0
- data/lib/notion/objects/list.rb +56 -0
- data/lib/notion/objects/property_schema.rb +57 -0
- data/lib/notion/objects/property_value.rb +56 -0
- data/lib/notion/objects/types.rb +56 -0
- data/lib/notion/objects.rb +8 -0
- data/lib/notion/pagination/cursor_paginator.rb +25 -0
- data/lib/notion/query/builder.rb +117 -0
- data/lib/notion/query.rb +3 -0
- data/lib/notion/railtie.rb +11 -0
- data/lib/notion/resolver.rb +72 -0
- data/lib/notion/testing.rb +45 -0
- data/lib/notion/transport/net_http_adapter.rb +90 -0
- data/lib/notion/transport.rb +21 -0
- data/lib/notion/version.rb +5 -0
- data/lib/notion/webhooks/event.rb +7 -0
- data/lib/notion/webhooks/rack_middleware.rb +43 -0
- data/lib/notion/webhooks/signature.rb +22 -0
- data/lib/notion/webhooks.rb +7 -0
- data/lib/notion-client-ruby.rb +3 -0
- data/lib/notion.rb +53 -0
- metadata +132 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Blocks < Notion::Endpoints::Base
|
|
9
|
+
operation :retrieve, :get, "/v1/blocks/{block_id}", path: ["block_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :update, :patch, "/v1/blocks/{block_id}", path: ["block_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :delete, :delete, "/v1/blocks/{block_id}", path: ["block_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
12
|
+
operation :children, :get, "/v1/blocks/{block_id}/children", path: ["block_id"], query: ["start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :append_children, :patch, "/v1/blocks/{block_id}/children", path: ["block_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["children"], variants: [["children"]], enums: {}, max_lengths: {} }
|
|
14
|
+
|
|
15
|
+
# Retrieve a block
|
|
16
|
+
# @see https://developers.notion.com/reference/retrieve-a-block
|
|
17
|
+
def retrieve(block_id:, **params, &block)
|
|
18
|
+
params[:block_id] = block_id
|
|
19
|
+
invoke_operation(:retrieve, params, &block)
|
|
20
|
+
end
|
|
21
|
+
# Update a block
|
|
22
|
+
# @see https://developers.notion.com/reference/update-a-block
|
|
23
|
+
def update(block_id:, **params, &block)
|
|
24
|
+
params[:block_id] = block_id
|
|
25
|
+
invoke_operation(:update, params, &block)
|
|
26
|
+
end
|
|
27
|
+
# Delete a block
|
|
28
|
+
# @see https://developers.notion.com/reference/delete-a-block
|
|
29
|
+
def delete(block_id:, **params, &block)
|
|
30
|
+
params[:block_id] = block_id
|
|
31
|
+
invoke_operation(:delete, params, &block)
|
|
32
|
+
end
|
|
33
|
+
# Retrieve block children
|
|
34
|
+
# @see https://developers.notion.com/reference/get-block-children
|
|
35
|
+
def children(block_id:, **params, &block)
|
|
36
|
+
params[:block_id] = block_id
|
|
37
|
+
invoke_operation(:children, params, &block)
|
|
38
|
+
end
|
|
39
|
+
# Append block children
|
|
40
|
+
# @see https://developers.notion.com/reference/patch-block-children
|
|
41
|
+
def append_children(block_id:, children:, **params, &block)
|
|
42
|
+
params[:block_id] = block_id
|
|
43
|
+
params[:children] = children
|
|
44
|
+
invoke_operation(:append_children, params, &block)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Comments < Notion::Endpoints::Base
|
|
9
|
+
operation :create, :post, "/v1/comments", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [["parent", "rich_text"], ["parent", "markdown"], ["discussion_id", "rich_text"], ["discussion_id", "markdown"]], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :list, :get, "/v1/comments", path: [], query: ["block_id", "start_cursor", "page_size"], query_rules: { required: ["block_id"], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :retrieve, :get, "/v1/comments/{comment_id}", path: ["comment_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
12
|
+
operation :update, :patch, "/v1/comments/{comment_id}", path: ["comment_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [["rich_text"], ["markdown"]], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :delete, :delete, "/v1/comments/{comment_id}", path: ["comment_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
|
|
15
|
+
# Create a comment
|
|
16
|
+
# @see https://developers.notion.com/reference/create-a-comment
|
|
17
|
+
def create(**params, &block)
|
|
18
|
+
|
|
19
|
+
invoke_operation(:create, params, &block)
|
|
20
|
+
end
|
|
21
|
+
# List comments
|
|
22
|
+
# @see https://developers.notion.com/reference/list-comments
|
|
23
|
+
def list(block_id:, **params, &block)
|
|
24
|
+
params[:block_id] = block_id
|
|
25
|
+
invoke_operation(:list, params, &block)
|
|
26
|
+
end
|
|
27
|
+
# Retrieve a comment
|
|
28
|
+
# @see https://developers.notion.com/reference/retrieve-comment
|
|
29
|
+
def retrieve(comment_id:, **params, &block)
|
|
30
|
+
params[:comment_id] = comment_id
|
|
31
|
+
invoke_operation(:retrieve, params, &block)
|
|
32
|
+
end
|
|
33
|
+
# Update a comment
|
|
34
|
+
# @see https://developers.notion.com/reference/update-a-comment
|
|
35
|
+
def update(comment_id:, **params, &block)
|
|
36
|
+
params[:comment_id] = comment_id
|
|
37
|
+
invoke_operation(:update, params, &block)
|
|
38
|
+
end
|
|
39
|
+
# Delete a comment
|
|
40
|
+
# @see https://developers.notion.com/reference/delete-a-comment
|
|
41
|
+
def delete(comment_id:, **params, &block)
|
|
42
|
+
params[:comment_id] = comment_id
|
|
43
|
+
invoke_operation(:delete, params, &block)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class CustomEmojis < Notion::Endpoints::Base
|
|
9
|
+
operation :list, :get, "/v1/custom_emojis", path: [], query: ["start_cursor", "page_size", "name"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
|
|
11
|
+
# List custom emojis
|
|
12
|
+
# @see https://developers.notion.com/reference/list-custom-emojis
|
|
13
|
+
def list(**params, &block)
|
|
14
|
+
|
|
15
|
+
invoke_operation(:list, params, &block)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class DataSources < Notion::Endpoints::Base
|
|
9
|
+
operation :retrieve, :get, "/v1/data_sources/{data_source_id}", path: ["data_source_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :update, :patch, "/v1/data_sources/{data_source_id}", path: ["data_source_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :query, :post, "/v1/data_sources/{data_source_id}/query", path: ["data_source_id"], query: ["filter_properties"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {"result_type" => ["page", "data_source"]}, max_lengths: {} }
|
|
12
|
+
operation :create, :post, "/v1/data_sources", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["parent", "properties"], variants: [["parent", "properties"]], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :templates, :get, "/v1/data_sources/{data_source_id}/templates", path: ["data_source_id"], query: ["name", "start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
|
|
15
|
+
# Retrieve a data source
|
|
16
|
+
# @see https://developers.notion.com/reference/retrieve-a-data-source
|
|
17
|
+
def retrieve(data_source_id:, **params, &block)
|
|
18
|
+
params[:data_source_id] = data_source_id
|
|
19
|
+
invoke_operation(:retrieve, params, &block)
|
|
20
|
+
end
|
|
21
|
+
# Update a data source
|
|
22
|
+
# @see https://developers.notion.com/reference/update-a-data-source
|
|
23
|
+
def update(data_source_id:, **params, &block)
|
|
24
|
+
params[:data_source_id] = data_source_id
|
|
25
|
+
invoke_operation(:update, params, &block)
|
|
26
|
+
end
|
|
27
|
+
# Query a data source
|
|
28
|
+
# @see https://developers.notion.com/reference/post-database-query
|
|
29
|
+
def query(data_source_id:, **params, &block)
|
|
30
|
+
params[:data_source_id] = data_source_id
|
|
31
|
+
invoke_operation(:query, params, &block)
|
|
32
|
+
end
|
|
33
|
+
# Create a data source
|
|
34
|
+
# @see https://developers.notion.com/reference/create-a-database
|
|
35
|
+
def create(parent:, properties:, **params, &block)
|
|
36
|
+
params[:parent] = parent
|
|
37
|
+
params[:properties] = properties
|
|
38
|
+
invoke_operation(:create, params, &block)
|
|
39
|
+
end
|
|
40
|
+
# List templates in a data source
|
|
41
|
+
# @see https://developers.notion.com/reference/list-data-source-templates
|
|
42
|
+
def templates(data_source_id:, **params, &block)
|
|
43
|
+
params[:data_source_id] = data_source_id
|
|
44
|
+
invoke_operation(:templates, params, &block)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Databases < Notion::Endpoints::Base
|
|
9
|
+
operation :retrieve, :get, "/v1/databases/{database_id}", path: ["database_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :update, :patch, "/v1/databases/{database_id}", path: ["database_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :create, :post, "/v1/databases", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["parent"], variants: [["parent"]], enums: {}, max_lengths: {} }
|
|
12
|
+
|
|
13
|
+
# Retrieve a database
|
|
14
|
+
# @see https://developers.notion.com/reference/retrieve-database
|
|
15
|
+
def retrieve(database_id:, **params, &block)
|
|
16
|
+
params[:database_id] = database_id
|
|
17
|
+
invoke_operation(:retrieve, params, &block)
|
|
18
|
+
end
|
|
19
|
+
# Update a database
|
|
20
|
+
# @see https://developers.notion.com/reference/update-database
|
|
21
|
+
def update(database_id:, **params, &block)
|
|
22
|
+
params[:database_id] = database_id
|
|
23
|
+
invoke_operation(:update, params, &block)
|
|
24
|
+
end
|
|
25
|
+
# Create a database
|
|
26
|
+
# @see https://developers.notion.com/reference/create-database
|
|
27
|
+
def create(parent:, **params, &block)
|
|
28
|
+
params[:parent] = parent
|
|
29
|
+
invoke_operation(:create, params, &block)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class FileUploads < Notion::Endpoints::Base
|
|
9
|
+
operation :create, :post, "/v1/file_uploads", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {"mode" => ["single_part", "multi_part", "external_url"]}, max_lengths: {} }
|
|
10
|
+
operation :list, :get, "/v1/file_uploads", path: [], query: ["status", "start_cursor", "page_size"], query_rules: { required: [], enums: {"status" => ["pending", "uploaded", "expired", "failed"]}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :send, :post, "/v1/file_uploads/{file_upload_id}/send", path: ["file_upload_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["data", "filename", "content_type"], variants: [["data", "filename", "content_type"]], enums: {}, max_lengths: {} }
|
|
12
|
+
operation :complete, :post, "/v1/file_uploads/{file_upload_id}/complete", path: ["file_upload_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :retrieve, :get, "/v1/file_uploads/{file_upload_id}", path: ["file_upload_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
|
|
15
|
+
# Create a file upload
|
|
16
|
+
# @see https://developers.notion.com/reference/create-file
|
|
17
|
+
def create(**params, &block)
|
|
18
|
+
|
|
19
|
+
invoke_operation(:create, params, &block)
|
|
20
|
+
end
|
|
21
|
+
# List file uploads
|
|
22
|
+
# @see https://developers.notion.com/reference/list-file-uploads
|
|
23
|
+
def list(**params, &block)
|
|
24
|
+
|
|
25
|
+
invoke_operation(:list, params, &block)
|
|
26
|
+
end
|
|
27
|
+
# Upload a file
|
|
28
|
+
# @see https://developers.notion.com/reference/upload-file
|
|
29
|
+
def send(file_upload_id:, data:, filename:, content_type:, **params, &block)
|
|
30
|
+
params[:file_upload_id] = file_upload_id
|
|
31
|
+
params[:data] = data
|
|
32
|
+
params[:filename] = filename
|
|
33
|
+
params[:content_type] = content_type
|
|
34
|
+
invoke_operation(:send, params, &block)
|
|
35
|
+
end
|
|
36
|
+
# Complete a multi-part file upload
|
|
37
|
+
# @see https://developers.notion.com/reference/complete-file-upload
|
|
38
|
+
def complete(file_upload_id:, **params, &block)
|
|
39
|
+
params[:file_upload_id] = file_upload_id
|
|
40
|
+
invoke_operation(:complete, params, &block)
|
|
41
|
+
end
|
|
42
|
+
# Retrieve a file upload
|
|
43
|
+
# @see https://developers.notion.com/reference/retrieve-file-upload
|
|
44
|
+
def retrieve(file_upload_id:, **params, &block)
|
|
45
|
+
params[:file_upload_id] = file_upload_id
|
|
46
|
+
invoke_operation(:retrieve, params, &block)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class MeetingNotes < Notion::Endpoints::Base
|
|
9
|
+
operation :create, :post, "/v1/blocks/meeting_notes", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["source"], variants: [["source", "parent"], ["source"]], enums: {"language" => ["auto", "en", "zh-CN", "zh-TW", "es", "fr", "de", "ja", "ko", "pt", "ru", "th", "vi", "id", "da", "fi", "no", "nl", "it", "sv", "ar", "he", "pl"]}, max_lengths: {"title" => 2000} }
|
|
10
|
+
operation :query, :post, "/v1/blocks/meeting_notes/query", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
|
|
12
|
+
# Create a meeting note
|
|
13
|
+
# @see https://developers.notion.com/reference/create-meeting-note
|
|
14
|
+
def create(source:, **params, &block)
|
|
15
|
+
params[:source] = source
|
|
16
|
+
invoke_operation(:create, params, &block)
|
|
17
|
+
end
|
|
18
|
+
# Query meeting notes
|
|
19
|
+
# @see https://developers.notion.com/reference/query-meeting-notes
|
|
20
|
+
def query(**params, &block)
|
|
21
|
+
|
|
22
|
+
invoke_operation(:query, params, &block)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Oauth < Notion::Endpoints::Base
|
|
9
|
+
operation :token, :post, "/v1/oauth/token", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["grant_type"], variants: [["grant_type", "code"], ["grant_type", "refresh_token"]], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :revoke, :post, "/v1/oauth/revoke", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["token"], variants: [["token"]], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :introspect, :post, "/v1/oauth/introspect", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["token"], variants: [["token"]], enums: {}, max_lengths: {} }
|
|
12
|
+
|
|
13
|
+
# Exchange an authorization code for an access and refresh token
|
|
14
|
+
# @see https://developers.notion.com/reference/create-a-token
|
|
15
|
+
def token(grant_type:, **params, &block)
|
|
16
|
+
params[:grant_type] = grant_type
|
|
17
|
+
invoke_operation(:token, params, &block)
|
|
18
|
+
end
|
|
19
|
+
# Revoke a token
|
|
20
|
+
# @see https://developers.notion.com/reference/revoke-token
|
|
21
|
+
def revoke(token:, **params, &block)
|
|
22
|
+
params[:token] = token
|
|
23
|
+
invoke_operation(:revoke, params, &block)
|
|
24
|
+
end
|
|
25
|
+
# Introspect a token
|
|
26
|
+
# @see https://developers.notion.com/reference/introspect-token
|
|
27
|
+
def introspect(token:, **params, &block)
|
|
28
|
+
params[:token] = token
|
|
29
|
+
invoke_operation(:introspect, params, &block)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Pages < Notion::Endpoints::Base
|
|
9
|
+
operation :create, :post, "/v1/pages", path: [], query: ["filter_properties"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["parent"], variants: [["parent"]], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :retrieve, :get, "/v1/pages/{page_id}", path: ["page_id"], query: ["filter_properties"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :update, :patch, "/v1/pages/{page_id}", path: ["page_id"], query: ["filter_properties"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
12
|
+
operation :move, :post, "/v1/pages/{page_id}/move", path: ["page_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["parent"], variants: [["parent"]], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :retrieve_property, :get, "/v1/pages/{page_id}/properties/{property_id}", path: ["page_id", "property_id"], query: ["start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
operation :markdown, :get, "/v1/pages/{page_id}/markdown", path: ["page_id"], query: ["include_transcript"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
15
|
+
operation :update_markdown, :patch, "/v1/pages/{page_id}/markdown", path: ["page_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["type"], variants: [["type", "insert_content"], ["type", "replace_content_range"], ["type", "update_content"], ["type", "replace_content"]], enums: {}, max_lengths: {} }
|
|
16
|
+
|
|
17
|
+
# Create a page
|
|
18
|
+
# @see https://developers.notion.com/reference/post-page
|
|
19
|
+
def create(parent:, **params, &block)
|
|
20
|
+
params[:parent] = parent
|
|
21
|
+
invoke_operation(:create, params, &block)
|
|
22
|
+
end
|
|
23
|
+
# Retrieve a page
|
|
24
|
+
# @see https://developers.notion.com/reference/retrieve-a-page
|
|
25
|
+
def retrieve(page_id:, **params, &block)
|
|
26
|
+
params[:page_id] = page_id
|
|
27
|
+
invoke_operation(:retrieve, params, &block)
|
|
28
|
+
end
|
|
29
|
+
# Update page
|
|
30
|
+
# @see https://developers.notion.com/reference/patch-page
|
|
31
|
+
def update(page_id:, **params, &block)
|
|
32
|
+
params[:page_id] = page_id
|
|
33
|
+
invoke_operation(:update, params, &block)
|
|
34
|
+
end
|
|
35
|
+
# Move a page
|
|
36
|
+
# @see https://developers.notion.com/reference/move-page
|
|
37
|
+
def move(page_id:, parent:, **params, &block)
|
|
38
|
+
params[:page_id] = page_id
|
|
39
|
+
params[:parent] = parent
|
|
40
|
+
invoke_operation(:move, params, &block)
|
|
41
|
+
end
|
|
42
|
+
# Retrieve a page property item
|
|
43
|
+
# @see https://developers.notion.com/reference/retrieve-a-page-property
|
|
44
|
+
def retrieve_property(page_id:, property_id:, **params, &block)
|
|
45
|
+
params[:page_id] = page_id
|
|
46
|
+
params[:property_id] = property_id
|
|
47
|
+
invoke_operation(:retrieve_property, params, &block)
|
|
48
|
+
end
|
|
49
|
+
# Retrieve a page as markdown
|
|
50
|
+
# @see https://developers.notion.com/reference/retrieve-page-markdown
|
|
51
|
+
def markdown(page_id:, **params, &block)
|
|
52
|
+
params[:page_id] = page_id
|
|
53
|
+
invoke_operation(:markdown, params, &block)
|
|
54
|
+
end
|
|
55
|
+
# Update a page's content as markdown
|
|
56
|
+
# @see https://developers.notion.com/reference/update-page-markdown
|
|
57
|
+
def update_markdown(page_id:, type:, **params, &block)
|
|
58
|
+
params[:page_id] = page_id
|
|
59
|
+
params[:type] = type
|
|
60
|
+
invoke_operation(:update_markdown, params, &block)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Search < Notion::Endpoints::Base
|
|
9
|
+
operation :search, :post, "/v1/search", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
|
|
11
|
+
# Search by title
|
|
12
|
+
# @see https://developers.notion.com/reference/post-search
|
|
13
|
+
def search(**params, &block)
|
|
14
|
+
|
|
15
|
+
invoke_operation(:search, params, &block)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Sessions < Notion::Endpoints::Base
|
|
9
|
+
operation :update, :post, "/v1/sessions", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [["message"], ["session_id", "actions"], ["session_id", "continue_from"]], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :retrieve, :get, "/v1/sessions/{session_id}", path: ["session_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :query, :post, "/v1/sessions/query", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {"query" => 2000} }
|
|
12
|
+
operation :events, :post, "/v1/sessions/{session_id}/events/query", path: ["session_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :cancel, :post, "/v1/sessions/{session_id}/cancel", path: ["session_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
|
|
15
|
+
# Update a session
|
|
16
|
+
# @see https://developers.notion.com/reference/notion-agent-apis/update-session
|
|
17
|
+
def update(**params, &block)
|
|
18
|
+
|
|
19
|
+
invoke_operation(:update, params, &block)
|
|
20
|
+
end
|
|
21
|
+
# Retrieve a session
|
|
22
|
+
# @see https://developers.notion.com/reference/notion-agent-apis/retrieve-session
|
|
23
|
+
def retrieve(session_id:, **params, &block)
|
|
24
|
+
params[:session_id] = session_id
|
|
25
|
+
invoke_operation(:retrieve, params, &block)
|
|
26
|
+
end
|
|
27
|
+
# Query sessions
|
|
28
|
+
# @see https://developers.notion.com/reference/notion-agent-apis/query-sessions
|
|
29
|
+
def query(**params, &block)
|
|
30
|
+
|
|
31
|
+
invoke_operation(:query, params, &block)
|
|
32
|
+
end
|
|
33
|
+
# Query session events
|
|
34
|
+
# @see https://developers.notion.com/reference/notion-agent-apis/query-session-events
|
|
35
|
+
def events(session_id:, **params, &block)
|
|
36
|
+
params[:session_id] = session_id
|
|
37
|
+
invoke_operation(:events, params, &block)
|
|
38
|
+
end
|
|
39
|
+
# Cancel a session
|
|
40
|
+
# @see https://developers.notion.com/reference/notion-agent-apis/cancel-session
|
|
41
|
+
def cancel(session_id:, **params, &block)
|
|
42
|
+
params[:session_id] = session_id
|
|
43
|
+
invoke_operation(:cancel, params, &block)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Users < Notion::Endpoints::Base
|
|
9
|
+
operation :me, :get, "/v1/users/me", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :retrieve, :get, "/v1/users/{user_id}", path: ["user_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
11
|
+
operation :list, :get, "/v1/users", path: [], query: ["start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
12
|
+
|
|
13
|
+
# Retrieve your token's bot user
|
|
14
|
+
# @see https://developers.notion.com/reference/get-self
|
|
15
|
+
def me(**params, &block)
|
|
16
|
+
|
|
17
|
+
invoke_operation(:me, params, &block)
|
|
18
|
+
end
|
|
19
|
+
# Retrieve a user
|
|
20
|
+
# @see https://developers.notion.com/reference/get-user
|
|
21
|
+
def retrieve(user_id:, **params, &block)
|
|
22
|
+
params[:user_id] = user_id
|
|
23
|
+
invoke_operation(:retrieve, params, &block)
|
|
24
|
+
end
|
|
25
|
+
# List all users
|
|
26
|
+
# @see https://developers.notion.com/reference/get-users
|
|
27
|
+
def list(**params, &block)
|
|
28
|
+
|
|
29
|
+
invoke_operation(:list, params, &block)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
module Notion
|
|
6
|
+
module Generated
|
|
7
|
+
module Endpoints
|
|
8
|
+
class Views < Notion::Endpoints::Base
|
|
9
|
+
operation :list, :get, "/v1/views", path: [], query: ["database_id", "data_source_id", "start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
10
|
+
operation :create, :post, "/v1/views", path: [], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: ["data_source_id", "name", "type"], variants: [["data_source_id", "name", "type"]], enums: {"type" => ["table", "board", "list", "calendar", "timeline", "gallery", "form", "chart", "map", "dashboard"]}, max_lengths: {} }
|
|
11
|
+
operation :retrieve, :get, "/v1/views/{view_id}", path: ["view_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
12
|
+
operation :update, :patch, "/v1/views/{view_id}", path: ["view_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
13
|
+
operation :delete, :delete, "/v1/views/{view_id}", path: ["view_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
14
|
+
operation :create_query, :post, "/v1/views/{view_id}/queries", path: ["view_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: true, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
15
|
+
operation :query_results, :get, "/v1/views/{view_id}/queries/{query_id}", path: ["view_id", "query_id"], query: ["start_cursor", "page_size"], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
16
|
+
operation :delete_query, :delete, "/v1/views/{view_id}/queries/{query_id}", path: ["view_id", "query_id"], query: [], query_rules: { required: [], enums: {}, max_lengths: {} }, body_rules: { send_empty: false, required: [], variants: [], enums: {}, max_lengths: {} }
|
|
17
|
+
|
|
18
|
+
# List views
|
|
19
|
+
# @see https://developers.notion.com/reference/list-views
|
|
20
|
+
def list(**params, &block)
|
|
21
|
+
|
|
22
|
+
invoke_operation(:list, params, &block)
|
|
23
|
+
end
|
|
24
|
+
# Create a view
|
|
25
|
+
# @see https://developers.notion.com/reference/create-view
|
|
26
|
+
def create(data_source_id:, name:, type:, **params, &block)
|
|
27
|
+
params[:data_source_id] = data_source_id
|
|
28
|
+
params[:name] = name
|
|
29
|
+
params[:type] = type
|
|
30
|
+
invoke_operation(:create, params, &block)
|
|
31
|
+
end
|
|
32
|
+
# Retrieve a view
|
|
33
|
+
# @see https://developers.notion.com/reference/retrieve-a-view
|
|
34
|
+
def retrieve(view_id:, **params, &block)
|
|
35
|
+
params[:view_id] = view_id
|
|
36
|
+
invoke_operation(:retrieve, params, &block)
|
|
37
|
+
end
|
|
38
|
+
# Update a view
|
|
39
|
+
# @see https://developers.notion.com/reference/update-a-view
|
|
40
|
+
def update(view_id:, **params, &block)
|
|
41
|
+
params[:view_id] = view_id
|
|
42
|
+
invoke_operation(:update, params, &block)
|
|
43
|
+
end
|
|
44
|
+
# Delete a view
|
|
45
|
+
# @see https://developers.notion.com/reference/delete-view
|
|
46
|
+
def delete(view_id:, **params, &block)
|
|
47
|
+
params[:view_id] = view_id
|
|
48
|
+
invoke_operation(:delete, params, &block)
|
|
49
|
+
end
|
|
50
|
+
# Create a view query
|
|
51
|
+
# @see https://developers.notion.com/reference/create-view-query
|
|
52
|
+
def create_query(view_id:, **params, &block)
|
|
53
|
+
params[:view_id] = view_id
|
|
54
|
+
invoke_operation(:create_query, params, &block)
|
|
55
|
+
end
|
|
56
|
+
# Get view query results
|
|
57
|
+
# @see https://developers.notion.com/reference/get-view-query-results
|
|
58
|
+
def query_results(view_id:, query_id:, **params, &block)
|
|
59
|
+
params[:view_id] = view_id
|
|
60
|
+
params[:query_id] = query_id
|
|
61
|
+
invoke_operation(:query_results, params, &block)
|
|
62
|
+
end
|
|
63
|
+
# Delete a view query
|
|
64
|
+
# @see https://developers.notion.com/reference/delete-view-query
|
|
65
|
+
def delete_query(view_id:, query_id:, **params, &block)
|
|
66
|
+
params[:view_id] = view_id
|
|
67
|
+
params[:query_id] = query_id
|
|
68
|
+
invoke_operation(:delete_query, params, &block)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is generated. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
require_relative "generated/endpoints/agents"
|
|
6
|
+
require_relative "generated/endpoints/async_tasks"
|
|
7
|
+
require_relative "generated/endpoints/blocks"
|
|
8
|
+
require_relative "generated/endpoints/comments"
|
|
9
|
+
require_relative "generated/endpoints/custom_emojis"
|
|
10
|
+
require_relative "generated/endpoints/data_sources"
|
|
11
|
+
require_relative "generated/endpoints/databases"
|
|
12
|
+
require_relative "generated/endpoints/file_uploads"
|
|
13
|
+
require_relative "generated/endpoints/meeting_notes"
|
|
14
|
+
require_relative "generated/endpoints/oauth"
|
|
15
|
+
require_relative "generated/endpoints/pages"
|
|
16
|
+
require_relative "generated/endpoints/search"
|
|
17
|
+
require_relative "generated/endpoints/sessions"
|
|
18
|
+
require_relative "generated/endpoints/users"
|
|
19
|
+
require_relative "generated/endpoints/views"
|
|
20
|
+
|
|
21
|
+
module Notion
|
|
22
|
+
module Generated
|
|
23
|
+
RESOURCES = {
|
|
24
|
+
agents: Endpoints::Agents,
|
|
25
|
+
async_tasks: Endpoints::AsyncTasks,
|
|
26
|
+
blocks: Endpoints::Blocks,
|
|
27
|
+
comments: Endpoints::Comments,
|
|
28
|
+
custom_emojis: Endpoints::CustomEmojis,
|
|
29
|
+
data_sources: Endpoints::DataSources,
|
|
30
|
+
databases: Endpoints::Databases,
|
|
31
|
+
file_uploads: Endpoints::FileUploads,
|
|
32
|
+
meeting_notes: Endpoints::MeetingNotes,
|
|
33
|
+
oauth: Endpoints::Oauth,
|
|
34
|
+
pages: Endpoints::Pages,
|
|
35
|
+
search: Endpoints::Search,
|
|
36
|
+
sessions: Endpoints::Sessions,
|
|
37
|
+
users: Endpoints::Users,
|
|
38
|
+
views: Endpoints::Views
|
|
39
|
+
}.freeze
|
|
40
|
+
end
|
|
41
|
+
end
|
data/lib/notion/id.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Notion
|
|
4
|
+
module ID
|
|
5
|
+
module_function
|
|
6
|
+
|
|
7
|
+
def normalize(value)
|
|
8
|
+
hex = value.to_s.delete("-").downcase
|
|
9
|
+
raise ArgumentError, "invalid Notion ID" unless hex.match?(/\A[0-9a-f]{32}\z/)
|
|
10
|
+
|
|
11
|
+
[8, 4, 4, 4, 12].map { |size| hex.slice!(0, size) }.join("-")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|