import type { INodeTypeDescription } from 'n8n-workflow'; export const nodeDescription: INodeTypeDescription = { displayName: 'Obsidian API', name: 'obsidianApi', icon: 'file:obsidian.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"]}}', description: 'Run official Obsidian CLI commands through the Obsidian API Docker service', defaults: { name: 'Obsidian API', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'obsidianApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Daily Note', value: 'daily' }, { name: 'Note', value: 'note' }, { name: 'Property', value: 'property' }, { name: 'Raw Command', value: 'raw' }, { name: 'Search', value: 'search' }, { name: 'Vault', value: 'vault' }, ], default: 'note', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['note'] } }, options: [ { name: 'Append', value: 'append' }, { name: 'Create', value: 'create' }, { name: 'Delete', value: 'delete' }, { name: 'List Files', value: 'files' }, { name: 'Prepend', value: 'prepend' }, { name: 'Read', value: 'read' }, { name: 'Rename', value: 'rename' }, ], default: 'create', }, { displayName: 'Path', name: 'path', type: 'string', displayOptions: { show: { resource: ['note'], operation: ['append', 'create', 'delete', 'prepend', 'read', 'rename'] } }, default: '', placeholder: 'Inbox/Note.md', required: true, }, { displayName: 'Content', name: 'content', type: 'string', typeOptions: { rows: 8 }, displayOptions: { show: { resource: ['note'], operation: ['append', 'create', 'prepend'] } }, default: '', required: true, }, { displayName: 'Overwrite', name: 'overwrite', type: 'boolean', displayOptions: { show: { resource: ['note'], operation: ['create'] } }, default: false, }, { displayName: 'New Name', name: 'newName', type: 'string', displayOptions: { show: { resource: ['note'], operation: ['rename'] } }, default: '', required: true, }, { displayName: 'Folder', name: 'folder', type: 'string', displayOptions: { show: { resource: ['note'], operation: ['files'] } }, default: '', placeholder: 'Inbox', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['daily'] } }, options: [ { name: 'Append', value: 'dailyAppend' }, { name: 'Path', value: 'dailyPath' }, { name: 'Prepend', value: 'dailyPrepend' }, { name: 'Read', value: 'dailyRead' }, ], default: 'dailyAppend', }, { displayName: 'Content', name: 'dailyContent', type: 'string', typeOptions: { rows: 8 }, displayOptions: { show: { resource: ['daily'], operation: ['dailyAppend', 'dailyPrepend'] } }, default: '', required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['property'] } }, options: [ { name: 'List', value: 'properties' }, { name: 'Read', value: 'propertyRead' }, { name: 'Remove', value: 'propertyRemove' }, { name: 'Set', value: 'propertySet' }, ], default: 'propertySet', }, { displayName: 'Path', name: 'propertyPath', type: 'string', displayOptions: { show: { resource: ['property'], operation: ['propertyRead', 'propertyRemove', 'propertySet'] } }, default: '', placeholder: 'Inbox/Note.md', required: true, }, { displayName: 'Name', name: 'propertyName', type: 'string', displayOptions: { show: { resource: ['property'], operation: ['propertyRead', 'propertyRemove', 'propertySet', 'properties'] } }, default: '', placeholder: 'tags', description: 'Frontmatter/property name, e.g. tags, date, description', }, { displayName: 'Value', name: 'propertyValue', type: 'string', displayOptions: { show: { resource: ['property'], operation: ['propertySet'] } }, default: '', placeholder: 'kontext, feedback-browser-cli-tests', description: 'Value passed to the official CLI property:set command', required: true, }, { displayName: 'Type', name: 'propertyType', type: 'options', displayOptions: { show: { resource: ['property'], operation: ['propertySet'] } }, options: [ { name: 'Text', value: 'text' }, { name: 'List', value: 'list' }, { name: 'Number', value: 'number' }, { name: 'Checkbox', value: 'checkbox' }, { name: 'Date', value: 'date' }, { name: 'Date Time', value: 'datetime' }, ], default: 'text', description: 'Obsidian property type. Use List for tags and Date for date.', }, { displayName: 'Format', name: 'propertiesFormat', type: 'options', displayOptions: { show: { resource: ['property'], operation: ['properties'] } }, options: [ { name: 'YAML', value: 'yaml' }, { name: 'JSON', value: 'json' }, { name: 'TSV', value: 'tsv' }, ], default: 'yaml', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['search'] } }, options: [ { name: 'Search', value: 'search' }, { name: 'Search With Context', value: 'searchContext' }, ], default: 'search', }, { displayName: 'Query', name: 'query', type: 'string', displayOptions: { show: { resource: ['search'] } }, default: '', required: true, }, { displayName: 'Format', name: 'format', type: 'options', displayOptions: { show: { resource: ['search'] } }, options: [ { name: 'Text', value: 'text' }, { name: 'JSON', value: 'json' }, ], default: 'text', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['vault'] } }, options: [ { name: 'Info', value: 'vaultInfo' }, { name: 'List Vaults', value: 'vaults' }, ], default: 'vaultInfo', }, { displayName: 'Args JSON', name: 'rawArgs', type: 'json', displayOptions: { show: { resource: ['raw'] } }, default: '["version"]', description: 'Structured CLI args array. Example: ["create", "path=Inbox/Test.md", "content=Hello", "overwrite"]. Do not include shell strings.', required: true, }, { 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', }, ], }, ], };