diff --git a/packages/n8n-nodes-obsidian-api/README.md b/packages/n8n-nodes-obsidian-api/README.md index 9700606..88da506 100644 --- a/packages/n8n-nodes-obsidian-api/README.md +++ b/packages/n8n-nodes-obsidian-api/README.md @@ -34,7 +34,7 @@ Resources: Credential type: **Obsidian API** Fields: -- **Base URL**: e.g. `http://obsidian-api:8080` +- **Base URL**: URL of your Obsidian API service, e.g. `http://localhost:8080` - **API Token**: JWT created with `scripts/create_jwt.py` - **Default Vault**: optional, e.g. `work` diff --git a/packages/n8n-nodes-obsidian-api/credentials/ObsidianApi.credentials.ts b/packages/n8n-nodes-obsidian-api/credentials/ObsidianApi.credentials.ts index 5a0408e..bbba171 100644 --- a/packages/n8n-nodes-obsidian-api/credentials/ObsidianApi.credentials.ts +++ b/packages/n8n-nodes-obsidian-api/credentials/ObsidianApi.credentials.ts @@ -12,9 +12,9 @@ export class ObsidianApi implements ICredentialType { displayName: 'Base URL', name: 'baseUrl', type: 'string', - default: 'http://obsidian-api:8080', - placeholder: 'http://obsidian-api:8080', - description: 'Base URL of the Obsidian API Docker service', + default: '', + placeholder: 'http://localhost:8080', + description: 'Base URL of the Obsidian API service', required: true, }, { diff --git a/packages/n8n-nodes-obsidian-api/nodes/ObsidianApi/ObsidianApi.node.ts b/packages/n8n-nodes-obsidian-api/nodes/ObsidianApi/ObsidianApi.node.ts index 9e40417..0ec6fe1 100644 --- a/packages/n8n-nodes-obsidian-api/nodes/ObsidianApi/ObsidianApi.node.ts +++ b/packages/n8n-nodes-obsidian-api/nodes/ObsidianApi/ObsidianApi.node.ts @@ -29,14 +29,6 @@ export class ObsidianApi implements INodeType { }, ], properties: [ - { - displayName: 'Vault', - name: 'vault', - type: 'string', - default: '', - placeholder: 'work', - description: 'Optional vault name/path. Overrides the credential default vault. Sent as vault=.', - }, { displayName: 'Resource', name: 'resource', @@ -183,13 +175,6 @@ export class ObsidianApi implements INodeType { ], default: 'vaultInfo', }, - { - displayName: 'Verbose', - name: 'verbose', - type: 'boolean', - displayOptions: { show: { resource: ['vault'], operation: ['vaults'] } }, - default: true, - }, // Raw command { @@ -202,11 +187,35 @@ export class ObsidianApi implements INodeType { required: true, }, { - displayName: 'Timeout Seconds', - name: 'timeout', - type: 'number', - default: 60, - description: 'Command timeout in seconds', + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + options: [ + { + displayName: 'Timeout Seconds', + name: 'timeout', + type: 'number', + default: 60, + description: 'Command timeout in seconds', + }, + { + displayName: 'Vault', + name: 'vault', + type: 'string', + default: '', + placeholder: 'work', + description: 'Optional vault name/path. Overrides the credential default vault. Sent as vault=.', + }, + { + displayName: 'Verbose', + name: 'verbose', + type: 'boolean', + default: true, + description: 'Only used by the List Vaults operation', + }, + ], }, ], }; @@ -218,8 +227,9 @@ export class ObsidianApi implements INodeType { for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { const resource = this.getNodeParameter('resource', itemIndex) as string; const operation = this.getNodeParameter('operation', itemIndex) as string; - const vault = this.getNodeParameter('vault', itemIndex, '') as string; - const timeout = this.getNodeParameter('timeout', itemIndex, 60) as number; + const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {}) as Record; + const vault = String(additionalFields.vault || ''); + const timeout = Number(additionalFields.timeout ?? 60); let args: string[]; @@ -237,7 +247,7 @@ export class ObsidianApi implements INodeType { break; } case 'vault': { - args = buildVaultArgs(this, operation, itemIndex); + args = buildVaultArgs(this, operation, itemIndex, additionalFields); break; } case 'raw': { @@ -302,12 +312,14 @@ function buildSearchArgs(context: IExecuteFunctions, operation: string, itemInde ]); } -function buildVaultArgs(context: IExecuteFunctions, operation: string, itemIndex: number): string[] { +function buildVaultArgs(context: IExecuteFunctions, operation: string, itemIndex: number, additionalFields: Record): string[] { switch (operation) { case 'vaultInfo': return ['vault']; - case 'vaults': - return compactArgs(['vaults', kv('verbose', context.getNodeParameter('verbose', itemIndex) as boolean)]); + case 'vaults': { + const verbose = additionalFields.verbose === undefined ? true : Boolean(additionalFields.verbose); + return compactArgs(['vaults', kv('verbose', verbose)]); + } default: throw new NodeOperationError(context.getNode(), `Unsupported vault operation: ${operation}`, { itemIndex }); } diff --git a/packages/n8n-nodes-obsidian-api/package-lock.json b/packages/n8n-nodes-obsidian-api/package-lock.json index 540a384..f67379c 100644 --- a/packages/n8n-nodes-obsidian-api/package-lock.json +++ b/packages/n8n-nodes-obsidian-api/package-lock.json @@ -1,12 +1,12 @@ { "name": "n8n-nodes-obsidian-cli-api", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "n8n-nodes-obsidian-cli-api", - "version": "0.1.0", + "version": "0.1.1", "license": "MIT", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/n8n-nodes-obsidian-api/package.json b/packages/n8n-nodes-obsidian-api/package.json index 7b3c6c6..001b410 100644 --- a/packages/n8n-nodes-obsidian-api/package.json +++ b/packages/n8n-nodes-obsidian-api/package.json @@ -1,6 +1,6 @@ { "name": "n8n-nodes-obsidian-cli-api", - "version": "0.1.0", + "version": "0.1.1", "description": "n8n community nodes for the Obsidian API Docker service backed by the official Obsidian CLI.", "license": "MIT", "homepage": "https://git.yiprawr.dev/Docker/obsidian-api",