--- title: "How to: Make Internal API Calls in Unqork" slug: "making-internal-api-calls-in-unqork" description: "Learn to configure Unqork's API with schema and submission modules to collect and manage user data effectively, including jokes and personal details." updated: 2025-12-08T19:43:50Z published: 2025-12-09T16:46:27Z canonical: "docs.unqork.io/making-internal-api-calls-in-unqork" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.unqork.io/llms.txt > Use this file to discover all available pages before exploring further. # How to: Make Internal API Calls in Unqork UDesignerClassic Designer In this article, you’ll configure Unqork internal API calls to better understand how to use Unqork’s API works. In this example, you make use of two modules: - **Schema** **Module**: You’ll use a schema module to store your submissions. You'll reference the module ID for your schema module in your internal API calls. - **Submission** **Module**: You'll use a submission module to collect the end-user's first name, last name, a joke of their choosing, and the joke’s answer. ## Configure the Schema Module Set up a schema module to store your submissions and reference its module ID in your internal API calls. To set up the schema module, configure four Hidden components. Schema modules only require fields that mirror the data-entry fields to store the data. > These instructions assume that you have an open module saved with a title. 1. In the Module Builder, drag and drop four [Hidden](/v1/docs/hidden-component) components onto your canvas. 2. Enter the following **Property IDs** and **Label Text** for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | firstName | firstName | | 2 | lastName | lastName | | 3 | jokeQuestion | jokeQuestion | | 4 | jokeAnswer | jokeAnswer | 3. Set **Store Data to Database** to ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/toggle_ON(6).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) **(ON)** for each component. > [!NOTE] > You must enable **Store Data to Database** for each component in your schema module for them to return in the API response. 4. Click **Save Component** after adding each Hidden Component 5. **Save** your module. Below is how your schema module looks in the Module Builder: ![Form fields for first name, last name, joke question, and joke answer.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(318).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > With your Hidden components configured, your schema module is complete. Make note of the module ID for your schema module because you'll need it to make your API calls later. You can find the module ID in the Express View URL. In the following example, the bolded text is the module ID: https://trainingx.unqork.io/#/display/**5ece83f7cf02e4020f247408**. ## Configure the Submissions Module The second module in this configuration is your submissions module. In this module, you’ll collect the end-user’s first name, last name, a joke of their choosing, and the joke’s answer. Each set of answers creates a single submission. ### Configure the Initializer Component Each of your API calls must reference your schema module. You can enter the module ID into every API call manually, but that's not a best practice. Instead, use an [Initializer](/v1/docs/initializer-component#resources) component to set the module ID for every new submission. The Initializer component stores the module ID in a Hidden component that you'll add in the next step. At some point, you might need to update the schema module ID. With this approach, you only have to update the module ID in one component, instead of several. > These instructions assume that you have an open module saved with a title. 1. In the Module Builder, drag and drop an **Initializer** component onto your canvas. 2. In the **Property ID** and **Canvas Label Text** fields, enter `initNewSubmission`. 3. From the **Trigger Type** drop-down, select **New Submission**. 4. In the **Outputs** table, enter the following: | Property ID | Type | Value | | --- | --- | --- | | moduleId | value | {your Schema module's unique module ID} | > [!NOTE] > The Property ID listed in the Outputs table corresponds to the Hidden component you’ll add in the next step. This is where the schema module ID is stored. In the Value column, enter your schema module's unique module ID. The image below displays the module ID from the sample schema module. ![Initializer settings showing property ID and output values for new submission action.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(319).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. Click **Save** **Component**. ### Configure the Hidden Component Next, add the [Hidden](/v1/docs/hidden-component) component referenced by the Initializer component. You'll reference this component later in this example to retrieve the module ID in your API calls. 1. Drag and drop a **Hidden** component onto your canvas, placing it below the Initializer component. 2. In the **Property ID** and **Label Text** fields, enter `moduleId`. 3. Click **Save Component**. ### Configure the Panel Component You need a portal for your end-user in your submissions module to collect the information. Then, use a **Create** **Module** **Submission(s) API** call to store submissions in your schema module. You’ll configure a [Panel](/v1/docs/panel-component) component that acts as a container for the components involved in this stage of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `moduleId` **Hidden** component. 2. In the **Property ID** field, enter `panelCreateModuleSubmissions`. 3. In the **Canvas Label Text** field, enter `Create`. 4. Click **Save Component**. ### Configure the Columns Component Next, add two columns using a [Columns](/v1/docs/columns-component) component to better organize the module. 1. Drag and drop a **Columns** component onto your canvas, placing it inside your `panelCreateModuleSubmissions` **P****anel** component. 2. In the **Property ID** field, enter `colCreateSubmissions`. 3. Click **Save Component**. ### Configure the Text Field Components Add two [Text Field](/v1/docs/text-field-component) components to collect your end-user's first and last name. 1. Drag and drop two **Text Field** components onto your canvas, placing one in each column of the `colCreateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | firstName | First Name | | 2 | lastName | Last Name | > [!NOTE] > The `firstName` field is in the first column, and the `lastName` field is in the second. 3. Click **Save Component** after adding each component. ### Configure the Text Area Components Add two [Text Area](/v1/docs/text-area-component) components to collect your end-user's joke and the joke's answer. 1. Drag and drop two **Text Area** components onto your canvas, placing one in each column of the `colCreateSubmissions` **Columns** component. 2. | # | Property ID | Label Text | | --- | --- | --- | | 1 | jokeQuestion | Joke Question | | 2 | jokeAnswer | Joke Answer | > [!NOTE] > The `jokeQuestion` field is in the first column, and the `jokeAnswer` field is in the second. 1. In the **Property ID** and **Label Text** fields, enter the following for each component: 3. Click **Save Component** after adding each component. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Create Module Submission(s) API call. You'll map the data from your input fields into the call to create the submissions and store them in the schema module. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colCreateSubmissions` **Columns** component. 2. In the **Property ID** and **Canvas** **Label Text** fields, enter `pluginCreateModuleSubmission`. 3. From the **Internal Services** drop-down, select **Create** **Module** **Submission(s)**. The Data Source URL autopopulates. 4. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}`. 5. In the **Inputs** table, enter the following: | # | Property ID | Mapping | | --- | --- | --- | | 1 | firstName | data.firstName | | 2 | lastName | data.lastName | | 3 | jokeAnswer | data.jokeAnswer | | 4 | jokeQuestion | data.jokeQuestion | > [!NOTE] > This Plug-In component maps the data from your `moduleId` **Hidden** component into the Data Source URL. ![Configuration settings for creating module submissions with input fields and mappings displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(321).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component.** ### Configure the Button Component Add a [Button](/v1/docs/how-to-guide-button-component) component to trigger the Plug-In component and the API call. 1. Drag and drop a [Button component](/v1/docs/how-to-guide-button-component) onto your canvas, placing it below the Plug-In component. 2. In the **Property ID** field, enter `btnCreateSubmission`. 3. In the **Label Text** field, enter `Create Submission`. 4. From the **Action Type** drop-down, select **Event.** 5. From the **On Click** drop-down, select **pluginCreateModuleSubmission**. ![Button labeled 'Create Submission' with action triggers for event handling and user feedback.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(322).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save** **Component.** Here’s how the first part of the configuration looks in the Module Builder: ![Form fields for user submission including first name, last name, and joke question.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(338).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) ## Configure the Get Module Submissions API Call Now that an end-user can create submissions, you must add functionality to view those submissions. There are a few options for GET API calls in Unqork. In this example, you'll use the **Get** **Module** **Submissions** call, which retrieves the data from your schema module. Then, you'll use the DevTools Console to view the submissions. ### Configure the Panel Component This [Panel](/v1/docs/panel-component) component acts as a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Create` **Panel** component. 2. In the **Property ID** field, enter `panelGetModuleSubmissions`. 3. In the **Canvas Label Text** field, enter `Get Module Submissions`. 4. Click **Save Component**. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Get Module Submissions API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it nside your `panelGetModuleSubmissions` **Panel** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `pluginGetSubmissionsCall`. 3. From the **Internal Services** drop-down, select **Get** **Module** **Submissions**. The Data Source URL autopopulates. 4. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}`. 5. In the **Inputs** table, enter the following: | # | Property ID | Mapping | | --- | --- | --- | | 1 | 'created' | sortBy | | 2 | '-1' | sortOrder | > [!NOTE] > This configuration sorts the submissions in descending order, beginning with the most recent. Use single quotes around the values in the Property ID field to indicate to the component that you're not referencing actual Property IDs. Instead, you're hardcoding these values into the API call. 6. In the **Outputs** table, enter the following: | # | Property ID | Mapping | | --- | --- | --- | | 1 | getSubmissionsResponse | data | 7. From the **Post Trigger** drop-down, select **dwfNestGetSubmissionsCall**. ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(461).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 8. Click **Save Component**. ### Configure the Hidden Component Add a [Hidden](/v1/docs/hidden-component) component to store the response of your API call. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `pluginGetSubmissionsCall` **Plug-In** component. 2. In the **Property ID** and **Label Text** fields, enter `getSubmissionsResponse`. 3. Click **Save Component**. ### Configure the Data Workflow Component There are different ways to log the response of this call and display the data. In this example, you'll add a [Data Workflow](/v1/docs/data-workflow-component) component to nest the submission data returned by your API call. 1. Drag and drop a **Data Workflow** component onto your canvas, placing it below your `getSubmissionsResponse` **Hidden** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `dwfNestGetSubmissionsCall`. #### Configure the Input Operator 1. Drag and drop an **Input** operator onto your workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Input | | Component | pluginGetSubmissionsCall | | Required | Yes | | Source | Default | #### Configure the Col2Array Operator 1. Drag and drop a **Col2Array** operator onto your workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Col2Array | | Label | | | Drop Empty | Yes | | Path | data.rawData | | Default Value | | 3. Connect the output port (right) of the **Input** operator to the input port (left) of the **Col2Array** operator. #### Configure the Output Operator 1. Drag and drop an **Output** operator onto your workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Output | | Component | getSubmissionsAfterNesting | | Action | value | > [!NOTE] > You'll create the `getSubmissionsAfterNesting` **Hidden** component next. This Hidden component serves as the output for your Data Workflow. 3. Connect the output (right) port of the **Col2Array** operator to the input (left) port of the **Output** operator. ![Data workflow showing input, processing, and output stages for submissions call.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(359).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. Click **Save Component**. ### Configure the Hidden Component You need another [Hidden](/v1/docs/hidden-component) component to serve as the output for your Data Workflow. The component must exist in the module before you can add it as an output for your `dwfNestGetSubmissionsCall` **Data Workflow** component. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `dwfNestGetSubmissionsCall` **Data Workflow** component. 2. In the **Property ID** and **Label Text** fields, enter `getSubmissionsAfterNesting`. 3. Click **Save Component**. ### Configure the Button Component Configure a [Button](/v1/docs/button-component) component to trigger your Plug-In. Your `btnGetSubmissions` triggers your `pluginGetSubmissionsCall`. 1. Drag and drop a **Button** component onto your canvas. Place your Button component below your `getSubmissionsAfterNesting` Hidden component. 2. In the **Property ID** field, enter `btnGetSubmissions`. 3. In the **Label Text** field, enter `Get Submissions`. 4. From the **Action Type** drop-down, select **Event**. 5. From the **On Click** drop-down, select **pluginGetSubmissionsCall**. ![Button configuration for submitting data with action triggers and display options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(360).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component**. Here’s how the second part of the configuration looks in the Module Builder: ![Interface displaying module submission options and API call functions for data retrieval.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(361).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) ## Configure the List Submissions for Dashboard API Call You can also perform a **List Submissions for Dashboard** API call. This is the second GET API option you have in Unqork. This call is similar to Get Module Submissions, but it returns a flat array of data. Flat arrays work well as inputs for [ViewGrid](/v1/docs/viewgrid-component) components. So, use **List Submissions for Dashboard** to see your submissions in your application instead of relying on the DevTools Console to view them. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to act as a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Get Module Submissions` **Panel** component. 2. In the **Property ID** field, enter `panelListSubmissions`. 3. In the **Canvas Label Text** field, enter `List Submissions for Dashboard`. 4. Click **Save Component**. ### Configure the Plug-In Component Configure a [Plug-In](/v1/docs/plug-in-component) component to run the List Submissions for Dashboard API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it inside your `panelListSubmissions` **Panel** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginGetSubmissionsForDashboard`. 3. From the **Internal Services** drop-down, select **List Submissions for Dashboard**. The Data Source URL autopopulates. > [!NOTE] > You'll create the `dwfOutput` data workflow component next. 4. In the **Inputs** table, enter the following: | Property ID | Mapping | | --- | --- | | moduleId | moduleId | | 'jokeQuestion, jokeAnswer, firstName, lastName' | fields | | '-created' | sort | 5. In the **Post Trigger** field, enter `dwfOutput`. 6. Click **Save Component**. ### Configure the Data Workflow Component Use a List Submissions for Dashboard call to retrieve an unnested array of data. That way, you can store the entire response in a Hidden component. Then, use a simple Data Workflow to separate the data. 1. Drag and drop a **Data Workflow** component onto your canvas, placing it below your `pluginGetSubmissionsForDashboard` **Plug-In** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `dwfOutput`. #### Configure the Input Operator 1. Drag and drop an **Input** operator onto your workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Input | | Component | pluginGetSubmissionsForDashboard | | Required | Yes | | Source | Default | #### Configure the Output Operator 1. Drag and drop an **Output** operator onto your workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Output | | Component | listSubmissionsResponse | | Action | value | > [!NOTE] > You'll create the `listSubmissionsResponse` **Hidden** component next. Again, this Hidden component serves as the output for your Data Workflow component. 3. Connect the output port (right) of the `pluginGetSubmissionsForDashboard` **Input** operator to the input port(left) of the `listSubmissionsResponse` **Output** operator. ![Data workflow showing input and output actions with manual trigger type option highlighted.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(362).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. Click **Save Component**. ### Configure the Hidden Component Add a [Hidden](/v1/docs/hidden-component) component to store the output for your Data Workflow. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `dwfOutput` **Data Workflow** component. 2. In the **Property ID** and **Label Text** fields, enter `listSubmissionsResponse`. 3. Click **Save Component**. ### Configure the Button Component Configure a [Button](/v1/docs/button-component) component to execute the Plug-In component. 1. Drag and drop a **Button** component onto your canvas, placing it below your `listSubmissionsResponse` **Hidden** component. 2. In the **Property ID** field, enter `btnListSubmissionsforDashboard`. 3. In the **Label Text** field, enter `List Submissions for Dashboard`. 4. From the **Action Type** drop-down, select **Event.** 5. From the **On Click** drop-down, select **pluginGetSubmissionsForDashboard**. > [!NOTE] > This ties your Button component to the ViewGrid component that you'll add in the next step. ![Button configuration for listing submissions on a dashboard with action triggers.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(363).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save** **Component**. ### Configure the ViewGrid Component Lastly, configure a [ViewGrid](/v1/docs/viewgrid-component) component to display the data retrieved using this API call. 1. Drag and drop a **ViewGrid** component onto your canvas, placing it below your `btnListSubmissionsforDashboard` **Button** component. 2. In the **Property ID** field, enter `vgSubmissionsResponse`. 3. In the **Canvas Label Text** field, enter `ViewGrid Submissions Response`. 4. In the **Inputs** table, enter the following: | # | ID | Required | | --- | --- | --- | | 1 | listSubmissionsResponse | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | 5. In the **Display** table, enter the following: | # | ID | Formula | Heading | Type | | --- | --- | --- | --- | --- | | 1 | jokeQuestion | | Question | string | | 2 | jokeAnswer | | Answer | string | | 3 | firstName | | Submitted By | string | | 4 | id | | SubmissionId | string | ![Display settings for submissions response including question, answer, and submission details.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(365).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. In the **Action** field, enter `null`. > Entering null in the Action field removes the default Submit button from your dashboard. 7. Click **Save Component**. Here’s how the third part of the configuration looks in the Module Builder: ![Dashboard interface displaying submission options and responses for module management.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(444).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) ## Configure the Update Module Submissions Call Now that you have added a way to create and view submissions, you must add functionality to update those submissions. Set up an **Update** **Module** **Submissions API** call in your submissions module to change the end-user's name or joke, if needed. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to act as a container for the components involved in this section 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Read` **Panel** component. 2. In the **Property ID** field, enter `panelUpdateModuleSubmissions`. 3. In the **Canvas Label Text** field, enter `Update`. 4. Click **Save Component**. ### Configure the Columns Component Next, add two columns using a [Columns](/v1/docs/columns-component) component to better organize the module. 1. Drag and drop a **Columns** component onto your canvas, placing it inside your `Update` **Panel** component. 2. In the **Property ID** field, enter `colUpdateSubmissions`. > [!NOTE] > For this use case, you'll use the component default of two columns. 3. Click **Save** **Component**. ### Configure the Text Field Components These [Text Field](/v1/docs/text-field-component) components display the submission ID and the field you’re updating. 1. Drag and drop two **Text Field** components onto your canvas, placing them inside the left column of your `colUpdateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | submissionIdUpdate | SubmissionId to Update | | 2 | firstNameUpdate | First Name | 3. Click **Save Component** as you add each component. 4. Drag and drop two more **Text Field** components onto your canvas, placing them inside the right column of your `colUpdateSubmissions` **Columns** component. 5. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | valueThatDoesntExist | Value That Doesn't Exist in Schema | | 2 | lastNameUpdate | Last Name | 6. Click **Save Component** as you add each component. ### Configure the Text Area Components Add [Text Area](/v1/docs/text-area-component) components to update the joke question and the joke answer from the original submission data. 1. Drag and drop two **Text Area** components onto your canvas, placing one in each column of your `colUpdateSubmissions` **Columns** component, below the Text Field components. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | jokeQuestionUpdate | Joke Question | | 2 | jokeAnswerUpdate | Joke Answer | > [!NOTE] > The `jokeQuestionUpdate` field is in the first column, and the `jokeAnswerUpdate` field in the second. 3. Click **Save Component** as you add each component. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Update Module Submissions API call. You'll map the data from the input fields into the call to update the submissions in the schema module. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colUpdateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginUpdateMOduleSubmission`. 3. From the **Internal Services** drop-down, select **Update** **Module** **Submission.** The Data Source URL autopopulates. 4. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionUpdate}}`. 5. In the **Inputs** table, enter the following: | # | Property ID | Mapping | Optional | | --- | --- | --- | --- | | 1 | firstNameUpdate | data.firstName | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | 2 | lastNameUpdate | data.lastName | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | 3 | jokeAnswerUpdate | data.jokeAnswerUpdate | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | 4 | jokeQuestionUpdate | data.jokeQuestionUpdate | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | 5 | valueThatDoesntExist | data.valueThatDoesntExist | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | > [!NOTE] > You must select each field as optional. If they remain clear, the submission updates with blank data in any fields left blank during the update. Adding `valueThatDoesntExist` displays what happens when you map new data in the Schema module. Notice the call returns `valueThatDoesntExist` if you perform another Get Submissions call. ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(460).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component**. ### Configure the Button Component Add a [Button](/v1/docs/button-component) component to execute the API call. 1. Drag and drop a **Button** component onto your canvas, placing it below your `pluginUpdateModuleSubmission` **Plug-In** Component. 2. In the **Property ID** field, enter `btnUpdateSubmission`. 3. In the **Label Text** field, enter `Update Submission`. 4. From the **Action Type** drop-down, select **Event**. 5. From the **On Click** drop-down, select **pluginUpdateModuleSubmission**. ![Button configuration for updating submissions with event triggers and display options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(383).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component**. Here’s how the fourth part of the configuration looks in the Module Builder: ![Form fields for updating submissions, including first name and joke question sections.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(453).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) ## Configure the Delete Module Submissions Call There might be instances when you want to delete submissions from your schema module. You can add a **Delete Submissions API** call to achieve this task. You also might want to maintain the ability to restore those deleted submissions. Let’s take a look at how those work together and consider an example of what happens when you try to restore a deleted submission. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to provide a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Update` **Panel** component. 2. In the **Property ID** field, enter `panelDeleteModuleSubmissions`. 3. In the **Canvas Label Text** field, enter `Delete`. 4. Click **Save Component**. ### Configure the Columns Component Add a [Columns](/v1/docs/columns-component) component to keep your components organized. Use the default setting of two columns. 1. Drag and drop a **Columns** component onto your canvas. Place your Columns component inside your `Delete` panel component. 2. In the **Property ID** field, enter `colDeleteSubmissions`. 3. Click **Save Component**. ### Configure the Text Field Component Add a [Text Field](/v1/docs/text-field-component) component where you’ll enter the submission ID you want to delete. 1. Drag and drop a **Text Field** component onto your canvas, placing it in the left column of `colDeleteSubmissions` **Columns** component. 2. In the **Property ID** field, enter `submissionsIdDelete`. 3. In the **Label Text** field, enter `SubmissionId to Delete`. 4. Click **Save Component**. ### Configure the Plug-In Component Configure a [Plug-In](/v1/docs/plug-in-component) component to run the delete submissions API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colDeleteSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginDeleteMultipleModuleSubmissions`. 3. From the **Internal Services** drop-down, select **Deletes Multiple** **Module** **Submissions**. The Data Source URL autopopulates. 4. In the **Data Source URL**, replace `{moduleId}` with `{{data.moduleId}}`. 5. In the **Inputs** table, enter the following: | # | Property ID | Mapping | | --- | --- | --- | | 1 | submissionIdDelete | ids | ![Configuration settings for deleting multiple module submissions in a plugin interface.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(405).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component**. ### Configure the Delete Submissions Button Component Configure a [Button](/v1/docs/button-component) component to trigger the `pluginDeleteMultipleModuleSubmissions` **Plug-In** component to delete submissions. 1. Drag and drop a **Button** component onto your canvas, placing it below your `pluginDeleteMultipleMOduleSubmissions` **Plug-In** component. 2. In the **Property ID** field, enter `btnDeleteSubmission`. 3. In the **Label Text** field, enter `Delete Submission(s)`. 4. From the **Action Type** field, select **Event**. 5. From the **On Click** drop-down, select **pluginDeleteMultipleMOduleSubmissions**. ![Button configuration for deleting submissions with action triggers and display options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(406).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save Component**. ### Configure the Get Deleted Submission Button Component Configure a second [Button](/v1/docs/button-component) component to trigger your Plug-In component to retrieve previously deleted submissions. This example demonstrates what happens when you try to GET a deleted submission. 1. Drag and drop a **Button** component onto your canvas, placing it in the right column of the `colDeleteSubmissions` **Columns** component. 2. In the **Property ID** field, enter `btnGetDeletedSubmission`. 3. In the **Label Text** field, enter `Get Deleted Submission`. 4. From the **Button Style** drop-down, select **Info**. 5. From the **Action Type** drop-down**,** select **Event**. 6. From the **On Click** drop-down, select **pluginGetDeletedSubmission**. > [!NOTE] > This sets the button to trigger the Plug-In component you'll add in the next step. ![Button configuration settings for retrieving deleted submissions in a user interface.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(407).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 7. Click **Save Component**. ### Configure the Plug-In Component Configure a second [Plug-In](/v1/docs/plug-in-component) component to run the GET call to retrieve a deleted submission. 1. Drag and drop a **Plug-In** component onto your canvas, placing it in the right column of the `colDeleteSubmissions` **Columns** component, below your `btnGetDeletedSubmission` **Button** Component. 2. In the **Property ID** and **Label Text** fields, enter `pluginGetDeletedSubmission`. 3. From the **Internal Services** drop-down, select **Get** **Module** **Submission.** The Data Source URL autopopulates. 4. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionDelete}}`. ![Configuration settings for a plugin including service type and data source URL.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(408).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. Click **Save Component**. ### Configure the Restore Deleted Submissions Button Component Configure a third [Button](/v1/docs/button-component) component to trigger your Plug-In component to restore previously deleted submissions. 1. Drag and drop a **Button** component onto your canvas, placing it in the right column of the `colDeleteSubmissions` **Columns** component, below your `pluginGetDeleteSubmission` **Plug-In** Component. 2. In the **Property ID** field, enter `btnRestoreDeletedSubmission`. 3. In the **Label Text** field, enter `Restore Deleted Submission`. 4. From the **Button Style** drop-down, select **Success**. 5. From the **Action Type** drop-down, select **Event.** 6. From the **On Click** drop-down, enter **pluginRestoreDeletedModuleSubmission**. > [!NOTE] > This sets the button to trigger the Plug-In component you'll add in the next step. ![Button settings for restoring deleted submissions with action triggers and formatting options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(409).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 7. Click **Save Component**. ### Configure the Plug-In Component Configure a third [Plug-In](/v1/docs/plug-in-component) component to restore previously deleted submissions. 1. Drag and drop a **Plug-In** component onto your canvas, placing it in the right column of the `colDeleteSubmissions` **Columns** component, below your `btnRestoreDeletedSubmission` **Button** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `pluginRestoreDeleteModuleSubmission`. 3. From the **Internal Services** drop-down, select **Restore a Deleted** **Module** **Submission**. The Data Source URL autopopulates. 4. In the **Data Source URL**, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionDelete}}`. ![Interface for restoring a deleted module submission in Unqork platform settings.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(410).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. Click **Save** **Component**. 6. **Save** your module. Here’s how the final configuration looks in the Module Builder: ![Interface for managing module submissions, including options to create, update, and delete submissions.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/image(412).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) In this article, you’ll configure Unqork internal API calls to better understand how to use Unqork’s API works. In this example, you make use of two modules: - **Schema** **Module**: You’ll use a schema module to store your submissions. You'll reference the module ID for your schema module in your internal API calls. - **Submission** **Module**: You'll use a submission module to collect the end-user's first name, last name, a joke of their choosing, and the joke’s answer. ## Configure the Schema Module Set up a schema module to store your submissions and reference its module ID in your internal API calls. To set up the schema module, configure four Hidden components. Schema modules only require fields that mirror the data-entry fields to store the data. > These instructions assume that you have an open module saved with a title. 1. In the Module Builder, drag and drop four [Hidden](/v1/docs/hidden-component) components onto your canvas. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | firstName | firstName | | 2 | lastName | lastName | | 3 | jokeQuestion | jokeQuestion | | 4 | jokeAnswer | jokeAnswer | 3. Set **Store Data to Database** to ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/toggle_ON(6).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) **(ON)** for each component. > [!NOTE] > You must enable **Store Data to Database** for each component in your Schema module for them to return in the API response. 4. Click **Save & Close** after adding each Hidden Component 5. **Save** your module. This is how your schema module looks in the Module Builder: ![Module editor interface displaying fields for first name, last name, joke question, and answer.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Schema_ME_01.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > With your Hidden components in place, your schema module is complete. Make note of the module ID for your schema module, though, because you'll need it to make your API calls later. You can find the module ID in the Express View URL. In the following example, identify the bolded text: https://trainingx.unqork.io/#/display/**5ece83f7cf02e4020f247408**. ## Configure the Submission Module The second module in this configuration is your submissions module. In this module, you’ll collect the end-user’s first name, last name, a joke of their choosing, and the joke’s answer. Each set of answers creates a single submission. ### Configure the Initializer Component Each of your API calls must reference your schema module. You can enter the module ID into every API call manually, but that's not a best practice. Instead, use an [Initializer](/v1/docs/initializer-component#resources) component to set the module ID for every new submission. The Initializer component stores the module ID in a Hidden component that you'll add in the next step. At some point, you might need to update the schema module ID. With this approach, you only have to update the module ID in one component, instead of several. > These instructions assume that you have an open module saved with a title. 1. In the Module Builder, drag and drop an **Initializer component** onto your canvas. 2. In the **Property ID** and **Canvas Label Text** fields, enter `initNewSubmission`. 3. Set the **Trigger Type** as **New Submission**. 4. In the **Outputs** table, enter the following: | Property ID | Type | Value | | --- | --- | --- | | moduleId | value | {your Schema module's unique module ID} | > [!NOTE] > The Property ID listed in the Outputs table corresponds to the Hidden component you’ll add in the next step. This is where the schema module ID is stored. In the Value column, enter your schema module's unique module ID. The image below displays the module ID from the sample schema module. ![Settings interface showing trigger types and property ID for a submission initializer.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_01b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. Click **Save** **& Close** ### Configure the Hidden Component Next, add the [Hidden](/v1/docs/hidden-component) component referenced by the Initializer component. You'll reference this component later in this example to retrieve the module ID in your API calls. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `initNewSubmission` **Initializer** component. 2. In the **Property ID** and **Label Text** fields, enter `moduleId`. 3. Click **Save & Close**. ### Configure the Panel Component You need a portal for your end-user in your submissions module to collect the information. Then, use a **Create** **Module** **Submission(s) API** call to store submissions in your schema module. You’ll configure a [Panel](/v1/docs/panel-component) component that acts as a container for the components involved in this stage of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `moduleId` **Hidden** component. 2. In the **Title** field, enter `Create`. 3. In the **Property Name** field, enter `panelCreateModuleSubmissions`. 4. Click **Save & Close**. ### Configure the Columns Component Next, add two columns using a [Columns](/v1/docs/columns-component) component to better organize the module. 1. Drag and drop a **Columns** component onto your canvas, placing it inside your `panelCreateModuleSubmissions` **P****anel** Component. 2. In the **Property ID** field, enter `colCreateSubmissions`. 3. Click **Save & Close**. ### Configure the Text Field Components Add two [Text Field](/v1/docs/text-field-component) components to collect your end-user's first and last name. 1. Drag and drop two **Text Field** components onto your canvas, placing one component in each column of the `colCreateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | firstName | First Name | | 2 | lastName | Last Name | > [!NOTE] > The `firstName` field is in the first column, and the `lastName` field is in the second. 3. Click **Save & Close** after adding each Text Field component. ### Configure the Text Area Components Add two [Text Area](/v1/docs/text-area-component) components to collect your end-user's joke and the answer to the joke. 1. Drag and drop two **Text Area** components onto your canvas, placing one component in each column of the `colCreateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | jokeQuestion | Joke Question | | 2 | jokeAnswer | Joke Answer | > [!NOTE] > The `jokeQuestion` field is in the first column, and the `jokeAnswer` field is in the second. 3. Click **Save & Close** after adding each Text Area component. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Create Module Submission(s) API call. You'll map the data from your input fields into the call to create the submissions and store them in the schema module. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colCreateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginCreateModuleSubmission`. 3. In the **Inputs** table, enter the following: | Property ID | Mapping | | --- | --- | | firstName | data.firstName | | lastName | data.lastName | | jokeAnswer | data.jokeAnswer | | jokeQuestion | data.jokeQuestion | ![Settings interface for a plugin with input fields and action triggers displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_04b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. From the **Internal Services** drop-down, select **Create** **Module** **Submission(s)**. The Data Source URL autopopulates. 5. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}`. > [!NOTE] > This Plug-In component maps the data from your `moduleId` **Hidden** component into the Data Source URL. ![Settings for a plug-in including service type and data source URL options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_05b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. ### Configure the Button Component Add a [Button](/v1/docs/how-to-guide-button-component) component to trigger the Plug-In component and the API call. 1. Drag and drop a **Button** component onto your canvas, placing it below the `pluginCreateModuleSubmission` **Plug-In** component. 2. In the **Property ID** field, enter `btnCreateSubmission`. 3. In the **Label Text** field, enter `Create Submission`. 4. Set the **Action Type** as **Event.** 5. In the **Trigger on Click** field, enter `pluginCreateModuleSubmission`. ![Settings for a button including label text and action types for submission.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_02b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save** **& Close.** Here’s how the first part of the configuration looks in the Module Builder: ![Module editor interface for creating new submissions with various input fields.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Create_ModuleEditor.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > [!NOTE] > The above image uses optional HTML Element components to add a header and description in the Panel component. ## Configure the Get Module Submissions API Call Now that an end-user can create submissions, you must add functionality to view those submissions. There are a few options for GET API calls in Unqork. In this example, you'll use the **Get** **Module** **Submissions** call, which retrieves the data from your schema module. Then, you'll use the DevTools Console to view the submissions. ### Configure the Panel Component This [Panel](/v1/docs/panel-component) component acts as a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Create` **Panel** Component. 2. In the **Title** field, enter `Get Module Submissions`. 3. In the **Property Name** field, enter `panelGetModuleSubmissions`. 4. Click **Save & Close**. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Get Module Submissions API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it inside your `panelGetModuleSubmissions` **Panel** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `pluginGetSubmissionsCall`. 3. In the **Post Trigger** field, enter `dwfNestGetSubmissionsCall`. 4. In the **Inputs** table, enter the following: | Property ID | Mapping | | --- | --- | | 'created' | sortBy | | '-1' | sortOrder | > [!NOTE] > This configuration sorts the submissions in descending order, starting with the most recent. Use single quotes around the values in the Property ID field to indicate to the component that you're not referencing actual Property IDs. Instead, you're hardcoding these values into the API call. 5. In the **Outputs** table, enter the following: | Property ID | Mapping | | --- | --- | | getSubmissionsResponse | data | ![Settings for a plugin including triggers, timeouts, and input/output mappings.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/screencapture-training-unqork-io-2021-10-11-16_25_34.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. From the **Internal Services** drop-down, select **Get** **Module** **Submissions**. The Data Source URL autopopulates. 7. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}`. ![Settings page for a plugin with data source URL and internal services listed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_06c.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 8. Click **Save & Close**. ### Configure the Hidden Component Add a [Hidden](/v1/docs/hidden-component) component to store the response of your API call. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `pluginGetSubmissionsCall` **Plug-In** component. 2. In the **Property ID** and **Label Text** fields, enter `getSubmissionsResponse`. 3. Click **Save & Close**. ### Configure the Data Workflow Component There are different ways to log the response of this call and display the data. In this example, you'll add a [Data Workflow](/v1/docs/data-workflow-component) component to nest the submission data returned by your API call. 1. Drag and drop a **Data Workflow** component onto your canvas, placing it below your `getSubmissionsResponse` **Hidden** component. 2. In the **Canvas Label Text** and **Property Name** fields, enter `dwfNestGetSubmissionsCall`. 3. Click **Save & Close.** #### Configure the Input Operator 1. Drag and drop an **Input** operator onto your Data Workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Input | | Component | pluginGetSubmissionsCall | | Required | Yes | | Source | Default | #### Configure the Col2Array Operator 1. Drag and drop a **Col2Array** operator onto your Data Workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Col2Array | | Label | | | Drop Empty | Yes | | Path | data.rawData | | Default Value | | 3. Connect the output port (right) of the **Input** operator to the input port (left) of the **Col2Array** operator. #### Configure the Output Operator 1. Drag and drop an **Output** operator onto your Data Workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Output | | Component | getSubmissionsAfterNesting | | Action | value | > [!NOTE] > You'll create the `getSubmissionsAfterNesting` **Hidden** component next. This Hidden component serves as the output for your Data Workflow. 3. Connect the output (right) port of the Col2Array operator to the input (left) port of the Output operator. ![Data workflow diagram showing input, processing, and output components for submissions call.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Get_DWF_01b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. Click **Save**. ### Configure the Hidden Component You need another [Hidden](/v1/docs/hidden-component) component to serve as the output for your Data Workflow. The component must exist in the module before you can add it as an output for your `dwfNestGetSubmissionsCall` **Data Workflow** component. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your Data Workflow. 2. In the **Property ID** and **Label Text** fields, enter `getSubmissionsAfterNesting`. 3. Click **Save & Close**. ### Configure the Button Component Configure a [Button](/v1/docs/button-component) component to trigger your Plug-In component. 1. Drag and drop a **Button** component onto your canvas, placing it below your `getSubmissionsAfterNesting` **Hidden** component. 2. In the **Property ID** field, enter `btnGetSubmissions`. 3. In the **Label Text** field, enter `Get Submissions`. 4. Set the **Action Type** as **Event**. 5. In the **Trigger on Click** field, enter `pluginGetSubmissionsCall`. ![Settings for a button labeled 'Get Submissions' with action options displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_07b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. Here’s how the second part of the configuration looks in the Module Builder: ![Module editor interface displaying submission options and a button to get submissions.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Get_ModuleEditor.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > You can use optional HTML Element components to add a header and description in the Panel component. ## Configure the List Submissions for Dashboard API Call You can also perform a **List Submissions for Dashboard** API call. This is the second GET API option you have in Unqork. This call is similar to Get Module Submissions, but it returns a flat array of data. Flat arrays work well as inputs for [ViewGrid](/v1/docs/viewgrid-component) components. So, use **List Submissions for Dashboard** to see your submissions in your application instead of relying on the DevTools Console to view them. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to act as a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Get Module Submissions` **Panel** component. 2. In the **Title** field, enter `List Submissions for Dashboard`. 3. In the **Property Name** field, enter `panelListSubmissions`. 4. Click **Save & Close**. ### Configure the Plug-In Component Configure a [Plug-In](/v1/docs/plug-in-component) component to run the List Submissions for Dashboard API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it inside your `panelListSubmissions` **Panel** component. 2. In the **Property ID** and **Canvas Label Text** fields, enter `pluginGetSubmissionsForDashboard` . 3. In the **Post Trigger** field, enter `dwfOutput`. > You'll create the `dwfOutput` **D****ata Workflow** component next. 4. In the **Inputs** table, enter the following: | Property ID | Mapping | | --- | --- | | moduleId | moduleId | | 'jokeQuestion, jokeAnswer, firstName, lastName' | fields | | '-created' | sort | ![Settings for a plugin including triggers, timeouts, and input properties configuration.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/screencapture-training-unqork-io-2021-10-11-16_43_42.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. From the **Internal Services** drop-down, select **List Submissions for Dashboard**. The Data Source URL autopopulates. 6. Click **Save & Close**. ### Configure the Data Workflow Component Use a List Submissions for Dashboard call to retrieve an unnested array of data. That way, you can store the entire response in a Hidden component. Then, use a simple Data Workflow to separate the data. 1. Drag and drop a **Data Workflow** component onto your canvas, placing it below your `pluginGetSubmissionsForDashboard` **Plug-In** component. 2. In the **Canvas Label Text** and **Property Name** fields, enter `dwfOutput`. 3. Click **Save & Close**. #### Configure the Input Data Operator 1. Drag and drop an **Input** operator onto your Data Workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Input | | Component | pluginGetSubmissionsForDashboard | | Required | Yes | | Source | Default | #### Configure the Output Data Operator 1. Drag and drop an **Output** operator onto your Data Workflow canvas. 2. Configure the operator’s **Info** window as follows: | Setting | Selection | | --- | --- | | Category | Output | | Component | listSubmissionsResponse | | Action | value | > [!NOTE] > You'll create the `listSubmissionsResponse` **Hidden** component next. AThis Hidden component serves as the output for your Data Workflow. 3. Connect the output port (right) of the `pluginGetSubmissionsForDashboard` **Input** operator to the input port (left) of the `listSubmissionsResponse` **Output** operator. ![Data workflow options showing input and output configurations for a dashboard plugin.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_List_DWF_01b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. Click **Save**. ### Configure the Hidden Component Add a [Hidden](/v1/docs/hidden-component) component to store the output for your Data Workflow. 1. Drag and drop a **Hidden** component onto your canvas, placing it below your `dwfOutput` **Data Workflow**. 2. In the **Property ID** and **Label Text** fields, enter `listSubmissionsResponse`. 3. Click **Save & Close**. ### Configure the Button Component Configure a [Button](/v1/docs/button-component) component to execute the Plug-In component. 1. Drag and drop a **Button** component onto your canvas, placing it below your `listSubmissionsResponse` **Hidden** component. 2. In the **Property ID** field, enter `btnListSubmissionsforDashboard`. 3. In the **Label Text** field, enter `List Submissions for Dashboard`. 4. Set the **Action Type** as **Event**. 5. In the **Trigger on Click** field, enter `pluginGetSubmissionsForDashboard`. > [!NOTE] > This step connects your Button component to the ViewGrid component that you'll add in the next step. ![Button settings for listing submissions on a dashboard with action triggers.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_09b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save** **& Close**. ### Configure the ViewGrid Component Lastly, configure a ViewGrid component to display the data retrieved using this API call. 1. Drag and drop a **ViewGrid** component onto your canvas, placing it below your `btnListSubmissionsforDashboard` **Button** component. 2. In the **Title** field, enter `ViewGrid Submissions Response`. 3. In the **Property Name** field, enter `vgSubmissionsResponse`. 4. In the **Action** field, enter `null`. > Entering `null` in the Action field removes the default Submit button from your dashboard. 5. In the **Inputs** table, enter the following: | # | ID | Required | | --- | --- | --- | | 1 | listSubmissionsResponse | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | 6. Complete the **Display** table as follows: | ID | Formula | Heading | Type | | --- | --- | --- | --- | | jokeQuestion | | Question | string | | jokeAnswer | | Answer | string | | firstName | | Submitted By | string | | id | | SubmissionId | string | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_List_ViewGrid_01b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 7. Click **Save & Close**. Here’s how the third part of the configuration looks in the Module Builder: ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_List_ModuleEditor.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > [!NOTE] > The image above uses optional HTML Element components, which allow you to display a header and description in the Panel. ## Configure the Update Module Submissions Call Now that you have added a way to create and view submissions, you must add functionality to update those submissions. Set up an **Update** **Module** **Submissions API** call in your submissions module to change the end-user's name or joke, if needed. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to act as a container for the components involved in this section. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Read` **Panel** component. 2. In the **Title** field, enter `Update`. 3. In the **Property Name** field, enter `panelUpdateModuleSubmissions`. 4. Click **Save & Close**. ### Configure the Columns Component Next, add two columns using a [Columns](/v1/docs/columns-component) component to better organize the module. 1. Drag and drop a **Columns** component onto your canvas, placing it inside your `Update` **Panel** component. 2. In the **Property ID** field, enter `colUpdateSubmissions`. > [!NOTE] > For this use case, you'll use the component’s default of two columns. 3. Click **Save** **& Close**. ### Configure the Text Field Components These [Text Field](/v1/docs/text-field-component) components display the submission ID and the field you’re updating. 1. Drag and drop two **Text Field** components onto your canvas, placing them inside the left column of your `colUpdateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | submissionIdUpdate | SubmissionId to Update | | 2 | firstNameUpdate | First Name | 3. Click **Save & Close** for each component as you add it. 4. Drag and drop two more **Text Field** components onto your canvas. Place the Text Field components inside the right column. 5. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | valueThatDoesntExist | Value That Doesn't Exist in Schema | | 2 | lastNameUpdate | Last Name | 6. Click **Save & Close** for each component as you add it. ### Configure the Text Area Components Add [Text Area](/v1/docs/text-area-component) components to update the joke question and the joke answer from the original submission data. 1. Drag and drop two **Text Area** components onto your canvas, placing one component in each column of the Columns component, below the Text Field components. 2. In the **Property ID** and **Label Text** fields, enter the following for each component: | # | Property ID | Label Text | | --- | --- | --- | | 1 | jokeQuestionUpdate | Joke Question | | 2 | jokeAnswerUpdate | Joke Answer | > [!NOTE] > The `jokeQuestionUpdate` field is in the first column, and the `jokeAnswerUpdate` field in the second. 3. Click **Save & Close** for each component as you add it. ### Configure the Plug-In Component Add a [Plug-In](/v1/docs/plug-in-component) component to run the Update Module Submissions API call. You'll map the data from the input fields into the call to update the submissions in the schema module. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colUpdateSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginUpdateMOduleSubmission`. 3. In the **Inputs** table, enter the following: | Property ID | Mapping | Optional | | --- | --- | --- | | firstNameUpdate | data.firstName | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | lastNameUpdate | data.lastName | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | jokeAnswerUpdate | data.jokeAnswerUpdate | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | jokeQuestionUpdate | data.jokeQuestionUpdate | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | | valueThatDoesntExist | data.valueThatDoesntExist | ![](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Checked_Box_Blue(1).png?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) (checked) | ![Settings interface for a plugin with various input fields and options displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_11b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. From the **Internal Services** drop-down, select **Update** **Module** **Submission.** The Data Source URL autopopulates. 5. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionUpdate}}`. ![Settings for a plugin including service type and data source URL options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_10b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. ### Configure the Button Component Add a [Button](/v1/docs/button-component) component to execute the Plug-In component. 1. Drag and drop a **Button** component onto your canvas, placing it below your `pluginUpdateModuleSubmission` **Plug-In** component. 2. In the **Property ID** field, enter `btnUpdateSubmission`. 3. In the **Label Text** field, enter `Update Submission`. 4. Set the **Action Type** as **Event.** 5. In the **Trigger on Click** field, enter `pluginUpdateModuleSubmission`. ![Settings for a button labeled 'Update Submission' with action options displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_12b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. Here’s how the fourth part of the configuration looks in the Module Builder: ![Module editor interface for updating submission details and managing data fields.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Update_ModuleEditor.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > [!NOTE] > The image above uses optional HTML Element components, which allow you to display a header and description in the Panel component. ## Configure the Delete Module Submissions Call There might be instances when you want to delete submissions from your schema module. You can add a **Delete Submissions API** call to achieve this task. You also might want to maintain the ability to restore those deleted submissions. Let’s take a look at how those work together and consider an example of what happens when you try to restore a deleted submission. ### Configure the Panel Component Add a [Panel](/v1/docs/panel-component) component to act as a container for the components involved in this section of the configuration. 1. Drag and drop a **Panel** component onto your canvas, placing it below your `Update` **Panel** component. 2. In the **Title** field, enter `Delete`. 3. In the **Property Name** field, enter `panelDeleteModuleSubmissions`. 4. Click **Save & Close**. ### Configure the Columns Component Add a [Columns](/v1/docs/columns-component) component to keep your components organized. Use the default setting of two columns. 1. Drag and drop a **Columns** component onto your canvas, placing it inside your `Delete` **Panel** component. 2. In the **Property ID** field, enter `colDeleteSubmissions`. > [!NOTE] > Use the default setting of two columns in this example. 3. Click **Save & Close**. ### Configure the Text Field Component Add a [Text Field](/v1/docs/text-field-component) component where you’ll enter the submission ID you want to delete. 1. Drag and drop a **Text Field** component onto your canvas, placing it in the left column of the `colDeleteSubmissions` **Columns** component. 2. In the **Property ID** field, enter `submissionsIdDelete`. 3. In the **Label Text** field, enter `SubmissionId to Delete`. 4. Click **Save & Close**. ### Configure the Plug-In Component Configure a [Plug-In](/v1/docs/plug-in-component) component to run the delete submissions API call. 1. Drag and drop a **Plug-In** component onto your canvas, placing it below your `colDeleteSubmissions` **Columns** component. 2. In the **Property ID** and **Label Text** fields, enter `pluginDeleteMultipleModuleSubmissions`. 3. In the **Inputs** table, enter the following: | Property ID | Mapping | | --- | --- | | submissionIdDelete | ids | ![Settings for a plugin with various trigger types and input properties displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_13b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 4. From the **Internal Services** drop-down, select **Deletes Multiple** **Module** **Submissions**. The Data Source URL autopopulates. 5. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}`. ![Settings page for a plugin with service type and data source URL details.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_14b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. ### Configure the Delete Submissions Button Component Configure a [Button](/v1/docs/button-component) component to trigger the `pluginDeleteMultipleModuleSubmissions` **Plug-In** component to delete submissions. 1. Drag and drop a **Button** component onto your canvas, placing it below your `pluginDeleteMultipleMOduleSubmissions` **Plug-In** component. 2. In the **Property ID** field, enter `btnDeleteSubmission`. 3. In the **Label Text** field, enter `Delete Submission(s)`. 4. Set the **Action Type** as **Event**. 5. In the **Trigger on Click** field, enter `pluginDeleteMultipleMOduleSubmissions`. ![Settings for a button to delete submissions, including action types and event ID.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_15b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save & Close**. ### Configure the Get Deleted Submission Button Component Configure a second [Button](/v1/docs/button-component) component to trigger your Plug-In component to retrieve previously deleted submissions. This example demonstrates what happens when you try to retrieve a deleted submission. 1. Drag and drop a **Button** component onto your canvas, placing it in the right column of your `colDeleteSubmissions` **Columns** component.. 2. In the **Property ID** field, enter `btnGetDeletedSubmission`. 3. In the **Label Text** field, enter `Get Deleted Submission`. 4. Set the **Action Type** as **Event**. 5. In the **Trigger on Click** field, enter `pluginGetDeletedSubmission`. > [!NOTE] > This step sets the button to trigger the Plug-In component you'll add in the next step. 6. From the **Button Style** drop-down, select **Info**. ![Settings for a button including label, actions, and advanced settings options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_16b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 7. Click **Save & Close**. ### Configure the Plug-In Component Configure a second [Plug-In](/v1/docs/plug-in-component) component to run the GET call to retrieve a deleted submission. 1. Drag and drop a **Plug-In** component onto your canvas, placing it in the right column, below your `btnGetDeletedSubmission` **Button** Component. 2. In the **Property ID** and **Label Text** fields, enter `pluginGetDeletedSubmission`. 3. From the **Internal Services** drop-down, select **Get** **Module** **Submission**. The Data Source URL autopopulates. 4. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionDelete}}`. ![Settings for a plug-in with data source URL and internal services options displayed.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_17b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 5. Click **Save & Close**. ### Configure the Restore Deleted Submissions Button Component Configure a third [Button](/v1/docs/button-component) component to trigger your Plug-In component to restore previously deleted submissions. 1. Drag and drop a **Button** component onto your canvas, placing it in the right column, below your `pluginGetDeleteSubmission` **Plug-In** Component. 2. In the **Property ID** field, enter `btnRestoreDeletedSubmission`. 3. In the **Label Text** field, enter `Restore Deleted Submission`. 4. Set the **Action Type** as **Event**. 5. In the **Trigger on Click** field, enter `pluginRestoreDeletedModuleSubmission`. > [!NOTE] > This sets the button to trigger the Plug-In component you'll add in the next step. 6. From the **Button Style** drop-down, select **Success**. ![Settings for a button to restore deleted submissions with various action options.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_18b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 7. Click **Save & Close**. ### Configure the Plug-In Component Configure a third [Plug-In](/v1/docs/plug-in-component) component to restore previously deleted submissions. 1. Drag and drop a **Plug-In** component onto your canvas, placing it in the right column, below your `btnRestoreDeletedSubmission` **Button** Component. 2. In the **Property ID** and **Label Text** fields, enter `pluginRestoreDeleteModuleSubmission`. 3. Set the **Trigger Type** to **Manual**. 4. From the **Internal Services** drop-down, select **Restore a Deleted** **Module** **Submission**. The Data Source URL autopopulates. 5. In the **Data Source URL** field, replace `{moduleId}` with `{{data.moduleId}}` and `{submissionId}` with `{{data.submissionDelete}}`. ![Settings for a plugin to restore deleted module submissions in Unqork platform.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/APIs_Internal_API_Use_Case_19b.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) 6. Click **Save** **& Close**. 7. **Save** your module. Here’s how the final configuration looks in the Module Builder: ![Module editor interface displaying options for managing submissions and deleting entries.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/InternalAPI_Delete_ModuleEditor.jpg?sv=2026-02-06&spr=https&st=2026-11-07T17%3A57%3A57Z&se=2026-11-07T18%3A57%3A57Z&sr=c&sp=r&sig=oV4yl9PrK%2FsPQn%2BRKcVEEhYDWlyCsn%2FP2gneqtOigQI%3D) > [!NOTE] > The image above uses optional HTML Element components, which allow you to display a header and description in the Panel component. APIs (application programming interfaces) are a set of protocols and definitions developers use to build and integrate application software. APIs act as the connective tissue between products and services. Also known as Record Data. Submission data consists of information saved by Unqork components. View submission data by using the angular command, or in Record Collections. End-users, also known as Express Users, are the individuals accessing an application through Express View. In most cases, end-users are the customers using the product. Express View is how your end-user views your application. Express View also lets you preview your applications to test your configuration and view the styling. This is also the view your end-users will see when interacting with your application. After configuring a module, click Preview in the Module Builder to interact with the module in Express View. A URL (uniform resource locator) is a unique identifier used to locate a resource on the internet. Also known as a web address. End-users, also known as Express Users, are the individuals accessing an application through Express View. In most cases, end-users are the customers using the product. The DevTools Console helps you securely store, build, test, and deploy your software. HTML (Hyper Text Markup Language) is the standard markup language for for achieving font, color, graphic, and hyperlink effects when creating web pages.