LogoLogo
Get support
  • Home
  • Make API
  • Make Bridge
  • White Label
  • MCP Server
  • Custom Apps Documentation
  • How to read the documentation
  • Make Apps Editor
    • Develop apps in Make UI
    • Develop apps in VS Code
      • Generate your API key
      • Configure VS Code
      • Create an app in VS Code
      • Set the app's icon in VS Code
      • Use general controls
      • Manage testing and production app versions
      • Develop apps collaboratively
      • Write IML tests
      • Local development for Apps
        • Clone Make app to local workspace
        • Develop app in a local workspace (offline)
        • Commit the changes in Git repository
        • Deploy changes from local app to Make app
        • Pull changes from Make app
        • Create a new app origin
        • Compare changes between local and Make app
  • Create your first app
    • Create your app
    • App's environment
    • Base
    • Module
    • Connection
    • Error handling
  • Debugging your app
    • Debugging of pagination in list/search modules
    • Debugging RPC
    • Debugging of Custom IML Functions
      • Debug IML in Web Browser
      • Debug IML in VS Code
  • Make DevTool
    • Live Stream
    • Scenario Debugger
    • Tools
  • Best practices
    • Names, labels & descriptions
    • Base
    • Connections
    • Modules
    • Action and search modules
    • Action modules
    • Search modules
    • Update modules
    • Trigger modules
    • Remote Procedure Calls
    • Static parameters
    • Mappable parameters
    • Processing of input parameters
    • Processing of output parameters
    • Groups
  • Useful resources
  • App logo
  • App visibility
  • App review
    • App review prerequisites
    • Request app review
    • Review status
    • Approved app
  • Terms of approved app maintenance
  • Updating your app
    • Private/Public apps
    • Approved apps
      • Tracking code changes
      • Approval of changes in approved app
      • Managing breaking changes
  • App structure
    • Base
      • Base URL
      • Authorization
      • Error handling
      • Sanitization
      • Advanced inheritance
    • Connections
      • Basic connection
      • JWT
      • OAuth 1.0
      • OAuth 2.0
    • Webhooks
      • Shared
      • Dedicated
        • Attached
        • Not attached
    • Modules
      • Action
        • Module Actions
        • Components
      • Search
      • Trigger (polling)
      • Instant Trigger (webhook)
      • Universal Module
        • REST
        • GraphQL
      • Responder
    • Remote Procedure Calls
      • Components
      • Types of RPCs
        • Dynamic Options RPC
        • Dynamic Fields RPC
        • Dynamic Sample RPC
      • Available IML Variables
    • Custom IML functions
      • Dynamic mappable parameters
      • Handling of full update approach in update modules
      • Removal of empty collections and nulls
    • Groups
  • App blocks
    • Communication
      • Making Requests
      • Multiple Requests
      • Handling Responses
        • Type
        • Valid
        • Error
        • Limit
        • Iterate
        • Temp
        • Output
      • Pagination
      • IML Variables
      • Request-less Communication
      • Multipart/form-data
      • Buffer
    • Static parameters
    • Mappable parameters
    • Interface
    • Epoch
    • Samples
    • Scope
    • Scope List
  • App components
    • Data Types
    • Parameters
      • Array
      • Boolean
      • Buffer
      • Cert
      • Collection
      • Color
      • Date
      • Email
      • Filename
      • Folder, File
      • Filter
      • Hidden
      • Integer, Uinteger
      • Number
      • Password
      • Path
      • Pkey
      • Port
      • Select
      • Text
      • Time
      • Timestamp
      • Timezone
      • URL
      • UUID
    • JavaScript in Make
  • Other
    • Processing of 'empty' Values
    • Processing of JSON strings inside a JSON object
  • Apps Marketplace Beta
    • About
    • How does it work
    • Terms and conditions
    • Tips and tricks
      • Control of access in apps using basic connection
Powered by GitBook

Resources

  • Academy
  • Community
  • Help Center

Useful links

  • Support
  • Privacy Notice
  • Status Page
  • make.com

Follow us

  • LinkedIn
  • X (Twitter)
  • Facebook
  • Instagram

© 2025 make.com

On this page
  • Arrays and Collections
  • Example
  • Interface Generator
  • Dynamic Interface Using RPC
Export as PDF
  1. App blocks

Interface

PreviousMappable parametersNextEpoch

Last updated 4 months ago

Interface describes the structure of output bundles and specifies the parameters which are seen in the next modules.

Interface uses the syntax of the parameters.

The following basic common settings are only supported in the interface:

  • "name": <String>,

  • "label": <String>,

  • "type": <String>

Since Interface describes only parameters that can be used in other modules, the type will never be Folder, File, Filter, Hidden, Path, Pkey, Select

Arrays and Collections

Arrays and Collections use the syntax spec to specify their structure.

{
	"name": "emails",
	"spec": {
		"type": "email",
		"label": "Email"
	},
	"type": "array",
	"label": "Emails"
}
{
	"name": "emails",
	"type": "array",
	"label": "Emails",
	"spec": [
		{
			"name": "email",
			"type": "email",
			"label": "Email"
		},
		{
			"name": "source",
			"type": "text",
			"label": "Source"
		}
	]	
}
{
	"name": "address",
	"spec": [
		{
			"name": "city",
			"type": "text",
			"label": "City"
		},
		{
			"name": "street",
			"type": "text",
			"label": "Street"
		},
		{
			"name": "number",
			"type": "number",
			"label": "Number"
		}
	],
	"type": "collection",
	"label": "Address"
}

Arrays and collections with unknown structure

When you have a parameter that is type Collection or Array but you don't know the structure inside, you need to specify the structure like this:

	{
    "name": "custom_fields",
    "type": "array",
    "label": "Custom Fields"
}

For array, spec is not specified.

{
    "name": "address",
    "type": "collection",
    "label": "Address",
    "spec": []
}

For collection, spec is set to an empty array.

This way, when the service returns any parameter inside the Collection or Array, the user will be able to map them.

Example

[
	{
		"name": "id",
		"type": "uinteger",
		"label": "User ID"
	},
	{
		"name": "createdAt",
		"type": "date",
		"label": "Created at"
	},
	{
		"name": "fullName",
		"type": "text",
		"label": "Full name"
	},
	{
		"name": "emails",
		"spec": {
			"type": "email",
			"label": "Email"
		},
		"type": "array",
		"label": "Emails"
	},
	{
		"name": "address",
		"spec": [
			{
				"name": "city",
				"type": "text",
				"label": "City"
			},
			{
				"name": "street",
				"type": "text",
				"label": "Street"
			},
			{
				"name": "number",
				"type": "number",
				"label": "Number"
			}
		],
		"type": "collection",
		"label": "Address"
	}
]

Interface Generator

Both the web interface and Visual Studio Code have interface generator tool, which helps with generating the interface.

Run a module for which you want to generate an interface, then in the panel with the output, click on the button circled below and choose Download output bundles option.

Then, a new panel will appear, with the original response from the endpoint. Copy the text to your clipboard.

Generator in Web Interface

Go back to the tab with your app and make sure you are in the settings of the right module. Select tab INTERFACE. You can see a JSON snippet:

[
    {
        "name": "id",
        "type": "uinteger",
        "label": "User ID"
    }
]

In the right upper corner, click on Options button and choose Generator.

A new panel will appear. There, paste the previously copied JSON from your clipboard and click Generate.

A new data structure will be generated. Copy it to your clipboard and close the panel.

In the INTERFACE, replace the JSON structure with the new structure.

Generator in Visual Studio Code

Go back to VS Code and make sure you are in the settings of the right module. Select tab INTERFACE. You can see a JSON snippet:

[
    {
        "name": "id",
        "type": "uinteger",
        "label": "User ID"
    }
]

Click on the 'magic wand' icon.

Paste your data and copy the generated code. You still need to check all the labels and types, to make sure there are no errors. You might need to change some abbreviations to uppercase (such as URL, VAT, etc.).

[
    {
        "name": "id",
        "type": "uinteger",
        "label": "User ID"
    }
]
[
  {
    "name": "result",
    "type": "text",
    "label": "Result"
  }
]

The generated code still needs to be reviewed!

Make sure the generated type for dates is date.

The label must be grammatically correct, use Title case and uppercase for abbreviations such as UID, URL, etc.

In the case of Search modules, you will need to delete the pagination data __IMTLENGTH__ and __IMTINDEX__.

Whenever you change INTERFACE in a module, you need to refresh your scenario in order to see the changes.

Dynamic Interface Using RPC

You can use RPC to generate the interface dynamically.

"rpc://nameOfTheRPC"

You can also define RPC to generate just a part of the interface.

[

	{
		"name": "id",
		"type": "uinteger",
		"label": "User ID"
	},
	"rpc://nameOfTheRPC"
]

You can access module parameters in remote procedures via {{parameters.foo}} syntax.

PRO TIP: If you call RPC from the interface of an instant trigger, you can use {{webhook.foo}} syntax to access webhook's parameters.

Parameters
Example of Interface
Download output bundles option
Original response from /helloworld endpoint.
List of available parameters to map before
List of available parameters to map after