mirror of
				https://github.com/n8n-io/n8n-nodes-starter.git
				synced 2025-10-30 14:52:27 -05:00 
			
		
		
		
	repository cleaned
This commit is contained in:
		
					parent
					
						
							
								392231e695
							
						
					
				
			
			
				commit
				
					
						1f0d4727f0
					
				
			
		
					 11 changed files with 2 additions and 4553 deletions
				
			
		|  | @ -1,76 +0,0 @@ | ||||||
| # Contributor Covenant Code of Conduct |  | ||||||
| 
 |  | ||||||
| ## Our Pledge |  | ||||||
| 
 |  | ||||||
| In the interest of fostering an open and welcoming environment, we as |  | ||||||
| contributors and maintainers pledge to making participation in our project and |  | ||||||
| our community a harassment-free experience for everyone, regardless of age, body |  | ||||||
| size, disability, ethnicity, sex characteristics, gender identity and expression, |  | ||||||
| level of experience, education, socio-economic status, nationality, personal |  | ||||||
| appearance, race, religion, or sexual identity and orientation. |  | ||||||
| 
 |  | ||||||
| ## Our Standards |  | ||||||
| 
 |  | ||||||
| Examples of behavior that contributes to creating a positive environment |  | ||||||
| include: |  | ||||||
| 
 |  | ||||||
| * Using welcoming and inclusive language |  | ||||||
| * Being respectful of differing viewpoints and experiences |  | ||||||
| * Gracefully accepting constructive criticism |  | ||||||
| * Focusing on what is best for the community |  | ||||||
| * Showing empathy towards other community members |  | ||||||
| 
 |  | ||||||
| Examples of unacceptable behavior by participants include: |  | ||||||
| 
 |  | ||||||
| * The use of sexualized language or imagery and unwelcome sexual attention or |  | ||||||
|  advances |  | ||||||
| * Trolling, insulting/derogatory comments, and personal or political attacks |  | ||||||
| * Public or private harassment |  | ||||||
| * Publishing others' private information, such as a physical or electronic |  | ||||||
|  address, without explicit permission |  | ||||||
| * Other conduct which could reasonably be considered inappropriate in a |  | ||||||
|  professional setting |  | ||||||
| 
 |  | ||||||
| ## Our Responsibilities |  | ||||||
| 
 |  | ||||||
| Project maintainers are responsible for clarifying the standards of acceptable |  | ||||||
| behavior and are expected to take appropriate and fair corrective action in |  | ||||||
| response to any instances of unacceptable behavior. |  | ||||||
| 
 |  | ||||||
| Project maintainers have the right and responsibility to remove, edit, or |  | ||||||
| reject comments, commits, code, wiki edits, issues, and other contributions |  | ||||||
| that are not aligned to this Code of Conduct, or to ban temporarily or |  | ||||||
| permanently any contributor for other behaviors that they deem inappropriate, |  | ||||||
| threatening, offensive, or harmful. |  | ||||||
| 
 |  | ||||||
| ## Scope |  | ||||||
| 
 |  | ||||||
| This Code of Conduct applies both within project spaces and in public spaces |  | ||||||
| when an individual is representing the project or its community. Examples of |  | ||||||
| representing a project or community include using an official project e-mail |  | ||||||
| address, posting via an official social media account, or acting as an appointed |  | ||||||
| representative at an online or offline event. Representation of a project may be |  | ||||||
| further defined and clarified by project maintainers. |  | ||||||
| 
 |  | ||||||
| ## Enforcement |  | ||||||
| 
 |  | ||||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be |  | ||||||
| reported by contacting the project team at jan@n8n.io. All |  | ||||||
| complaints will be reviewed and investigated and will result in a response that |  | ||||||
| is deemed necessary and appropriate to the circumstances. The project team is |  | ||||||
| obligated to maintain confidentiality with regard to the reporter of an incident. |  | ||||||
| Further details of specific enforcement policies may be posted separately. |  | ||||||
| 
 |  | ||||||
| Project maintainers who do not follow or enforce the Code of Conduct in good |  | ||||||
| faith may face temporary or permanent repercussions as determined by other |  | ||||||
| members of the project's leadership. |  | ||||||
| 
 |  | ||||||
| ## Attribution |  | ||||||
| 
 |  | ||||||
| This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, |  | ||||||
| available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html |  | ||||||
| 
 |  | ||||||
| [homepage]: https://www.contributor-covenant.org |  | ||||||
| 
 |  | ||||||
| For answers to common questions about this code of conduct, see |  | ||||||
| https://www.contributor-covenant.org/faq |  | ||||||
							
								
								
									
										80
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										80
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,80 +0,0 @@ | ||||||
|  |  | ||||||
| 
 |  | ||||||
| # n8n-nodes-starter |  | ||||||
| 
 |  | ||||||
| This repo contains example nodes to help you get started building your own custom integrations for [n8n](https://n8n.io). It includes the node linter and other dependencies. |  | ||||||
| 
 |  | ||||||
| To make your custom node available to the community, you must create it as an npm package, and [submit it to the npm registry](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry). |  | ||||||
| 
 |  | ||||||
| If you would like your node to be available on n8n cloud you can also [submit your node for verification](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/). |  | ||||||
| 
 |  | ||||||
| ## Prerequisites |  | ||||||
| 
 |  | ||||||
| You need the following installed on your development machine: |  | ||||||
| 
 |  | ||||||
| * Docker and Docker Compose |  | ||||||
| * NodeJS, npm and pnpm (Execture npm install -g pnpm@latest-10 after installing npm) |  | ||||||
| 
 |  | ||||||
| Once you have cloned the repository: |  | ||||||
| 
 |  | ||||||
| * Execute: |  | ||||||
|   ``` |  | ||||||
|   npm i |  | ||||||
|   ``` |  | ||||||
| 
 |  | ||||||
| To run the local n8n instance: |  | ||||||
| 
 |  | ||||||
| * Execute: |  | ||||||
|   ``` |  | ||||||
|   docker compose up -d |  | ||||||
|   ``` |  | ||||||
|   Now, n8n will run on http://localhost:5678. |  | ||||||
| 
 |  | ||||||
| When changes are made to the custom node code and you want to test it on the local instance: |  | ||||||
| 
 |  | ||||||
| * There is a script file called deploy-node.sh. Once executed, it will build the custom node code and deploy the Docker container. This file requires a few changes depending on the name that Docker gives to the container and the volumes: |  | ||||||
| 
 |  | ||||||
|   * On line 24 of the script, you will see this line: |  | ||||||
|     ``` |  | ||||||
|     TARGET_DIR="/var/lib/docker/volumes/n8n-self-hosted_n8n_data/_data/custom/$PACKAGE_NAME" |  | ||||||
|     ``` |  | ||||||
|    |  | ||||||
|   * Depending on the container volume name, "n8n-self-hosted_n8n_data" needs to be changed. To check the volume's name, execute: |  | ||||||
| 
 |  | ||||||
|     ``` |  | ||||||
|     docker volume ls |  | ||||||
|     ``` |  | ||||||
| 
 |  | ||||||
|   * On lines 56 and 59, "n8n-self-hosted-n8n-1" must be changed to match the name of the container for the n8n instance. |  | ||||||
| 
 |  | ||||||
|   * Once these changes are made, execute the script: |  | ||||||
|     ``` |  | ||||||
|     ./deploy-node.sh |  | ||||||
|     ``` |  | ||||||
| 
 |  | ||||||
| ## Using this starter |  | ||||||
| 
 |  | ||||||
| These are the basic steps for working with the starter. For detailed guidance on creating and publishing nodes, refer to the [documentation](https://docs.n8n.io/integrations/creating-nodes/). |  | ||||||
| 
 |  | ||||||
| 1. [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template repository. |  | ||||||
| 2. Clone your new repo: |  | ||||||
|    ``` |  | ||||||
|    git clone https://github.com/<your organization>/<your-repo-name>.git |  | ||||||
|    ``` |  | ||||||
| 3. Run `npm i` to install dependencies. |  | ||||||
| 4. Open the project in your editor. |  | ||||||
| 5. Browse the examples in `/nodes` and `/credentials`. Modify the examples, or replace them with your own nodes. |  | ||||||
| 6. Update the `package.json` to match your details. |  | ||||||
| 7. Run `npm run lint` to check for errors or `npm run lintfix` to automatically fix errors when possible. |  | ||||||
| 8. Test your node locally. Refer to [Run your node locally](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for guidance. |  | ||||||
| 9. Replace this README with documentation for your node. Use the [README_TEMPLATE](README_TEMPLATE.md) to get started. |  | ||||||
| 10. Update the LICENSE file to use your details. |  | ||||||
| 11. [Publish](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) your package to npm. |  | ||||||
| 
 |  | ||||||
| ## More information |  | ||||||
| 
 |  | ||||||
| Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes. |  | ||||||
| 
 |  | ||||||
| ## License |  | ||||||
| 
 |  | ||||||
| [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md) |  | ||||||
|  | @ -1,48 +0,0 @@ | ||||||
| # n8n-nodes-_node-name_ |  | ||||||
| 
 |  | ||||||
| This is an n8n community node. It lets you use _app/service name_ in your n8n workflows. |  | ||||||
| 
 |  | ||||||
| _App/service name_ is _one or two sentences describing the service this node integrates with_. |  | ||||||
| 
 |  | ||||||
| [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform. |  | ||||||
| 
 |  | ||||||
| [Installation](#installation)   |  | ||||||
| [Operations](#operations)   |  | ||||||
| [Credentials](#credentials)  <!-- delete if no auth needed -->   |  | ||||||
| [Compatibility](#compatibility)   |  | ||||||
| [Usage](#usage)  <!-- delete if not using this section -->   |  | ||||||
| [Resources](#resources)   |  | ||||||
| [Version history](#version-history)  <!-- delete if not using this section -->   |  | ||||||
| 
 |  | ||||||
| ## Installation |  | ||||||
| 
 |  | ||||||
| Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. |  | ||||||
| 
 |  | ||||||
| ## Operations |  | ||||||
| 
 |  | ||||||
| _List the operations supported by your node._ |  | ||||||
| 
 |  | ||||||
| ## Credentials |  | ||||||
| 
 |  | ||||||
| _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._ |  | ||||||
| 
 |  | ||||||
| ## Compatibility |  | ||||||
| 
 |  | ||||||
| _State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._ |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| 
 |  | ||||||
| _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._ |  | ||||||
| 
 |  | ||||||
| _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._ |  | ||||||
| 
 |  | ||||||
| ## Resources |  | ||||||
| 
 |  | ||||||
| * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes) |  | ||||||
| * _Link to app/service documentation._ |  | ||||||
| 
 |  | ||||||
| ## Version history |  | ||||||
| 
 |  | ||||||
| _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | @ -1,50 +0,0 @@ | ||||||
| import { |  | ||||||
| 	IAuthenticateGeneric, |  | ||||||
| 	ICredentialTestRequest, |  | ||||||
| 	ICredentialType, |  | ||||||
| 	INodeProperties, |  | ||||||
| } from 'n8n-workflow'; |  | ||||||
| 
 |  | ||||||
| export class HttpBinApi implements ICredentialType { |  | ||||||
| 	name = 'httpbinApi'; |  | ||||||
| 	displayName = 'HttpBin API'; |  | ||||||
| 	documentationUrl = 'https://your-docs-url'; |  | ||||||
| 	properties: INodeProperties[] = [ |  | ||||||
| 		{ |  | ||||||
| 			displayName: 'Token', |  | ||||||
| 			name: 'token', |  | ||||||
| 			type: 'string', |  | ||||||
| 			default: '', |  | ||||||
| 			typeOptions: { |  | ||||||
| 				password: true, |  | ||||||
| 			} |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			displayName: 'Domain', |  | ||||||
| 			name: 'domain', |  | ||||||
| 			type: 'string', |  | ||||||
| 			default: 'https://httpbin.org', |  | ||||||
| 		}, |  | ||||||
| 	]; |  | ||||||
| 
 |  | ||||||
| 	// This allows the credential to be used by other parts of n8n
 |  | ||||||
| 	// stating how this credential is injected as part of the request
 |  | ||||||
| 	// An example is the Http Request node that can make generic calls
 |  | ||||||
| 	// reusing this credential
 |  | ||||||
| 	authenticate: IAuthenticateGeneric = { |  | ||||||
| 		type: 'generic', |  | ||||||
| 		properties: { |  | ||||||
| 			headers: { |  | ||||||
| 				Authorization: '={{"Bearer " + $credentials.token}}', |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	// The block below tells how this credential can be tested
 |  | ||||||
| 	test: ICredentialTestRequest = { |  | ||||||
| 		request: { |  | ||||||
| 			baseURL: '={{$credentials?.domain}}', |  | ||||||
| 			url: '/bearer', |  | ||||||
| 		}, |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										6
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								index.js
									
										
									
									
									
								
							|  | @ -1,11 +1,9 @@ | ||||||
| const { S4DSAuth } = require('./dist/nodes/S4DSAuth/S4DSAuth.node.js'); | const { S4DSAuth } = require('./dist/nodes/S4DSAuth/S4DSAuth.node.js'); | ||||||
| const { S4DSExample } = require('./dist/nodes/S4DSExample/S4DSExample.node.js'); | const { S4DSExample } = require('./dist/nodes/S4DSExample/S4DSExample.node.js'); | ||||||
| const { HttpBin } = require('./dist/nodes/HttpBin/HttpBin.node.js'); |  | ||||||
| 
 | 
 | ||||||
| const { S4DSApi } = require('./dist/credentials/S4DSApi.credentials.js'); | const { S4DSApi } = require('./dist/credentials/S4DSApi.credentials.js'); | ||||||
| const { HttpBinApi } = require('./dist/credentials/HttpBinApi.credentials.js'); |  | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
| 	nodes: [S4DSAuth, S4DSExample, HttpBin], | 	nodes: [S4DSAuth, S4DSExample], | ||||||
| 	credentials: [S4DSApi, HttpBinApi], | 	credentials: [S4DSApi], | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| { |  | ||||||
| 	"node": "n8n-nodes-base.httpbin", |  | ||||||
| 	"nodeVersion": "1.0", |  | ||||||
| 	"codexVersion": "1.0", |  | ||||||
| 	"categories": ["Development", "Developer Tools"], |  | ||||||
| 	"resources": { |  | ||||||
| 		"credentialDocumentation": [ |  | ||||||
| 			{ |  | ||||||
| 				"url": "http://httpbin.org/#/Auth/get_bearer" |  | ||||||
| 			} |  | ||||||
| 		], |  | ||||||
| 		"primaryDocumentation": [ |  | ||||||
| 			{ |  | ||||||
| 				"url": "http://httpbin.org/" |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  | @ -1,63 +0,0 @@ | ||||||
| import { INodeType, INodeTypeDescription, NodeConnectionType } from 'n8n-workflow'; |  | ||||||
| import { httpVerbFields, httpVerbOperations } from './HttpVerbDescription'; |  | ||||||
| 
 |  | ||||||
| export class HttpBin implements INodeType { |  | ||||||
| 	description: INodeTypeDescription = { |  | ||||||
| 		displayName: 'HttpBin', |  | ||||||
| 		name: 'httpBin', |  | ||||||
| 		icon: { light: 'file:httpbin.svg', dark: 'file:httpbin.svg' }, |  | ||||||
| 		group: ['transform'], |  | ||||||
| 		version: 1, |  | ||||||
| 		subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', |  | ||||||
| 		description: 'Interact with HttpBin API', |  | ||||||
| 		defaults: { |  | ||||||
| 			name: 'HttpBin', |  | ||||||
| 		}, |  | ||||||
| 		inputs: [NodeConnectionType.Main], |  | ||||||
| 		outputs: [NodeConnectionType.Main], |  | ||||||
| 		usableAsTool: true, |  | ||||||
| 		credentials: [ |  | ||||||
| 			{ |  | ||||||
| 				name: 'httpbinApi', |  | ||||||
| 				required: false, |  | ||||||
| 			}, |  | ||||||
| 		], |  | ||||||
| 		requestDefaults: { |  | ||||||
| 			baseURL: 'https://httpbin.org', |  | ||||||
| 			url: '', |  | ||||||
| 			headers: { |  | ||||||
| 				Accept: 'application/json', |  | ||||||
| 				'Content-Type': 'application/json', |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		/** |  | ||||||
| 		 * In the properties array we have two mandatory options objects required |  | ||||||
| 		 * |  | ||||||
| 		 * [Resource & Operation] |  | ||||||
| 		 * |  | ||||||
| 		 * https://docs.n8n.io/integrations/creating-nodes/code/create-first-node/#resources-and-operations
 |  | ||||||
| 		 * |  | ||||||
| 		 * In our example, the operations are separated into their own file (HTTPVerbDescription.ts) |  | ||||||
| 		 * to keep this class easy to read. |  | ||||||
| 		 * |  | ||||||
| 		 */ |  | ||||||
| 		properties: [ |  | ||||||
| 			{ |  | ||||||
| 				displayName: 'Resource', |  | ||||||
| 				name: 'resource', |  | ||||||
| 				type: 'options', |  | ||||||
| 				noDataExpression: true, |  | ||||||
| 				options: [ |  | ||||||
| 					{ |  | ||||||
| 						name: 'HTTP Verb', |  | ||||||
| 						value: 'httpVerb', |  | ||||||
| 					}, |  | ||||||
| 				], |  | ||||||
| 				default: 'httpVerb', |  | ||||||
| 			}, |  | ||||||
| 
 |  | ||||||
| 			...httpVerbOperations, |  | ||||||
| 			...httpVerbFields, |  | ||||||
| 		], |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
|  | @ -1,250 +0,0 @@ | ||||||
| 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', |  | ||||||
| 				action: 'Perform a GET request', |  | ||||||
| 				routing: { |  | ||||||
| 					request: { |  | ||||||
| 						method: 'GET', |  | ||||||
| 						url: '/get', |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				name: 'DELETE', |  | ||||||
| 				value: 'delete', |  | ||||||
| 				description: 'Perform a DELETE request', |  | ||||||
| 				action: '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, |  | ||||||
| ]; |  | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |  | ||||||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> |  | ||||||
| <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">  <image id="image0" width="32" height="32" x="0" y="0" |  | ||||||
|     href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJN |  | ||||||
| AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElN |  | ||||||
| RQfmBg4UAC/TqOZZAAACA0lEQVRIx5XVv09TURwF8M+jFHDSyRkGFhPAEfyRdDHi5uriXyDoYgKT |  | ||||||
| MJDWzUT/Ahf/AiOEpajEgCESmpiYmDCxGowDTYE+h76+vte+15Zzk753b7733HNO772PbEw7ECba |  | ||||||
| genswtEcgl0/PHARV72066YrIDSZ6k8KBym4741r0XsB284TdUX8chn1zrzwJUmw4KFXPqjFE0Y0 |  | ||||||
| u5YKEhpmfLZuy7f2wLKGI8WhDRYdaVhurdTCidmU5P44N+skaaGQH1IfFFrOYMotT932zNgQExve |  | ||||||
| OfTeT8dtBceO3TFlOyopY7UPxV+/fWyn3Y0xrFhJjZWFXhs12pKdRO9ObGSuyB8Xbd9JjMjDc6HQ |  | ||||||
| IcrKqAiVe8vyCEJPrGBWxZYqqtZt9RbmHabAvAAVdVUlJTvWshbMt0AYn40OmlchSKOePTyYIMQn |  | ||||||
| rb8yI8TsDCrRs4od7Jv3KOoPGWKboBqp2LN3FQvdO7EPshSsRSTXrSop2cSiiUGkG/bj2JqaQiHW |  | ||||||
| 4nv50mFcu28j30KQarAnEPhuzvwwGYQ975vx7+JwGXTjTIAzoYlhCArR5d0KkfauqJAVY6+FG5hD |  | ||||||
| OS6veqyCuSiTAQT/jKmlQtyxIBCoZV28HQvN6LuQvJFC4xjvibfYOZUdUXd9taTWJbOubiIVXmjG |  | ||||||
| W/fs9qpZcpr6pOe1U0udSf8BR7ef4yxyOskAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDYtMTRU |  | ||||||
| MTc6MDA6NDcrMDM6MDBfo1sRAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA2LTE0VDE3OjAwOjQ3 |  | ||||||
| KzAzOjAwLv7jrQAAAABJRU5ErkJggg==" /> |  | ||||||
| </svg> |  | ||||||
| Before Width: | Height: | Size: 1.5 KiB | 
|  | @ -33,11 +33,9 @@ | ||||||
|   "n8n": { |   "n8n": { | ||||||
|     "n8nNodesApiVersion": 1, |     "n8nNodesApiVersion": 1, | ||||||
|     "credentials": [ |     "credentials": [ | ||||||
|       "dist/credentials/HttpBinApi.credentials.js", |  | ||||||
|       "dist/credentials/S4DSApi.credentials.js" |       "dist/credentials/S4DSApi.credentials.js" | ||||||
|     ], |     ], | ||||||
|     "nodes": [ |     "nodes": [ | ||||||
|       "dist/nodes/HttpBin/HttpBin.node.js", |  | ||||||
|       "dist/nodes/S4DSAuth/S4DSAuth.node.js", |       "dist/nodes/S4DSAuth/S4DSAuth.node.js", | ||||||
|       "dist/nodes/S4DSExample/S4DSExample.node.js" |       "dist/nodes/S4DSExample/S4DSExample.node.js" | ||||||
|     ] |     ] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue