mirror of
				https://github.com/n8n-io/n8n-nodes-starter.git
				synced 2025-11-03 23:52:26 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			248 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			248 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { INodeProperties } from 'n8n-workflow';
 | 
						|
 | 
						|
// When the resource `httpVerb` is selected, this `operation` parameter will be shown.
 | 
						|
export const httpVerbOperations: INodeProperties[] = [
 | 
						|
	{
 | 
						|
		displayName: 'Operation',
 | 
						|
		name: 'operation',
 | 
						|
		type: 'options',
 | 
						|
		noDataExpression: true,
 | 
						|
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'GET',
 | 
						|
				value: 'get',
 | 
						|
				description: 'Perform a GET request',
 | 
						|
				routing: {
 | 
						|
					request: {
 | 
						|
						method: 'GET',
 | 
						|
						url: '/get',
 | 
						|
					},
 | 
						|
				},
 | 
						|
			},
 | 
						|
			{
 | 
						|
				name: 'DELETE',
 | 
						|
				value: 'delete',
 | 
						|
				description: 'Perform a DELETE request',
 | 
						|
				routing: {
 | 
						|
					request: {
 | 
						|
						method: 'DELETE',
 | 
						|
						url: '/delete',
 | 
						|
					},
 | 
						|
				},
 | 
						|
			},
 | 
						|
		],
 | 
						|
		default: 'get',
 | 
						|
	},
 | 
						|
];
 | 
						|
 | 
						|
// Here we define what to show when the `get` operation is selected.
 | 
						|
// We do that by adding `operation: ["get"]` to `displayOptions.show`
 | 
						|
const getOperation: INodeProperties[] = [
 | 
						|
	{
 | 
						|
		displayName: 'Type of Data',
 | 
						|
		name: 'typeofData',
 | 
						|
		default: 'queryParameter',
 | 
						|
		description: 'Select type of data to send [Query Parameters]',
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
				operation: ['get'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		type: 'options',
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'Query',
 | 
						|
				value: 'queryParameter',
 | 
						|
			},
 | 
						|
		],
 | 
						|
		required: true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		displayName: 'Query Parameters',
 | 
						|
		name: 'arguments',
 | 
						|
		default: {},
 | 
						|
		description: "The request's query parameters",
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
				operation: ['get'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'keyvalue',
 | 
						|
				displayName: 'Key:Value',
 | 
						|
				values: [
 | 
						|
					{
 | 
						|
						displayName: 'Key',
 | 
						|
						name: 'key',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						required: true,
 | 
						|
						description: 'Key of query parameter',
 | 
						|
					},
 | 
						|
					{
 | 
						|
						displayName: 'Value',
 | 
						|
						name: 'value',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						routing: {
 | 
						|
							send: {
 | 
						|
								property: '={{$parent.key}}',
 | 
						|
								type: 'query',
 | 
						|
							},
 | 
						|
						},
 | 
						|
						required: true,
 | 
						|
						description: 'Value of query parameter',
 | 
						|
					},
 | 
						|
				],
 | 
						|
			},
 | 
						|
		],
 | 
						|
		type: 'fixedCollection',
 | 
						|
		typeOptions: {
 | 
						|
			multipleValues: true,
 | 
						|
		},
 | 
						|
	},
 | 
						|
];
 | 
						|
 | 
						|
// Here we define what to show when the DELETE Operation is selected.
 | 
						|
// We do that by adding `operation: ["delete"]` to `displayOptions.show`
 | 
						|
const deleteOperation: INodeProperties[] = [
 | 
						|
	{
 | 
						|
		displayName: 'Type of Data',
 | 
						|
		name: 'typeofData',
 | 
						|
		default: 'queryParameter',
 | 
						|
		description: 'Select type of data to send [Query Parameter Arguments, JSON-Body]',
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
				operation: ['delete'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'Query',
 | 
						|
				value: 'queryParameter',
 | 
						|
			},
 | 
						|
			{
 | 
						|
				name: 'JSON',
 | 
						|
				value: 'jsonData',
 | 
						|
			},
 | 
						|
		],
 | 
						|
		required: true,
 | 
						|
		type: 'options',
 | 
						|
	},
 | 
						|
	{
 | 
						|
		displayName: 'Query Parameters',
 | 
						|
		name: 'arguments',
 | 
						|
		default: {},
 | 
						|
		description: "The request's query parameters",
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
				operation: ['delete'],
 | 
						|
				typeofData: ['queryParameter'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'keyvalue',
 | 
						|
				displayName: 'Key:Value',
 | 
						|
				values: [
 | 
						|
					{
 | 
						|
						displayName: 'Key',
 | 
						|
						name: 'key',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						required: true,
 | 
						|
						description: 'Key of query parameter',
 | 
						|
					},
 | 
						|
					{
 | 
						|
						displayName: 'Value',
 | 
						|
						name: 'value',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						routing: {
 | 
						|
							send: {
 | 
						|
								property: '={{$parent.key}}',
 | 
						|
								type: 'query',
 | 
						|
							},
 | 
						|
						},
 | 
						|
						required: true,
 | 
						|
						description: 'Value of query parameter',
 | 
						|
					},
 | 
						|
				],
 | 
						|
			},
 | 
						|
		],
 | 
						|
		type: 'fixedCollection',
 | 
						|
		typeOptions: {
 | 
						|
			multipleValues: true,
 | 
						|
		},
 | 
						|
	},
 | 
						|
	{
 | 
						|
		displayName: 'JSON Object',
 | 
						|
		name: 'arguments',
 | 
						|
		default: {},
 | 
						|
		description: "The request's JSON properties",
 | 
						|
		displayOptions: {
 | 
						|
			show: {
 | 
						|
				resource: ['httpVerb'],
 | 
						|
				operation: ['delete'],
 | 
						|
				typeofData: ['jsonData'],
 | 
						|
			},
 | 
						|
		},
 | 
						|
		options: [
 | 
						|
			{
 | 
						|
				name: 'keyvalue',
 | 
						|
				displayName: 'Key:Value',
 | 
						|
				values: [
 | 
						|
					{
 | 
						|
						displayName: 'Key',
 | 
						|
						name: 'key',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						required: true,
 | 
						|
						description: 'Key of JSON property',
 | 
						|
					},
 | 
						|
					{
 | 
						|
						displayName: 'Value',
 | 
						|
						name: 'value',
 | 
						|
						type: 'string',
 | 
						|
						default: '',
 | 
						|
						routing: {
 | 
						|
							send: {
 | 
						|
								property: '={{$parent.key}}',
 | 
						|
								type: 'body',
 | 
						|
							},
 | 
						|
						},
 | 
						|
						required: true,
 | 
						|
						description: 'Value of JSON property',
 | 
						|
					},
 | 
						|
				],
 | 
						|
			},
 | 
						|
		],
 | 
						|
		type: 'fixedCollection',
 | 
						|
		typeOptions: {
 | 
						|
			multipleValues: true,
 | 
						|
		},
 | 
						|
	},
 | 
						|
];
 | 
						|
 | 
						|
export const httpVerbFields: INodeProperties[] = [
 | 
						|
	/* -------------------------------------------------------------------------- */
 | 
						|
	/*                                httpVerb:get                                */
 | 
						|
	/* -------------------------------------------------------------------------- */
 | 
						|
	...getOperation,
 | 
						|
 | 
						|
	/* -------------------------------------------------------------------------- */
 | 
						|
	/*                              httpVerb:delete                               */
 | 
						|
	/* -------------------------------------------------------------------------- */
 | 
						|
	...deleteOperation,
 | 
						|
];
 |