<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: giulibaroz</title>
    <description>The latest articles on DEV Community by giulibaroz (@giulibaroz).</description>
    <link>https://dev.to/giulibaroz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F819418%2F7659c3a0-9ffe-47de-99da-a2d4a431517e.png</url>
      <title>DEV Community: giulibaroz</title>
      <link>https://dev.to/giulibaroz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giulibaroz"/>
    <language>en</language>
    <item>
      <title>Build a Video Approval Tool on Appsmith with Airtable and Notion 
</title>
      <dc:creator>giulibaroz</dc:creator>
      <pubDate>Fri, 04 Mar 2022 17:47:48 +0000</pubDate>
      <link>https://dev.to/giulibaroz/build-a-video-approval-tool-on-appsmith-with-airtable-and-notion-3a34</link>
      <guid>https://dev.to/giulibaroz/build-a-video-approval-tool-on-appsmith-with-airtable-and-notion-3a34</guid>
      <description>&lt;p&gt;Video content rose even before the pandemic, but the pandemic certainly&lt;br&gt;
has accelerated consumption. &lt;a href="https://www.forbes.com/sites/falonfatemi/2021/02/01/how-the-pandemic-has-changed-video-content-and-consumption/?sh=1e22a03b6ec0" rel="noopener noreferrer"&gt;According to research&lt;/a&gt;, 82% of content generated in 2022 is likely to be video. Video is ruling the social media landscape and will stay for a while. Marketing companies especially take advantage of this trend by incorporating video content production into their strategy. There have to be tools that take the idea into motion with all great ideas. Video approval tools are a great way to quickly organize workflows and ensure seamless creation, production, and publication of video content.&lt;/p&gt;

&lt;p&gt;In this article, I will teach you how to make a video approval workflow&lt;br&gt;
using Airtable, Notion, and Appsmith. As a low code, open-source&lt;br&gt;
framework Appsmith makes it simple to create internal apps as support&lt;br&gt;
for any platform, like the collaborative workspace Airtable.&lt;/p&gt;

&lt;p&gt;Let's deal with a specific case; the marketing office has to manage a&lt;br&gt;
list of videos uploaded on Airtable by an external supplier.&lt;/p&gt;

&lt;p&gt;This is what the workflow could be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The videomaker uploads a new video on Airtable&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The marketing employee views it, writes notes for the supplier, and&lt;br&gt;
 changes its status.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The marketing head needs a synthetic view of the video's progress&lt;br&gt;
 on Notion.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  The Video Approval App
&lt;/h2&gt;

&lt;p&gt;Let's see the app first, then I'll show you how to build it in the next&lt;br&gt;
section. With this app, you can review, edit details, and approve&lt;br&gt;
uploaded videos in one place.&lt;/p&gt;

&lt;p&gt;In the following sections, I will go through the app's different&lt;br&gt;
features.&lt;/p&gt;

&lt;p&gt;There would be a record for each video uploaded; we can view these&lt;br&gt;
videos on the box on the left by clicking on one of the uploaded videos.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806650-28b30f25-b717-4fb7-9362-c3aeb9227570.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806650-28b30f25-b717-4fb7-9362-c3aeb9227570.gif" alt="image39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is also possible to filter the list just using the filter&lt;br&gt;
functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806708-ce7a3b4f-8511-49c2-b0d2-40d7f9d34fbb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806708-ce7a3b4f-8511-49c2-b0d2-40d7f9d34fbb.gif" alt="image9"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The description field is editable&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806764-9aa062c7-e8dd-467d-aad6-a953f4d05bef.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806764-9aa062c7-e8dd-467d-aad6-a953f4d05bef.gif" alt="image29"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the 'Approve' button, you can approve the video and see changes in&lt;br&gt;
the status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806809-b7bfe8d3-8497-4568-94ed-7be5d8cc03b5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806809-b7bfe8d3-8497-4568-94ed-7be5d8cc03b5.gif" alt="image3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Get Data and Updates in Airtable
&lt;/h3&gt;

&lt;p&gt;A new video that the video maker&lt;br&gt;
has uploaded shows up on the Appsmith desk to review immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806893-cd35a460-c537-46d1-b5e6-07bbf5e9359a.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806893-cd35a460-c537-46d1-b5e6-07bbf5e9359a.gif" alt="image34"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the approval of a video, the information instantly flows to&lt;br&gt;
Airtable in the same way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806974-98df580a-ffb8-4c68-b584-f721fd24e2f1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156806974-98df580a-ffb8-4c68-b584-f721fd24e2f1.gif" alt="image17"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Change video status, leave comments
&lt;/h3&gt;

&lt;p&gt;After selecting the video,&lt;br&gt;
users can 'Request a new update' and change the status. Users will also&lt;br&gt;
be able to leave comments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807073-500a3986-8e4d-45fc-a461-1b9edcf73788.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807073-500a3986-8e4d-45fc-a461-1b9edcf73788.gif" alt="image7"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Download the data in CSV or excel format
&lt;/h3&gt;

&lt;p&gt;Each table can be exported&lt;br&gt;
in CSV or excel format by simply clicking on the 'download' button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807111-977601bf-d2cc-484c-92a1-a6279079602f.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807111-977601bf-d2cc-484c-92a1-a6279079602f.gif" alt="image2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customize the template by adding any data visualization modules to&lt;br&gt;
connect other third parties:&lt;/strong&gt; To monitor the approval activity,&lt;br&gt;
Appsmith provides data visualization modules that you can customize.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807176-5fb044b7-9d86-4597-a165-f5675c2105c0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807176-5fb044b7-9d86-4597-a165-f5675c2105c0.gif" alt="image19"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine that the marketing chief needs to be informed instantly of the&lt;br&gt;
video approval process; in particular, they want to know how many and&lt;br&gt;
which videos have 'approved' status. You can connect your Appsmith&lt;br&gt;
platform with the third party you prefer. For example, you can do it&lt;br&gt;
with Notion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807246-e72b6686-cb6a-43f0-b0c8-7b9ef2483b91.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807246-e72b6686-cb6a-43f0-b0c8-7b9ef2483b91.gif" alt="image18"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To see the Applications in action, you can &lt;a href="https://app.appsmith.com/applications/6176aa49da0db7441710c454/pages/6176aa49da0db7441710c456" rel="noopener noreferrer"&gt;follow this&lt;br&gt;
link&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to build the App
&lt;/h2&gt;

&lt;p&gt;Let's keep a few basics in place.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a new account on Appsmith (it's free!), if you are an&lt;br&gt;
existing user, log in to your Appsmith account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Appsmith, create a new application. You will see a new Appsmith&lt;br&gt;
app with an empty canvas and a sidebar with two directories:&lt;br&gt;
Datasources and Widgets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In another tab, open Airtable. If you don't have an account created,&lt;br&gt;
create an account and log in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In another tab, open Notion. If you don't have an account created,&lt;br&gt;
create an account and log in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let's begin building the app. Open Appsmith and go to the following&lt;br&gt;
sections: Widgets, Datasources, JS Objects.&lt;/p&gt;
&lt;h3&gt;
  
  
  Create an API interface
&lt;/h3&gt;

&lt;p&gt;Appsmith can be used to test API, as it can be done with tools like&lt;br&gt;
Postman, but with Appsmith, it is possible to prototype the frontend in&lt;br&gt;
the meantime. I think this is a powerful feature!&lt;/p&gt;

&lt;p&gt;As you can see in the box below, the app has a list of API calls&lt;br&gt;
executed on Airtable and Notion API. Each one performs a different&lt;br&gt;
action in our Video Approval App.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807359-2ba52f98-7116-44d8-ad0d-2b13b4a05c33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807359-2ba52f98-7116-44d8-ad0d-2b13b4a05c33.png" alt="image26"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To do this, you have to login into Airtable, create a workspace, and&lt;br&gt;
then create three tables that represent the information needed that&lt;br&gt;
needs tracking. In this example, we name them 'log',&lt;br&gt;
'sailingvideotable' and 'countRowStatus'.&lt;/p&gt;

&lt;p&gt;These tables are supposed to be used by dedicated users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807438-b58d6a58-e7de-476f-b05d-9569b1ab7373.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807438-b58d6a58-e7de-476f-b05d-9569b1ab7373.png" alt="image28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Table 'log' is used when someone wants to leave a comment on a&lt;br&gt;
particular video, it has the following data structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;'id' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Name' as 'long text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Reason' as 'reason' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Status' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Date' as 'long text' type&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Table 'sailingvideotable' is used to collect information related to&lt;br&gt;
the videos that have to be approved, it has the following data&lt;br&gt;
structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;'myid' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Status' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Name' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Description' as 'long text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Attachments' as 'attachment' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'hook' as 'link to another record' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'hook' as 'lookup' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isApproved' as 'formula' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isNotApproved' as 'formula' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isOngoing' as 'formula' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isNew' as 'formula' type&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Table '&lt;strong&gt;countRowStatus&lt;/strong&gt;' is a rollup of 'sailingvideotable' and it&lt;br&gt;
is used to get an insight on the status of the approval process, it has&lt;br&gt;
the following data structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;'hook' as 'single line text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'sailingvideotable' as 'link to another record' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isApprovedTot' as 'rollup' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isNotApprovedTot' as 'rollup' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isOngoingTot' as 'rollup' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'isNewTot' as 'rollup' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Total' as 'formula' type&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the tables are ready, we can start adding videos in&lt;br&gt;
'sailingvideotable.' Videos have to be attached manually by Airtable&lt;br&gt;
in the attachment field and paired with a unique ID. Then you have to&lt;br&gt;
write the word 'sum' in hook fields. In this way, we are creating the&lt;br&gt;
rollup for 'countRowStatus.'&lt;/p&gt;

&lt;p&gt;After uploading a list of rows with video files, we need to visit the&lt;br&gt;
&lt;a href="https://airtable.com/%3CYOUR%20AIRTABLE%20PROJECT%20ID%3E/api/docs" rel="noopener noreferrer"&gt;API page of Airtable&lt;/a&gt;.&lt;br&gt;
On this page, you can test the Airtable API and find the CURL links.&lt;/p&gt;

&lt;p&gt;Appsmith allows you to import the curl link and find a Postman-like page&lt;br&gt;
automatically pre-configured.&lt;/p&gt;

&lt;p&gt;As an example, if we want to get the record inside the&lt;br&gt;
'sailingvideotable', as shown below, in the section 'List record' of&lt;br&gt;
Airtable API, you will find the curl link. Copy it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807542-26b4db6e-2a88-4159-84e7-b27f56e155bd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807542-26b4db6e-2a88-4159-84e7-b27f56e155bd.png" alt="image33"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then go back to Appsmith. In the 'datasource' section, paste the curl&lt;br&gt;
link by clicking on the 'CURL Import'&lt;br&gt;
button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807652-2e9fec85-6109-4f6d-b116-3bc1f5a004fc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807652-2e9fec85-6109-4f6d-b116-3bc1f5a004fc.png" alt="image27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you see the pasted curl link.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807778-bebba518-c564-447a-8e7a-a5fe72ae1731.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807778-bebba518-c564-447a-8e7a-a5fe72ae1731.png" alt="image8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've imported the curl link, you can go to the 'Params'&lt;br&gt;
section.\&lt;br&gt;
Click on 'Run' to see the API call parameters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807825-e8cc4acd-4d51-4c94-bd95-e2869cb14f10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156807825-e8cc4acd-4d51-4c94-bd95-e2869cb14f10.png" alt="image4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same can be done with the following connections used in the Video&lt;br&gt;
Approval App. The table below shows the list of API calls, the call&lt;br&gt;
type, what it does, and on what table it acts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Airtable API connection&lt;/th&gt;
&lt;th&gt;To what Airtable table&lt;/th&gt;
&lt;th&gt;Call type&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;get log&lt;/td&gt;
&lt;td&gt;log&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Get records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;updateStatus&lt;/td&gt;
&lt;td&gt;sailingvideotable&lt;/td&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;Update a record field status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;getVideoTable&lt;/td&gt;
&lt;td&gt;sailingvideotable&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Get records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;createLog&lt;/td&gt;
&lt;td&gt;log&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Post a comment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;approve&lt;/td&gt;
&lt;td&gt;sailingvideotable&lt;/td&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;Update the status to approve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;countStatus&lt;/td&gt;
&lt;td&gt;countRowStatus&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Get records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;updateDescription&lt;/td&gt;
&lt;td&gt;sailingvideotable&lt;/td&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;update description field&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When a video is approved, we want to create a card on the Notion&lt;br&gt;
dashboard. To do this, we need a final API call that posts a card onto&lt;br&gt;
the board.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Notion Api connection&lt;/th&gt;
&lt;th&gt;Notion page object&lt;/th&gt;
&lt;th&gt;Call type&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;postNotionBoard&lt;/td&gt;
&lt;td&gt;database_id&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Post a card in a table viewed as board&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let's create a page in the Notion app; &lt;a href="https://oil-pram-286.notion.site/2011680fccdd40cf9a8634056fbd17c7?v=5ce59d1283374bdab6e71bc48a17d9c9" rel="noopener noreferrer"&gt;Here's an example.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a Board; you will see two views: 'Default view' and 'Board'&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808006-fa76a79d-5e12-4a50-95b7-5dd1988e962d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808006-fa76a79d-5e12-4a50-95b7-5dd1988e962d.png" alt="image20"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notion names the fields of a table as&lt;br&gt;
properties.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808089-ad6dd6ec-b864-4396-a7f1-b2e135dd541c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808089-ad6dd6ec-b864-4396-a7f1-b2e135dd541c.png" alt="image38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, you can create four properties, with the following data&lt;br&gt;
structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;'Name' as 'Title' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Status' as 'Multi select' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'Description' as 'text' type&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;'url' as 'URL' type&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, find the 'database_id' in the URL of a Notion page and save it&lt;br&gt;
for later. You will need it for the Appsmith API call.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808283-b19e5900-f980-448b-9dcf-6ba49b71702e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808283-b19e5900-f980-448b-9dcf-6ba49b71702e.png" alt="image10"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you should create a Notion authorization token at the &lt;a href="https://www.notion.so/my-integrations" rel="noopener noreferrer"&gt;integration page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808366-1b7732f8-0b7a-461b-bddc-7068e2885371.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808366-1b7732f8-0b7a-461b-bddc-7068e2885371.png" alt="image13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, you have to enable the Notion integration app with a specific&lt;br&gt;
page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the page you wish to link to the app, and click on the 'share'&lt;br&gt;
 button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then, click on the 'invite button' and select the integration app.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note: If you don't use the share option, the secret token is not&lt;br&gt;
authorized to see your page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808445-1562ab2d-c41d-45ef-a004-1886543707fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808445-1562ab2d-c41d-45ef-a004-1886543707fb.png" alt="image32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you've done the step above, you have to proceed to Appsmith.&lt;/p&gt;

&lt;p&gt;Now go to the 'Datasources' section to create a new&lt;br&gt;
API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808703-ad4a02de-5013-4921-9741-cbaabd5b4a9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808703-ad4a02de-5013-4921-9741-cbaabd5b4a9c.png" alt="image15"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the header section, paste the authorization token, the content type,&lt;br&gt;
and the API version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808776-00dcc271-03b7-4f74-a91d-5def4b8053b2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808776-00dcc271-03b7-4f74-a91d-5def4b8053b2.png" alt="image31"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then in the body paste a JSON, that is the representation of the table&lt;br&gt;
created in the Notion page, here's an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; {
    "parent": {
        "database_id": "&amp;lt;YOUR PAGE ID&amp;gt;"
    },
    "properties": {
        "Name": {
            "title": [{
                "text": {
                    "content": "&amp;lt;THE CONTENT YOU WANT TO SAVE IN A NOTION CARD&amp;gt;"
                }
            }]
        },
        "Description": {
            "rich_text": [{
                "type": "text",
                "text": {
                    "content": "&amp;lt;THE CONTENT YOU WANT TO SAVE IN A NOTION CARD&amp;gt;"
                }
            }]
        },
        "url": {
            "url": "&amp;lt;THE URL YOU WANT TO SAVE IN A NOTION CARD&amp;gt;"
        },
        "Status": {
            "multi_select": [{
                "name": "Approved"
            }]
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To know more about configuring the body, check the documentation&lt;br&gt;
available on Notion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Draw the app and make it work!
&lt;/h3&gt;

&lt;p&gt;Now we start literally drawing our app.&lt;/p&gt;

&lt;p&gt;With Appsmith, you can easily drag and drop pre-built UI elements and&lt;br&gt;
quickly plug data into these widgets to your datasource and add actions&lt;br&gt;
that trigger POST API requests.&lt;/p&gt;

&lt;p&gt;You can start by sketching a mockup, for example, with PowerPoint,&lt;br&gt;
including the following sections:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Title of the application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The image that explains how the workflow works&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pie chart with the information related to the status&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Table with 'sailingvideotable' records&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Section with information related to the video selected. Here the user&lt;br&gt;
can update the video's description or approve the video generating a&lt;br&gt;
card on Notion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where the user can change the status to ongoing or not approve and&lt;br&gt;
leave comments&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List of comments left by users&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808873-91a452d0-74f0-4df4-8153-d47355f15963.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808873-91a452d0-74f0-4df4-8153-d47355f15963.png" alt="image36"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have decided the layout let's build the app by dragging and&lt;br&gt;
dropping the widgets into the Edit page of our app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808932-2d88b9dd-887c-43be-adfe-6ae64171e390.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156808932-2d88b9dd-887c-43be-adfe-6ae64171e390.png" alt="image12"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, we can use the 'table' component to render Section 4 and&lt;br&gt;
7 from our mockup.&lt;/p&gt;

&lt;p&gt;To configure the components, you have to click on the gear button; on&lt;br&gt;
the right side of the Edit page, a list of options will appear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809009-7d67b46e-9fff-4065-b66b-d632437555fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809009-7d67b46e-9fff-4065-b66b-d632437555fb.png" alt="image21"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you choose the option 'Table data' , you can configure the table&lt;br&gt;
specifying the name of the API created before, in this case, the&lt;br&gt;
getVideoTable API.&lt;/p&gt;

&lt;p&gt;Appsmith allows you to name the API created, and this name is a variable&lt;br&gt;
that is always available on the frontend Edit page.&lt;/p&gt;

&lt;p&gt;Then you can map the data that you need, and you will see the list of&lt;br&gt;
data mapped below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809062-b9723b5e-b774-4dd8-9bfe-e9b9bd818aa3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809062-b9723b5e-b774-4dd8-9bfe-e9b9bd818aa3.png" alt="image30"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809113-858113df-a779-43fa-b620-540cedf8a964.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809113-858113df-a779-43fa-b620-540cedf8a964.png" alt="image24"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can decide to show the columns as you want, create new ones, and&lt;br&gt;
change the column order. In this case, I decided to show only 'myid',&lt;br&gt;
'Status', 'Name', 'Attachments', 'Description'.&lt;/p&gt;

&lt;p&gt;Any row inside the shown table has a 'Selected value' property, and it&lt;br&gt;
can be used to play the video in another widget if the related row is&lt;br&gt;
selected. To do this, add another widget called 'player.'&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809177-4235fd39-05f0-4781-b47d-1a56cc2ebf3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809177-4235fd39-05f0-4781-b47d-1a56cc2ebf3c.png" alt="image25"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now configure it using the 'selectedRow' property related to the&lt;br&gt;
outgoing data coming from the table widget, where customColumn4 is the&lt;br&gt;
column's name and the URL link of the video.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809240-564adb3f-f9ec-4cee-90eb-b3a2d47e5daf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809240-564adb3f-f9ec-4cee-90eb-b3a2d47e5daf.png" alt="image1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is possible to show the video description inside the input widget on&lt;br&gt;
the right with the same logic. The visualized text inside the input&lt;br&gt;
widget matches with the table's selected row. To do this, you have to&lt;br&gt;
configure the option 'Default Text,' shown in the following image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809317-48638558-0910-4d5a-b883-f78c0d3bd201.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809317-48638558-0910-4d5a-b883-f78c0d3bd201.png" alt="image5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can modify the text of the description inside the input widget.&lt;br&gt;
Clicking the 'Save Description' button, you save the modified text.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809402-48dd7396-54c5-4fe4-a093-a380ef8d4a80.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809402-48dd7396-54c5-4fe4-a093-a380ef8d4a80.png" alt="image14"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 'Save Description' button calls the updateDescription API to&lt;br&gt;
Airtable to save the modified version in Airtable. You have to specify&lt;br&gt;
it inside the 'onClick' option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809460-451d7f7a-b345-43e7-88de-7198981d7ad1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809460-451d7f7a-b345-43e7-88de-7198981d7ad1.png" alt="image37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The button 'Approve' does several things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Changes the status inside Airtable table 'sailingvideotable'&lt;br&gt;
 (approve API).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates the Appsmith frontend (getVideoTable API).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates the status count on Airtable (countStatus API), create a&lt;br&gt;
 notion card (postNotionBoard API).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: You must specify the related API inside the 'onClick' option, as&lt;br&gt;
you see in the following image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809508-e1302734-24ce-4ba3-854c-fabc9a8f9613.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809508-e1302734-24ce-4ba3-854c-fabc9a8f9613.png" alt="image16"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create the pie chart, use the chart widget and select the 'Pie Chart'&lt;br&gt;
type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809584-4830c855-b920-4d32-b52a-4ce9e3f39842.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809584-4830c855-b920-4d32-b52a-4ce9e3f39842.png" alt="image6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the 'Series Data' option, you have to create a readable JSON&lt;br&gt;
for the pie chart with 'y' values downloaded by the relative API call&lt;br&gt;
'countStatus'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809662-adac0a3c-7f51-4bfc-9b06-5c6f835ab06e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809662-adac0a3c-7f51-4bfc-9b06-5c6f835ab06e.png" alt="image35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The comments section works similarly. You can change the relative status&lt;br&gt;
with a dropdown menu widget when a video is selected. You can leave a&lt;br&gt;
comment inside the input widget, and finally, you can trigger the API&lt;br&gt;
call with the 'Send' button widget.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809721-1a5e8725-ba09-4857-a581-a3a77688c0a7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809721-1a5e8725-ba09-4857-a581-a3a77688c0a7.png" alt="image23"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 'Send' value triggers the API calls in the following sequence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;update the status (updateStatus API).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;post a log record (createLog API).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get the values of the log table to see the updated values (get log&lt;br&gt;
 API).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809780-44d9ec99-bd98-4b89-858c-f10ad3bb4ec6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809780-44d9ec99-bd98-4b89-858c-f10ad3bb4ec6.png" alt="image22"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To pass values inside an API call, for example, in a post or a patch&lt;br&gt;
case, you can write variables in the body of the request. These&lt;br&gt;
variables are related to the frontend widget properties.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809842-edef982a-a8b6-4cc3-8a63-6cb36adf1519.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9484568%2F156809842-edef982a-a8b6-4cc3-8a63-6cb36adf1519.png" alt="image11"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's how you can quickly build a video approval app with Notion&lt;br&gt;
and Airtable!&lt;/p&gt;

&lt;p&gt;If you're stuck anywhere,&lt;br&gt;
&lt;a href="//mailto:barozzi.giulia@gmail.com"&gt;barozzi.giulia@gmail.com&lt;/a&gt;&lt;br&gt;
I'll be happy to help!&lt;/p&gt;

&lt;p&gt;This article was written as part of the Appsmith Writers Program. If&lt;br&gt;
you'd like to contribute, send an email to&lt;br&gt;
&lt;a href="//mailto:writersprogram@appsmith.com"&gt;writersprogram@appsmith.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>lowcode</category>
      <category>appsmith</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
