{"record":{"id":"99479fc0613347cb","repo":"FlowiseAI/Flowise","slug":"no-jira-host-provided","errorCode":null,"errorMessage":"No Jira host provided","messagePattern":"No Jira host provided","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/nodes/tools/Jira/Jira.ts","lineNumber":398,"sourceCode":"                name: 'userMaxResults',\n                type: 'number',\n                default: 50,\n                description: 'Maximum number of users to return',\n                show: {\n                    userActions: ['searchUsers']\n                },\n                additionalParams: true,\n                optional: true\n            }\n        ]\n    }\n\n    async init(nodeData: INodeData, _: string, options: ICommonObject): Promise<any> {\n        let credentialData = await getCredentialData(nodeData.credential ?? '', options)\n        const jiraHost = nodeData.inputs?.jiraHost as string\n\n        if (!jiraHost) {\n            throw new Error('No Jira host provided')\n        }\n\n        const bearerToken = getCredentialParam('bearerToken', credentialData, nodeData)\n        const username = getCredentialParam('username', credentialData, nodeData)\n        const accessToken = getCredentialParam('accessToken', credentialData, nodeData)\n\n        let authType: 'basic' | 'bearer'\n        if (bearerToken) {\n            authType = 'bearer'\n        } else if (username && accessToken) {\n            authType = 'basic'\n        } else {\n            throw new Error('Invalid credentials: provide either Bearer Token or Username + Access Token')\n        }\n\n        // Read SSL certificate from tool inputs if provided\n        let sslCertificate: string | undefined\n        const caFileBase64 = nodeData.inputs?.caFile as string","sourceCodeStart":380,"sourceCodeEnd":416,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/nodes/tools/Jira/Jira.ts#L380-L416","documentation":"Thrown by Jira.init when nodeData.inputs.jiraHost is falsy. The jiraHost is the base URL of the Jira instance (e.g. https://acme.atlassian.net for Cloud or https://jira.example.com for Server/DC) and is used to build all REST endpoints (.../rest/api/<version>/...). Without it, the request URL cannot be constructed, so init aborts before credential resolution.","triggerScenarios":"The Jira Host input field on the node is empty; the value is wired from a variable that resolves to undefined; the host was entered with a typo that whitespace-trims to empty. Unlike credentials, jiraHost lives in node inputs (not the credential), so a correct credential does not satisfy it.","commonSituations":"Configuring the Jira node with a credential but forgetting the Host input; a flow template that expects jiraHost as a $var but the variable isn't defined for this workspace; copy-paste that dropped the field.","solutions":["Set the Jira Host input to the full base URL (https://<tenant>.atlassian.net for Cloud, https://jira.<corp>.com for Server/DC) with no trailing slash.","If wiring from a variable, confirm the variable resolves at runtime (check $vars in the workspace).","Validate the URL shape before save — must include the scheme.","Distinguish from credentials: jiraHost is a plain node input, not stored in the credential record."],"exampleFix":"// before\nnodeData.inputs = { jiraHost: '' }\n// after\nnodeData.inputs = { jiraHost: 'https://acme.atlassian.net' }","handlingStrategy":"validation","validationCode":"function assertJiraHost(host: unknown): asserts host is string {\n  if (typeof host !== 'string' || !/^https?:\\/\\/.+/.test(host.trim())) {\n    throw new Error('jiraHost must be a full URL like https://acme.atlassian.net')\n  }\n}","typeGuard":"function isJiraHostUrl(s: unknown): s is string {\n  return typeof s === 'string' && /^https?:\\/\\/[\\w.-]+\\.(atlassian\\.net|[\\w.-]+)(:\\d+)?(\\/.*)?$/.test(s.trim())\n}","tryCatchPattern":null,"preventionTips":["Enter jiraHost as a full URL with scheme, no trailing slash.","jiraHost is a node input, not a credential field — don't confuse the two.","If wiring from $vars, ensure the variable is defined for the workspace.","Validate the URL shape before flow save."],"tags":["jira","config","validation","required-field","init"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}