From d2d942ef6269e62349ef629eaf0d8106fff9a61f Mon Sep 17 00:00:00 2001 From: Cezar Vasconcelos Date: Wed, 22 May 2024 19:23:49 -0300 Subject: [PATCH] docs: Notion Page Update instructions --- .../integrations/notion/notion-page-update.md | 135 ++++++++++++++++++ .../notion/NotionPageUpdate_flow_example.png | Bin 0 -> 13528 bytes .../NotionPageUpdate_flow_example_dark.png | Bin 0 -> 13574 bytes 3 files changed, 135 insertions(+) create mode 100644 docs/docs/integrations/notion/notion-page-update.md create mode 100644 docs/static/img/notion/NotionPageUpdate_flow_example.png create mode 100644 docs/static/img/notion/NotionPageUpdate_flow_example_dark.png diff --git a/docs/docs/integrations/notion/notion-page-update.md b/docs/docs/integrations/notion/notion-page-update.md new file mode 100644 index 000000000..d285a4771 --- /dev/null +++ b/docs/docs/integrations/notion/notion-page-update.md @@ -0,0 +1,135 @@ +import Admonition from "@theme/Admonition"; +import ThemedImage from "@theme/ThemedImage"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import ZoomableImage from "/src/theme/ZoomableImage.js"; + +# NotionPageUpdate Component in Langflow + +Langflow allows you to extend its functionality with custom components. The `NotionPageUpdate` component is designed to update the properties of a Notion page. It provides a convenient way to integrate updating Notion page properties into your Langflow workflows. + +## Component Usage + +To use the `NotionPageUpdate` component in your Langflow flow: + +1. Drag and drop the `NotionPageUpdate` component onto the canvas. +2. Double-click the component to open its configuration. +3. Provide the required parameters as defined in the component's `build_config` method. +4. Connect the component to other nodes in your flow as needed. + +Here's the code for the `NotionPageUpdate` component: + +```python +import json +import requests +from typing import Dict, Any +from loguru import logger + +from langflow.custom import CustomComponent +from langflow.schema import Record + + +class NotionPageUpdate(CustomComponent): + display_name = "Update Page Property [Notion]" + description = "Update the properties of a Notion page." + documentation: str = "https://developers.notion.com/reference/patch-page" + icon = "NotionDirectoryLoader" + + def build_config(self): + return { + "page_id": { + "display_name": "Page ID", + "field_type": "str", + "info": "The ID of the Notion page to update.", + }, + "properties": { + "display_name": "Properties", + "field_type": "str", + "info": "The properties to update on the page (as a JSON string).", + "multiline": True, + }, + "notion_secret": { + "display_name": "Notion Secret", + "field_type": "str", + "info": "The Notion integration token.", + "password": True, + }, + } + + def build( + self, + page_id: str, + properties: str, + notion_secret: str, + ) -> Record: + url = f"https://api.notion.com/v1/pages/{page_id}" + headers = { + "Authorization": f"Bearer {notion_secret}", + "Content-Type": "application/json", + "Notion-Version": "2022-06-28", # Use the latest supported version + } + + try: + parsed_properties = json.loads(properties) + except json.JSONDecodeError as e: + raise ValueError("Invalid JSON format for properties") from e + + data = { + "properties": parsed_properties + } + + response = requests.patch(url, headers=headers, json=data) + response.raise_for_status() + + updated_page = response.json() + + output = "Updated page properties:\n" + for prop_name, prop_value in updated_page["properties"].items(): + output += f"{prop_name}: {prop_value}\n" + + self.status = output + return Record(data=updated_page) +``` + +Let's break down the key parts of this component: + +- The `build_config` method defines the configuration fields for the component. It specifies the required parameters and their properties, such as display names, field types, and any additional information or validation. + +- The `build` method contains the main logic of the component. It takes the configured parameters as input and performs the necessary operations to update the properties of a Notion page. + +- The component interacts with the Notion API to update the page properties. It constructs the API URL, headers, and request data based on the provided parameters. + +- The processed data is returned as a `Record` object, which can be connected to other components in the Langflow flow. The `Record` object contains the updated page data. + +- The component also stores the updated page properties in the `status` attribute for logging and debugging purposes. + + +Here's an example of how to use the `NotionPageUpdate` component in a Langflow flow using: + + + + +## Best Practices + +When using the `NotionPageUpdate` component, consider the following best practices: + +- Ensure that you have a valid Notion integration token with the necessary permissions to update page properties. +- Handle edge cases and error scenarios gracefully, such as invalid JSON format for properties or API request failures. +- We recommend using an LLM to generate the inputs for this component, to allow flexibilty + +## Troubleshooting + +If you encounter any issues while using the `NotionPageUpdate` component, consider the following: + +- Double-check that you have correctly configured the component with the required parameters, including the page ID, properties JSON, and Notion integration token. +- Verify that your Notion integration token has the necessary permissions to update page properties. +- Check the Langflow logs for any error messages or exceptions related to the component, such as invalid JSON format or API request failures. +- Consult the [Notion API Documentation](https://developers.notion.com/reference/patch-page) for specific troubleshooting steps or common issues related to updating page properties. + +By leveraging the `NotionPageUpdate` component in Langflow, you can easily integrate updating Notion page properties into your language model workflows and build powerful applications that extend Langflow's capabilities. diff --git a/docs/static/img/notion/NotionPageUpdate_flow_example.png b/docs/static/img/notion/NotionPageUpdate_flow_example.png new file mode 100644 index 0000000000000000000000000000000000000000..dd02f9bba4afd741511243e212af19a8696fcb4c GIT binary patch literal 13528 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