import type { INodeProperties } from 'n8n-workflow';
export const mainProperties: INodeProperties[] = [
{
displayName: '',
name: 'curlImport',
type: 'curlImport',
default: '',
},
{
displayName: 'Method',
name: 'method',
type: 'options',
options: [
{
name: 'DELETE',
value: 'DELETE',
},
{
name: 'GET',
value: 'GET',
},
{
name: 'HEAD',
value: 'HEAD',
},
{
name: 'OPTIONS',
value: 'OPTIONS',
},
{
name: 'PATCH',
value: 'PATCH',
},
{
name: 'POST',
value: 'POST',
},
{
name: 'PUT',
value: 'PUT',
},
],
default: 'GET',
description: 'The request method to use',
},
{
displayName: 'URL',
name: 'url',
type: 'string',
default: '',
placeholder: 'http://example.com/index.html',
description: 'The URL to make the request to',
required: true,
},
{
displayName: 'Authentication',
name: 'authentication',
noDataExpression: true,
type: 'options',
options: [
{
name: 'None',
value: 'none',
},
{
name: 'Predefined Credential Type',
value: 'predefinedCredentialType',
description:
"We've already implemented auth for many services so that you don't have to set it up manually",
},
{
name: 'Generic Credential Type',
value: 'genericCredentialType',
description: 'Fully customizable. Choose between basic, header, OAuth2, etc.',
},
],
default: 'none',
},
{
displayName: 'Credential Type',
name: 'nodeCredentialType',
type: 'credentialsSelect',
noDataExpression: true,
required: true,
default: '',
credentialTypes: ['extends:oAuth2Api', 'extends:oAuth1Api', 'has:authenticate'],
displayOptions: {
show: {
authentication: ['predefinedCredentialType'],
},
},
},
{
displayName:
'Make sure you have specified the scope(s) for the Service Account in the credential',
name: 'googleApiWarning',
type: 'notice',
default: '',
displayOptions: {
show: {
nodeCredentialType: ['googleApi'],
},
},
},
{
displayName: 'Generic Auth Type',
name: 'genericAuthType',
type: 'credentialsSelect',
required: true,
default: '',
credentialTypes: ['has:genericAuth'],
displayOptions: {
show: {
authentication: ['genericCredentialType'],
},
},
},
{
displayName: 'SSL Certificates',
name: 'provideSslCertificates',
type: 'boolean',
default: false,
isNodeSetting: true,
},
{
displayName: "Provide certificates in node's 'Credential for SSL Certificates' parameter",
name: 'provideSslCertificatesNotice',
type: 'notice',
default: '',
isNodeSetting: true,
displayOptions: {
show: {
provideSslCertificates: [true],
},
},
},
{
displayName: 'SSL Certificate',
name: 'sslCertificate',
type: 'credentials',
default: '',
displayOptions: {
show: {
provideSslCertificates: [true],
},
},
},
{
displayName: 'Send Query Parameters',
name: 'sendQuery',
type: 'boolean',
default: false,
noDataExpression: true,
description: 'Whether the request has query params or not',
},
{
displayName: 'Specify Query Parameters',
name: 'specifyQuery',
type: 'options',
displayOptions: {
show: {
sendQuery: [true],
},
},
options: [
{
name: 'Using Fields Below',
value: 'keypair',
},
{
name: 'Using JSON',
value: 'json',
},
],
default: 'keypair',
},
{
displayName: 'Query Parameters',
name: 'queryParameters',
type: 'fixedCollection',
displayOptions: {
show: {
sendQuery: [true],
specifyQuery: ['keypair'],
},
},
typeOptions: {
multipleValues: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
},
],
},
],
},
{
displayName: 'JSON',
name: 'jsonQuery',
type: 'json',
displayOptions: {
show: {
sendQuery: [true],
specifyQuery: ['json'],
},
},
default: '',
},
{
displayName: 'Send Headers',
name: 'sendHeaders',
type: 'boolean',
default: false,
noDataExpression: true,
description: 'Whether the request has headers or not',
},
{
displayName: 'Specify Headers',
name: 'specifyHeaders',
type: 'options',
displayOptions: {
show: {
sendHeaders: [true],
},
},
options: [
{
name: 'Using Fields Below',
value: 'keypair',
},
{
name: 'Using JSON',
value: 'json',
},
],
default: 'keypair',
},
{
displayName: 'Header Parameters',
name: 'headerParameters',
type: 'fixedCollection',
displayOptions: {
show: {
sendHeaders: [true],
specifyHeaders: ['keypair'],
},
},
typeOptions: {
multipleValues: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
},
],
},
],
},
{
displayName: 'JSON',
name: 'jsonHeaders',
type: 'json',
displayOptions: {
show: {
sendHeaders: [true],
specifyHeaders: ['json'],
},
},
default: '',
},
{
displayName: 'Send Body',
name: 'sendBody',
type: 'boolean',
default: false,
noDataExpression: true,
description: 'Whether the request has a body or not',
},
{
displayName: 'Body Content Type',
name: 'contentType',
type: 'options',
displayOptions: {
show: {
sendBody: [true],
},
},
options: [
{
name: 'Form Urlencoded',
value: 'form-urlencoded',
},
{
name: 'Form-Data',
value: 'multipart-form-data',
},
{
name: 'JSON',
value: 'json',
},
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
name: 'n8n Binary File',
value: 'binaryData',
},
{
name: 'Raw',
value: 'raw',
},
],
default: 'json',
description: 'Content-Type to use to send body parameters',
},
{
displayName: 'Specify Body',
name: 'specifyBody',
type: 'options',
displayOptions: {
show: {
sendBody: [true],
contentType: ['json'],
},
},
options: [
{
name: 'Using Fields Below',
value: 'keypair',
},
{
name: 'Using JSON',
value: 'json',
},
],
default: 'keypair',
// eslint-disable-next-line n8n-nodes-base/node-param-description-miscased-json
description:
'The body can be specified using explicit fields (keypair
) or using a JavaScript object (json
)',
},
{
displayName: 'Body Parameters',
name: 'bodyParameters',
type: 'fixedCollection',
displayOptions: {
show: {
sendBody: [true],
contentType: ['json'],
specifyBody: ['keypair'],
},
},
typeOptions: {
multipleValues: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
description:
'ID of the field to set. Choose from the list, or specify an ID using an expression.',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
description: 'Value of the field to set',
},
],
},
],
},
{
displayName: 'JSON',
name: 'jsonBody',
type: 'json',
displayOptions: {
show: {
sendBody: [true],
contentType: ['json'],
specifyBody: ['json'],
},
},
default: '',
},
{
displayName: 'Body Parameters',
name: 'bodyParameters',
type: 'fixedCollection',
displayOptions: {
show: {
sendBody: [true],
contentType: ['multipart-form-data'],
},
},
typeOptions: {
multipleValues: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Parameter Type',
name: 'parameterType',
type: 'options',
options: [
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
name: 'n8n Binary File',
value: 'formBinaryData',
},
{
name: 'Form Data',
value: 'formData',
},
],
default: 'formData',
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
description:
'ID of the field to set. Choose from the list, or specify an ID using an expression.',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
displayOptions: {
show: {
parameterType: ['formData'],
},
},
default: '',
description: 'Value of the field to set',
},
{
displayName: 'Input Data Field Name',
name: 'inputDataFieldName',
type: 'string',
displayOptions: {
show: {
parameterType: ['formBinaryData'],
},
},
default: '',
description:
'The name of the incoming field containing the binary file data to be processed',
},
],
},
],
},
{
displayName: 'Specify Body',
name: 'specifyBody',
type: 'options',
displayOptions: {
show: {
sendBody: [true],
contentType: ['form-urlencoded'],
},
},
options: [
{
name: 'Using Fields Below',
value: 'keypair',
},
{
name: 'Using Single Field',
value: 'string',
},
],
default: 'keypair',
},
{
displayName: 'Body Parameters',
name: 'bodyParameters',
type: 'fixedCollection',
displayOptions: {
show: {
sendBody: [true],
contentType: ['form-urlencoded'],
specifyBody: ['keypair'],
},
},
typeOptions: {
multipleValues: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
description:
'ID of the field to set. Choose from the list, or specify an ID using an expression.',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
description: 'Value of the field to set',
},
],
},
],
},
{
displayName: 'Body',
name: 'body',
type: 'string',
displayOptions: {
show: {
sendBody: [true],
specifyBody: ['string'],
},
},
default: '',
placeholder: 'field1=value1&field2=value2',
},
{
displayName: 'Input Data Field Name',
name: 'inputDataFieldName',
type: 'string',
displayOptions: {
show: {
sendBody: [true],
contentType: ['binaryData'],
},
},
default: '',
description: 'The name of the incoming field containing the binary file data to be processed',
},
{
displayName: 'Content Type',
name: 'rawContentType',
type: 'string',
displayOptions: {
show: {
sendBody: [true],
contentType: ['raw'],
},
},
default: '',
placeholder: 'text/html',
},
{
displayName: 'Body',
name: 'body',
type: 'string',
displayOptions: {
show: {
sendBody: [true],
contentType: ['raw'],
},
},
default: '',
placeholder: '',
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add option',
default: {},
options: [
{
displayName: 'Batching',
name: 'batching',
placeholder: 'Add Batching',
type: 'fixedCollection',
typeOptions: {
multipleValues: false,
},
default: {
batch: {},
},
options: [
{
displayName: 'Batching',
name: 'batch',
values: [
{
displayName: 'Items per Batch',
name: 'batchSize',
type: 'number',
typeOptions: {
minValue: -1,
},
default: 50,
description:
'Input will be split in batches to throttle requests. -1 for disabled. 0 will be treated as 1.',
},
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
displayName: 'Batch Interval (ms)',
name: 'batchInterval',
type: 'number',
typeOptions: {
minValue: 0,
},
default: 1000,
description:
'Time (in milliseconds) between each batch of requests. 0 for disabled.',
},
],
},
],
},
{
displayName: 'Ignore SSL Issues',
name: 'allowUnauthorizedCerts',
type: 'boolean',
noDataExpression: true,
default: false,
// eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-ignore-ssl-issues
description:
'Whether to download the response even if SSL certificate validation is not possible',
},
{
displayName: 'Array Format in Query Parameters',
name: 'queryParameterArrays',
type: 'options',
displayOptions: {
show: {
'/sendQuery': [true],
},
},
options: [
{
name: 'No Brackets',
value: 'repeat',
// eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char
description: 'e.g. foo=bar&foo=qux',
},
{
name: 'Brackets Only',
value: 'brackets',
// eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char
description: 'e.g. foo[]=bar&foo[]=qux',
},
{
name: 'Brackets with Indices',
value: 'indices',
// eslint-disable-next-line n8n-nodes-base/node-param-description-lowercase-first-char
description: 'e.g. foo[0]=bar&foo[1]=qux',
},
],
default: 'brackets',
},
{
displayName: 'Lowercase Headers',
name: 'lowercaseHeaders',
type: 'boolean',
default: true,
description: 'Whether to lowercase header names',
},
{
displayName: 'Redirects',
name: 'redirect',
placeholder: 'Add Redirect',
type: 'fixedCollection',
typeOptions: {
multipleValues: false,
},
default: { redirect: {} },
options: [
{
displayName: 'Redirect',
name: 'redirect',
values: [
{
displayName: 'Follow Redirects',
name: 'followRedirects',
type: 'boolean',
default: false,
noDataExpression: true,
description: 'Whether to follow all redirects',
},
{
displayName: 'Max Redirects',
name: 'maxRedirects',
type: 'number',
displayOptions: {
show: {
followRedirects: [true],
},
},
default: 21,
description: 'Max number of redirects to follow',
},
],
},
],
displayOptions: {
show: {
'@version': [1, 2, 3],
},
},
},
{
displayName: 'Redirects',
name: 'redirect',
placeholder: 'Add Redirect',
type: 'fixedCollection',
typeOptions: {
multipleValues: false,
},
default: {
redirect: {},
},
options: [
{
displayName: 'Redirect',
name: 'redirect',
values: [
{
displayName: 'Follow Redirects',
name: 'followRedirects',
type: 'boolean',
default: true,
noDataExpression: true,
description: 'Whether to follow all redirects',
},
{
displayName: 'Max Redirects',
name: 'maxRedirects',
type: 'number',
displayOptions: {
show: {
followRedirects: [true],
},
},
default: 21,
description: 'Max number of redirects to follow',
},
],
},
],
displayOptions: {
hide: {
'@version': [1, 2, 3],
},
},
},
{
displayName: 'Response',
name: 'response',
placeholder: 'Add response',
type: 'fixedCollection',
typeOptions: {
multipleValues: false,
},
default: {
response: {},
},
options: [
{
displayName: 'Response',
name: 'response',
values: [
{
displayName: 'Include Response Headers and Status',
name: 'fullResponse',
type: 'boolean',
default: false,
description:
'Whether to return the full response (headers and response status code) data instead of only the body',
},
{
displayName: 'Never Error',
name: 'neverError',
type: 'boolean',
default: false,
description: 'Whether to succeeds also when status code is not 2xx',
},
{
displayName: 'Response Format',
name: 'responseFormat',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Autodetect',
value: 'autodetect',
},
{
name: 'File',
value: 'file',
},
{
name: 'JSON',
value: 'json',
},
{
name: 'Text',
value: 'text',
},
],
default: 'autodetect',
description: 'The format in which the data gets returned from the URL',
},
{
displayName: 'Put Output in Field',
name: 'outputPropertyName',
type: 'string',
default: 'data',
required: true,
displayOptions: {
show: {
responseFormat: ['file', 'text'],
},
},
description:
'Name of the binary property to which to write the data of the read file',
},
],
},
],
},
{
displayName: 'Pagination',
name: 'pagination',
placeholder: 'Add pagination',
type: 'fixedCollection',
typeOptions: {
multipleValues: false,
},
default: {
pagination: {},
},
options: [
{
displayName: 'Pagination',
name: 'pagination',
values: [
{
displayName: 'Pagination Mode',
name: 'paginationMode',
type: 'options',
typeOptions: {
noDataExpression: true,
},
options: [
{
name: 'Off',
value: 'off',
},
{
name: 'Update a Parameter in Each Request',
value: 'updateAParameterInEachRequest',
},
{
name: 'Response Contains Next URL',
value: 'responseContainsNextURL',
},
],
default: 'updateAParameterInEachRequest',
description: 'If pagination should be used',
},
{
displayName:
'Use the $response variables to access the data of the previous response. Refer to the docs for more info about pagination/',
name: 'webhookNotice',
displayOptions: {
hide: {
paginationMode: ['off'],
},
},
type: 'notice',
default: '',
},
{
displayName: 'Next URL',
name: 'nextURL',
type: 'string',
displayOptions: {
show: {
paginationMode: ['responseContainsNextURL'],
},
},
default: '',
description:
'Should evaluate to the URL of the next page. More info.',
},
{
displayName: 'Parameters',
name: 'parameters',
type: 'fixedCollection',
displayOptions: {
show: {
paginationMode: ['updateAParameterInEachRequest'],
},
},
typeOptions: {
multipleValues: true,
noExpression: true,
},
placeholder: 'Add Parameter',
default: {
parameters: [
{
type: 'qs',
name: '',
value: '',
},
],
},
options: [
{
name: 'parameters',
displayName: 'Parameter',
values: [
{
displayName: 'Type',
name: 'type',
type: 'options',
options: [
{
name: 'Body',
value: 'body',
},
{
name: 'Header',
value: 'headers',
},
{
name: 'Query',
value: 'qs',
},
],
default: 'qs',
description: 'Where the parameter should be set',
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
placeholder: 'e.g page',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
hint: 'Use expression mode and $response to access response data',
},
],
},
],
},
{
displayName: 'Pagination Complete When',
name: 'paginationCompleteWhen',
type: 'options',
typeOptions: {
noDataExpression: true,
},
displayOptions: {
hide: {
paginationMode: ['off'],
},
},
options: [
{
name: 'Response Is Empty',
value: 'responseIsEmpty',
},
{
name: 'Receive Specific Status Code(s)',
value: 'receiveSpecificStatusCodes',
},
{
name: 'Other',
value: 'other',
},
],
default: 'responseIsEmpty',
description: 'When should no further requests be made?',
},
{
displayName: 'Status Code(s) when Complete',
name: 'statusCodesWhenComplete',
type: 'string',
typeOptions: {
noDataExpression: true,
},
displayOptions: {
show: {
paginationCompleteWhen: ['receiveSpecificStatusCodes'],
},
},
default: '',
description: 'Accepts comma-separated values',
},
{
displayName: 'Complete Expression',
name: 'completeExpression',
type: 'string',
displayOptions: {
show: {
paginationCompleteWhen: ['other'],
},
},
default: '',
description:
'Should evaluate to true when pagination is complete. More info.',
},
{
displayName: 'Limit Pages Fetched',
name: 'limitPagesFetched',
type: 'boolean',
typeOptions: {
noDataExpression: true,
},
displayOptions: {
hide: {
paginationMode: ['off'],
},
},
default: false,
noDataExpression: true,
description: 'Whether the number of requests should be limited',
},
{
displayName: 'Max Pages',
name: 'maxRequests',
type: 'number',
typeOptions: {
noDataExpression: true,
},
displayOptions: {
show: {
limitPagesFetched: [true],
},
},
default: 100,
description: 'Maximum amount of request to be make',
},
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
displayName: 'Interval Between Requests (ms)',
name: 'requestInterval',
type: 'number',
displayOptions: {
hide: {
paginationMode: ['off'],
},
},
default: 0,
description: 'Time in milliseconds to wait between requests',
hint: 'At 0 no delay will be added',
typeOptions: {
minValue: 0,
},
},
],
},
],
},
{
displayName: 'Proxy',
name: 'proxy',
type: 'string',
default: '',
placeholder: 'e.g. http://myproxy:3128',
description: 'HTTP proxy to use',
},
{
displayName: 'Timeout',
name: 'timeout',
type: 'number',
typeOptions: {
minValue: 1,
},
default: 10000,
description:
'Time in ms to wait for the server to send response headers (and start the response body) before aborting the request',
},
],
},
{
displayName:
"You can view the raw requests this node makes in your browser's developer console",
name: 'infoMessage',
type: 'notice',
default: '',
},
];